mcpField
L
Logic Pro MCP

Logic Pro MCP

ローカル
logicpromcp.comメディア・デザイン160今日更新

Logic Pro MCP について

Logic Pro MCPは、音楽制作者やエージェントがLogic Proを操作するためのローカルサーバーです。複数の制御経路を統合し、ライブ状態の読み戻し、明示的な確認、操作結果の検証を備えています。

主な機能

  1. 01トランスポート、トラック、ミキサーの制御
  2. 02MIDIの作成とインポート
  3. 03プロジェクト状態のライブ確認
  4. 04検証付きのプラグイン操作
  5. 05リスクの高い操作での明示的な確認

活用シーン

  1. 01エージェントの指示に基づくセッション作成
  2. 02MIDIパートの作成と再生制御
  3. 03編集後のミキサーや状態の確認

MCP 対応

Logic Proの制御ツールと読み取り専用リソースをMCPクライアントに公開します。クライアントは操作を実行してライブ状態を読み取り、結果を確認済み、不確実、失敗として受け取れます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Claude、Cursor、AI エージェント向け Logic Pro MCP サーバー

MCP Toplist

Claude Code、Claude Desktop、Cursor、Codex、VS Code、その他の MCP クライアントから Logic Pro を操作し、AI による音楽制作を可能にするローカルの Model Context Protocol(MCP)サーバーです。トラックの作成、MIDI の作成、トランスポートやミキサーの状態の操作、プロジェクトデータのリアルタイム確認、結果の検証ができます。

インストール · デモを見る · 操作できる内容

🏆 Anthropic の Claude for Open Source プログラムに選出

Logic Pro MCP は、Anthropic の Claude for Open Source プログラムに正式に選出されました。これは、このプロジェクトが支援に値するオープンソースの取り組みであると、Claude の開発元から認められたものです。このサーバーは Claude を使って、Claude 搭載エージェント向けに構築され、現在はプログラムの正式な支援を受けています。

Logic Pro MCP サーバー

Claude for Open Source — 選出 README の画像 README の画像 README の画像 CI README の画像 README の画像

Logic Pro 12.3 の実際の画面キャプチャ:MCP がライブで作曲した 82 BPM、ニ短調のローファイループ。コード、ベース、リード、ドラマーのトラックに MIDI リージョンがあり、ピアノロールを開いた状態で、再生ヘッドとメーターが動くリアルタイム再生を表示

MCP が Logic Pro 12.3 でライブ作曲した 82 BPM、ニ短調のローファイループ。テンポ、3 つの MIDI パート、ドラマー、再生のすべてをプロンプトから操作しています。
▶ 36 秒のデモを見る(音声あり)


Logic Pro MCP サーバーは、Claude、Cursor、Codex、その他の MCP クライアントに、壊れやすいキーボードマクロを使わずに Logic Pro を操作するための構造化された手段を提供します。Logic Pro には、エージェントによる作曲、セッションのセットアップ、ミキサー操作、プロジェクトのリアルタイム読み戻しに対応するファーストパーティ API が付属していません。Logic Pro MCP は、7 つの macOS ネイティブ制御チャネル(CoreMIDI、Accessibility、AppleScript、CGEvent、MCU、Scripter、MIDI Key Commands — Sources/LogicProMCP/Channels/Channel.swift)を 1 つの MCP インターフェースの背後に統合し、リスクの高いすべての操作を、明示的な状態、確認、検証の契約でラップすることで、その不足を補います。

その結果は「プロンプトを使った画面自動化」ではありません。DAW エージェント向けに構造化されたサーバーです。ツールは状態を変更し、リソースは読み取り、エビデンスにはラベルが付けられ、確かでない結果は成功と報告せず、不確かなまま扱われます。

You: "Make a 4-bar techno loop in A minor at 140 BPM"

MCP client → logic_tracks.record_sequence {
  bar: 1, tempo: 140,
  notes: "45,0,95;57,107,95;45,214,95;..."
}
MCP client → logic_tracks.set_instrument {
  index: 0, path: "Electronic Drums/Roland TR-909"
}

Logic Pro MCP: region imported, instrument routed, readback exposed through resources.

概要

以下の数値は、記載のコマンドで現在のソースツリーから取得したものです。取得後に再実行すると、同じ結果を確認できます。

項目現在のソースツリーコマンド
MCP ツール10 個のツール — logic_transport、logic_tracks、logic_mixer、logic_midi、logic_edit、logic_navigate、logic_project、logic_audio、logic_system、logic_pluginsgrep -c '^ toolWithOutputSchema' Sources/LogicProMCP/Server/LogicProServer.swift
読み取りリソース19 個の静的リソース — health、transport、すでに開いている Tempo List、tracks、mixer、markers、project info/audit/cleanup-plan、MIDI ports、MCU state、library inventory、stock plugins/census/capabilities、stock instruments、Session Players、workflow skills/schemaawk '/private static let baseResources/,/^\]/' Sources/LogicProMCP/Resources/ResourceProvider.swift | grep -c 'uri:'
リソーステンプレート12 個のテンプレート — operation catalog、track、region、mixer-strip、stock plugin detail/search、stock instrument detail/search、Session Player detail、session-plan dry run、workflow detail/searchawk '/private static let baseTemplates/,/^\]/' Sources/LogicProMCP/Resources/ResourceProvider.swift | grep -c 'uriTemplate:'
制御チャネル7 — CoreMIDI、Accessibility、CGEvent、AppleScript、MCU、MIDIKeyCommands、Scriptergrep -n 'case .* = "' Sources/LogicProMCP/Channels/Channel.swift
Logic が対応するロケール10 — de-DE en-US es-ES fr-FR it-IT ja-JP ko-KR pt-BR zh-CN zh-TWpython3 -c "import json; print(json.load(open('docs/locale/ui-labels.json'))['supported_locales'])"
対応する Logic Pro最新の Logic Pro が優先されます — デスクトップ版 Logic Pro(com.apple.logic10、/Applications/Logic Pro.app)。Apple Creator Studio の Logic Pro Creator Studio(com.apple.mobilelogic、/Applications/Logic Pro Creator Studio.app)は認識されますが、サポート対象ではありません。リリース認定マトリックスが対象とするのはデスクトップ版 Logic Pro のみ(shipVariants = [.desktop])で、このリリースがサポートするのもこれだけです。LOGIC_PRO_BUNDLE_ID を設定しない場合、サーバーは Creator Studio を選択することがあります。前面にある Logic を対象にし、該当しない場合は起動中のもの、次にインストール済みのものを対象にします。いずれの場合もデスクトップ版が優先されます。そのため、Creator Studio が前面にある場合、または起動中の Logic が Creator Studio だけの場合は、認定の根拠がないまま Creator Studio が対象になります。デスクトップ版 Logic Pro を使い続けるには、LOGIC_PRO_BUNDLE_ID=com.apple.logic10 を設定してください。現在、Logic Pro 12.3 を検証対象としています(macOS 15.6 以降)。12.0.1 以上の旧バージョンはベストエフォートで対応します
リリース状況現在の安定版:v3.18.0 — v3.18.0

このプロジェクトが Claude、Cursor、Codex、または MCP クライアントを使った音楽制作に役立ったら、リポジトリにスターを付けてください。より多くの Logic Pro ユーザーやメンテナーにプロジェクトを届ける助けになります。

貢献したい場合は、貢献ガイドと未解決の issueから始めてください。多くのドキュメント、例、検証テスト、CLI メッセージの改善には、Logic Pro は必要ありません。

開発の背景

Logic Pro の自動化は、主に次の 3 つの落とし穴にはまりがちです。

  1. プロンプトだけに頼るレシピは、実際のツールの機能範囲から外れていきます。
  2. キーボードマクロによる自動化は、誤った対象をクリックしても、成功したように見えることがあります。
  3. 単一チャネル制御は、Logic に書き込めても、Logic が実際に行ったことを確実に読み取れません。

Logic Pro MCP は、これとは異なる仕組みを採用しています。各操作を利用可能な最適なチャネルに振り分け、MCP リソースを通じてライブ状態を公開し、呼び出し元に「確認済み」「不確実」「失敗」の 3 つの結果を処理させます。

制御できる項目

領域エージェントが実行できる操作安全性/読み戻しのモデル
トランスポート再生、停止、録音、位置指定、サイクル、メトロノーム、テンポCoreMIDI/AX ルーティングと、ライブの logic://transport/state 読み戻し
トラック作成、削除、複製、選択、名前変更、ミュート、ソロ、録音待機、楽器の設定変更対象には明示的なインデックス/名前が必要です。選択状態が不確かな場合は、書き込み前にフェイルクローズします
MIDI 作曲SMF のサーバー側生成、MIDI のインポート、ノート/CC/MMC の送信、仮想ポートの作成.mid のインポート先はサーバー管理の一時ファイルに限定され、ライブトラックを作成する必要があります
ミキサー音量、パン、プラグインのスナップショット、ガード付きの標準プラグイン挿入、MCU 主導のフェーダーバンク切り替え音量/パンは AX 書き込みと同一サーフェスでの読み戻しを行います。MCU 書き込みは LCD 上段の再描画で検証します。使用中のプラグインスロットは置き換えを拒否します
ライブラリLogic の楽器ライブラリのスキャンと、パスによるパッチの読み込みディスク/AX インベントリはキャッシュされます。ディスクスキャンはユーザー領域/アプリバンドル内の .patch 候補の重複を除去し、resolve_path は set_instrument の前に種類/ソース/読み込み可否を分類します
ナビゲーション小節、マーカー、ズーム、表示切り替えマーカー移動では指定した対象に忠実に従います。キャッシュにない対象が見つからない場合は、「次のマーカー」へ移動せず、失敗を返します
プロジェクトのライフサイクル新規作成、開く、保存、別名で保存、閉じる、バウンス、書き出し計画、終了、キャッシュのみを使ったセッションの構成状況レポート破壊的操作には確認が必要です。書き出しのドライラン計画では Logic を開いたり、成果物を書き込んだりしません

エージェント向けのサーフェス

ツールは操作とローカル成果物の確認に使います。 公開されている書き込みサーフェスは意図的に絞られています:logic_transport、logic_tracks、logic_mixer、logic_plugins、logic_midi、logic_edit、logic_navigate、logic_project、logic_system。logic_audio は読み取り専用で、Logic が書き出したファイルを検証します。

リソースは状態の確認に使います。 クライアントは、ポーリングのためにツール呼び出しを繰り返すのではなく、logic://transport/state、logic://tracks、logic://mixer、logic://project/info、logic://project/audit、logic://project/cleanup-plan、logic://midi/ports および関連リソースを読み取る必要があります。

証拠と主張は分けてあります。 README は、コマンドの成功が Logic の状態確認を意味するかのように示すのではなく、リリースの証拠、現在の main ブランチでの検証、ライブメディアの成果物を参照しています。

信頼モデル

  • 正直な契約エンベロープ:変更操作は、確認済みの State A、理由を伴う不確実な State B、またはエラーを伴う失敗の State C を返します。
  • 検証済みのプラグイン適用結果:logic_plugins.* は HC v2(hc_schema: 2)を使用し、プロジェクト ID、対象トラック、物理インサートスロット、プラグイン ID、読み戻しのすべてが一致した場合にのみ State A を返します。
  • フェイルクローズする対象指定:危険を伴うミキサー、マーカー、トラック、MIDI インポート、プラグインの操作には、明示的な対象指定と検証が必要です。
  • 確認レベル:破壊的操作/プロジェクト操作とプラグイン挿入のフローでは、実行前に明示的な確認メタデータが必要です。
  • 来歴ラベル:読み取りサーフェスでは、クライアントが推測せずに済むよう、ソース、鮮度、証拠のラベルを公開します。
  • インストーラーの強化:Homebrew は SHA256 を固定します。シェルインストーラーは、同一オリジンの来歴を明示的に許可しない限り、ハッシュとチームの固定情報なしでは実行を拒否します。
  • リリースに関する誠実さ:現在の安定版系列は v3.18.0 です。README の主張は、出荷済みの成果物、リリースツリーのテスト、または明示的にリンクされたライブの証拠に基づいています。

ロケール

Logic Pro には UI ロケールが 10 種類あり、このサーバーでは en/ko だけでなく、10 種類すべてをデフォルトの対象範囲として扱います。対象は de-DE、en-US、es-ES、fr-FR、it-IT、ja-JP、ko-KR、pt-BR、zh-CN、zh-TW です。メニュー項目、ヘッダーラベル、ダイアログボタンなどの UI 文字列の照合情報は docs/locale/ui-labels.json にあり、ロケールに依存するすべてのロケーターは、この正規インデックスを基にしています。

203 件の正規ラベルは、それぞれロケールごとの coverage を持ちます。measured は実行中の Logic ウィンドウから読み取り、ホスト、日付、AX のロール/属性とともに記録されたもの、derived は実際のウィンドウから読み取ったものではなく、Apple 独自の .strings テーブルから Scripts/derive_label_variants.py で算出されたもの、unmeasured は未測定のもの、retired は廃止されたものです(該当するラベルは headerPanHint の 1 件で、sliderPanHint に置き換えられ、理由とともに正規インデックスに残されています)。ロケールごとの測定済み件数は、正規ラベル 203 件のうち以下のとおりです(python3 -c "import json,collections; d=json.load(open('docs/locale/ui-labels.json')); c=collections.Counter(); [c.update([(l,v) for l,v in e['coverage'].items() if v=='measured']) for e in d['labels'].values()]; print(c)")。

ロケール測定済み算出済み未測定廃止
en-US4515611
ko-KR5014751
ja-JP37154111
de-DE44144141
es-ES7177181
fr-FR6175211
it-IT6175211
pt-BR5178191
zh-CN7169261
zh-TW6166301

derived のラベルは、そのロケールで実行中の Logic から読み取ったものではありません。該当するキーに対する Apple 独自の文字列であり、有力な手掛かりではありますが、実環境での観測ではありません。ロードマップ(docs/roadmap/README.md)では、ミキサーのルーティンググラフ、MCU のバンク切り替え、録音アームのキーコマンド設定など、機能ごとの実環境ロケール検証を追跡しています。これらは各言語の Logic セッションで実行されます。

クイックスタート

前提条件:MCP サーバーには macOS 14 以降、Logic Pro(最新リリースを優先します。現在は 12.3 で、Apple によると macOS 15.6 以降が必要です。12.0.1 を下限とする古いバージョンはベストエフォート対応です)、および stdio サーバーを起動できる MCP クライアントが必要です。公開されている GitHub Actions/Homebrew のアセットはユニバーサル(arm64 + x86_64)で、Xcode は不要です。バウンス/書き出しでは、バンドルされているネイティブの CGEvent ヘルパーを使用するため、サードパーティ製のクリック用バイナリは必要ありません。

Logic Pro のバージョン方針。 Logic Pro MCP は、最新の Logic Pro リリースを最優先の対象として追跡し、そのバージョンに対して検証を行います。Apple が新しい Logic Pro バージョンをリリースした場合、そのサポートが最優先です。リリースごとにアクセシビリティ/UI ツリーが変わるため、修正は最新バージョンに最初に反映されます。下限の 12.0.1 より新しい旧バージョンはベストエフォート対応のため、UI の変更に伴い同等の機能が失われる場合があります。

パッケージマニフェストでは、互換性のため Swift tools 6.0 を使用しています。現在のソース検証では、CI で Xcode 16.4/Swift 6.2 を使用しています。

現在の安定版系列は v3.18.0 です(2026-09-28 UTC にリリース)。v3.17.0 以降に追加、変更、修正された内容と、明記されている制限事項は、リリースごとの詳細を CHANGELOG.md で確認できます。この README ではリリース履歴を繰り返しません。

1. インストール
brew tap MongLong0214/logic-pro-mcp https://github.com/MongLong0214/logic-pro-mcp
brew trust monglong0214/logic-pro-mcp   # Homebrew 6.0+ requires trusting third-party taps
brew install logic-pro-mcp

Homebrew のフォーミュラでは、リリースの tarball URL と SHA256 の両方が固定されています。Homebrew 自体は、独自の署名チェーンを持つ信頼できる配布チャネルです。本番環境へのインストールには、この強化された手順を使用してください。(Homebrew 6.0 より前のバージョンには brew trust の手順がないため、スキップしてください。)

ソースツリーで開発する場合は、ローカルでビルドします。

git clone https://github.com/MongLong0214/logic-pro-mcp.git
cd logic-pro-mcp
swift build -c release

既存のインストールをアップグレードするには、Homebrew でインストールした場合は brew update && brew upgrade logic-pro-mcp を実行し、ソースからビルドした場合は git pull && swift build -c release を実行します。ピン留めしたシェルインストーラーでインストールした場合は、新しいリリースのピンを指定してインストーラーを再実行します(下記を参照)。リリースバイナリはアドホック署名(Apple Developer ID なし。詳細は SECURITY.md を参照)のため、macOS では新しいビルドはそれぞれ異なる署名済み ID として扱われます。新しくビルドまたは再インストールしたバイナリには、「アクセシビリティ」と「オートメーション」の許可は引き継がれません。また、長期間が空いた場合だけでなく、アップグレードのたびにランチャーアプリの TCC 承認を再度行うことが想定されます(古い TCC エントリーの削除と許可の再付与については docs/TROUBLESHOOTING.md を参照してください)。

2. MCP クライアントへの登録

Claude Code:

claude mcp add --scope user logic-pro -- LogicProMCP

汎用 MCP クライアント設定(Claude Desktop、Cursor、VS Code、Codex CLI、Codex Desktop、および stdio MCP サーバーのエントリーを受け付けるその他すべてのクライアント。それぞれのクライアント固有の設定ファイルの場所とキー名は、ここではなく各クライアントのドキュメントを参照してください):

{
  "mcpServers": {
    "logic-pro": {
      "command": "LogicProMCP"
    }
  }
}

ソースからビルドした場合は、コマンドのパスを .build/release/LogicProMCP に設定してください。

3. Logic Pro のセットアップを完了する

ローカルチェックを実行します。

LogicProMCP --check-permissions

次に、docs/SETUP.md に記載されている Logic 側のセットアップ手順を 2 つ完了します。

  • LogicProMCP-MCU-Internal MCU コントロールサーフェスを登録します。
  • プラグインパラメーターへの書き込みが必要な場合は、同梱の Scripter インサートを追加します。

Logic 12.2 以降では、従来の Key Commands plist は自動インポートされません。同梱のプリセットは、Manual MIDI Learn の参照用として配置されています。

4. エージェントからテストする

クライアントに次のように依頼します。

Logic Pro MCP のヘルス状態を確認し、準備完了のチャンネルをすべて表示してください。

期待される結果:セットアップをすべて完了していれば 7 チャンネルすべてが ready、Key Commands と Scripter を意図的にスキップした場合は 5 チャンネルが ready です。

ピン留めしたシェルインストーラー

インストーラーはフェイルクローズ方式です。LOGIC_PRO_MCP_SHA256 と LOGIC_PRO_MCP_TEAM_ID の環境変数に明示的なピンが設定されていない場合、実行を拒否します。ダウンロードした LogicProMCP-macOS-universal.tar.gz アーカイブを検証するため、リリースの SHA256SUMS.txt にある該当アーカイブのエントリーから SHA をコピーしてください。

curl -fsSL https://raw.githubusercontent.com/MongLong0214/logic-pro-mcp/v3.18.0/Scripts/install.sh -o install.sh
# inspect install.sh, then:
LOGIC_PRO_MCP_SHA256=<paste LogicProMCP-macOS-universal.tar.gz SHA256SUMS entry> \
LOGIC_PRO_MCP_TEAM_ID=<paste team_id from RELEASE-METADATA.json> \
bash install.sh

ハッシュと Team ID をバイナリと同じリリースから取得する、同一オリジンの来歴を承知のうえで受け入れる場合は、明示的にオプトインしてください。

LOGIC_PRO_MCP_ALLOW_SAME_ORIGIN=1 \
bash <(curl -fsSL https://raw.githubusercontent.com/MongLong0214/logic-pro-mcp/v3.18.0/Scripts/install.sh)

信頼レベルと脅威モデルについては、SECURITY.md §Installer trust model を参照してください。

権限

システム設定 -> プライバシーとセキュリティを開きます。

  1. アクセシビリティ:LogicProMCP を起動するアプリ(Claude Code、Terminal、Cursor、Codex、または Claude Desktop)を有効にします。
  2. オートメーション:そのアプリがLogic Proと、個別にシステムイベントを制御できるよう許可します。macOS ではこの2つは別々の許可として扱われ、Logic Pro に許可を与えてもシステムイベントへの許可にはなりません。

Apple Creator Studio版 Logic Pro(com.apple.mobilelogic)を使用する場合は、デスクトップ版 Logic Pro(com.apple.logic10)とは別にオートメーションを許可します。macOS では、選択画面によってはどちらも「Logic Pro」と表示されますが、別々のアプリとして扱われます。

--check-permissions と LogicProMCP doctor は、各許可の状態を3値(granted/not_granted/not_verifiable、単独の Bool 値ではありません)で報告し、アクセシビリティ、オートメーション → Logic Pro、オートメーション → システムイベント、PostEvent(CGEvent によるバウンス/クリックのフォールバックに必要な入力監視)を確認します。

LogicProMCP --check-permissions
LogicProMCP doctor

リリースバイナリはアドホック署名されているため、新しいビルドや再インストールのたびに、macOS では新しい署名 ID として扱われます。初回インストール時だけでなく、アップグレード後もアクセシビリティ/オートメーションの許可を再度与える必要があると考えてください。再インストール後に権限の状態がおかしい場合は、システム設定で古い TCC エントリを削除し、実際に起動に使用するアプリに再度許可を与えてください(docs/TROUBLESHOOTING.md)。

Logic Pro のバリアントを強制する
LOGIC_PRO_BUNDLE_ID=com.apple.logic10 LogicProMCP

有効な値は com.apple.logic10(デスクトップ版)と com.apple.mobilelogic(Creator Studio)です。このリリースで適格性が確認されているのはデスクトップ版 Logic Pro のみです。com.apple.mobilelogic を強制すると、サーバーは Creator Studio を指すようになりますが、適格性を裏付ける証拠はありません。また、Creator Studio のみがインストールされているマシンでは、LogicProMCP doctor は理由 unshipped_variant_only で logic.installation に失敗します。

LogicProMCP をライブラリとして使用する

このパッケージは、LogicProMCP ターゲットを LogicProMCPKit という名前のライブラリプロダクトとしても公開しています(v3.17.0 以降)。これにより、Swift アプリケーションはサーバーを別個の stdio プロセスとして起動するのではなく、サーバーと同じコードをリンクできます。

公開 API は意図的に小規模に保たれています。Accessibility リーダー(AXLogicProElements、AXHelpers、AccessibilityChannel)、各チャネル、状態キャッシュ、ディスパッチャーを含むモジュールのほぼすべてが internal であり、ライブラリ経由ではアクセスできません。公開されているものは次のとおりです。

  • PluginInspector(Accessibility/PluginInspector.swift 内):プラグインウィンドウの設定メニューを調査するためのインスペクターです。静的なエントリーポイントは enumerateMenuTree、parsePath、encodePath、resolveMenuPath、selectMenuPath、decodeAUVersion、findPluginWindow、identifyPlugin、openPluginWindow、closePluginWindow です。ウィンドウやメニューにアクセスするすべてのエントリーポイントでは、呼び出し元から PluginPresetProbe またはクロージャーで構成される PluginWindowRuntime を渡す必要があります。モジュールには公開された本番用ランタイムが含まれていないため、これらの機能だけで Logic にアクセスすることはありません。
  • これらのエントリーポイントで使用するデータ型:PluginPresetNodeKind、PluginPresetNode、PluginPresetCache、PluginPresetInventory、MenuHop、PluginMenuItemInfo、ScannerWindowRecord、PluginPresetProbe、PluginWindowRuntime、PluginError、AXUIElementSendable、および定数 maxPluginMenuDepth。
  • AXPluginInstanceIdentity(Accessibility/AXPluginInstanceIdentity.swift 内、#972):プラグインホストの読み取り専用調査機能です。census(pluginName:identifierPrefix:) は、プラグイン名が挿入スロットに含まれる Mixer ストリップ(序数、名前、スロット位置)と、開いているプラグインエディターウィンドウ(タイトル、および指定されたプレフィックス以下で最初に見つかった kAXIdentifier)の AXSnapshot を返し、見つかった内容を示す Diagnostics も返します。アクションは実行しません。次の 3 つの結果を区別できます。注記付きの空のスナップショット、ストリップの読み取りが部分的な状態(stripsReadWhole が false のため、序数は信頼できません)、エディターウィンドウの読み取り失敗です。エディターウィンドウの読み取りに失敗した場合、ウィンドウ数 0 を返す代わりに CensusError.windowsReadFailed をスローします。#972 の測定は、Mixer をメインウィンドウにドッキングした Logic Pro 12.3.1 で行われました(X)。
  • Library インベントリのデータモデル(Accessibility/LibraryAccessor.swift 内):LibraryNodeKind、LibraryNode、LibraryRoot、および TreeProbe。パッチをスキャンして選択する LibraryAccessor 列挙型は internal のため、そのデータモデルのみアクセスできます。
依存関係の設定
// Package.swift
dependencies: [
    .package(url: "https://github.com/MongLong0214/logic-pro-mcp", from: "3.17.0"),
],
targets: [
    .target(
        name: "YourTarget",
        dependencies: [.product(name: "LogicProMCPKit", package: "logic-pro-mcp")]
    ),
]
import LogicProMCP

プロダクト名は LogicProMCPKit で、インポートするモジュールは LogicProMCP です。from: "3.17.0" はこのプロダクトが確実に利用できる最小バージョンです。それ以前のタグはすべて、このプロダクトが追加される前のものです。

セットアップ診断

エージェントが Logic Pro を確実に操作できるかどうかは、主に権限と環境の問題です。TCC の許可、適切な Logic のバージョン、開いている書類、登録済みのコントロールサーフェス、操作を妨げるモーダルダイアログがないことが重要です。LogicProMCP doctor は、まさにこのために作られた、意図を認識する準備状況診断プラットフォームです。「インストール済みかどうか」を真偽値で確認するだけではなく、どの機能が利用可能で、どれがブロックされているのか、その理由と次に行うべきことを示す診断であり、実際に確認できなかった項目を決して緑色で表示しません。

LogicProMCP doctor                 # human-readable report, color when a TTY
LogicProMCP doctor --json          # stable machine contract (schema logic_pro_mcp_doctor.v4)
LogicProMCP doctor --strict        # exit code encodes overall status (CI gate)
LogicProMCP doctor --profile core --client claude-desktop
LogicProMCP doctor --check-updates # opt-in: also checks for a newer release

意図を認識するプロファイル。 使用しないチェックまで強制されることはありません。--profile で、Logic の実際の操作方法に合わせて必須チェックを絞り込めます。core(トランスポート/トラック/AX)、mixer、keycmd、legacy-scripter、または full を指定できます。--client(claude-code、claude-desktop、cursor、vscode、terminal、custom)を指定すると、そのホストに必要な登録チェックが追加されます。全体のステータスは、選択したプロファイルの必須チェックを対象とします。そのため、MCU のみを使うワークフローが、使用することのない Scripter の不足によって不健全と判定されることはありません。

チェックの合否だけでなく、機能の準備状況を表示。 各チェックは、それが利用可否を左右する機能(track_management、midi_import、mixer_ax、mixer_mcu、keycmd_only_ops、verified_plugin_applyback、project_lifecycle、…)に対応付けられています。レポートでは、*「MIDI の読み込みは利用可能です。検証済みプラグインの反映は PostEvent によってブロックされています」*のように、エージェント(またはオペレーター)がそのまま対応に移れる形で示されます。

原因の連鎖 — fix_plan と blocked_by。 失敗は fix_plan(次に行うアクションを、ブロックを解消する効果が高い順に並べたもの)に従って順序付けられ、後続の各チェックには、それをブロックしている上流のチェックが blocked_by として記載されます。これにより、症状ではなく根本原因を修正できます。headline には、次に行うべき単一のアクションが示されます。

正確さを何より重視します。 実行できなかったチェック(機能の不足、読み取り不能な TCC データベースなど)は、理由を添えて明示的に skipped と報告され、合格に暗黙的に含められることはありません。意図的なスキップ(--skip-channel <MIDIKeyCommands|Scripter>。必要に応じて --skip-note も指定します。たとえば、意図的に Scripter を登録していない場合)は記録され、準備状況の判定から除外されますが、合格を偽装することはありません。TCC の検出結果は、サービス/プリンシパル/状態の要約に限って表示され、レポートにローカルのパスがそのまま出力されることはありません。

厳格な終了コード(CI/エージェントによる判定用の --strict):0 ok · 1 failed · 2 manual_action_required · 3 degraded。コード 2/3 は状態コードであり、使用方法のエラーではありません。また、sysexits.h の範囲より小さい値です。

セットアップ中の環境で実行した、実際の(機密情報を伏せた)例:

{
  "schema": "logic_pro_mcp_doctor.v4",
  "doctor_profile": "core",
  "status": "failed",
  "headline": "Next action [permissions.accessibility]: Accessibility permission is not granted",
  "fix_plan": ["permissions.accessibility", "permissions.post_event_access", "install.binary_inventory"],
  "summary": { "total": 26, "passed": 15, "warnings": 1, "failed": 2, "skipped": 8, "manual": 0, "duration_ms": 333 },
  "checks": [ { "id": "binary.path", "status": "pass", "category": "installation", "severity": "info" } /* … */ ]
}

同じコマンドをターミナルで実行すると、チェックごとの修正方法へのリンクを含む、グループ別・色分け表示のレポートが出力されます。docs/SETUP.md をご覧ください。すべてのフラグのリファレンスと各チェックの修正方法は docs/SETUP.md にあります。--json の出力バイト列は安定した仕様であり、独自のオンボーディング自動化で検証できます。

アーキテクチャの概要

MCP クライアントが Swift の stdio サーバーを起動します。ディスパッチャーがツールのパラメーターを検証し、ChannelRouter が利用可能な macOS チャネルの中から最も強力なものを選択します。リソースはキャッシュ済みまたはライブの状態を公開し、リスクの高い書き込みは、明示的に confirmed/uncertain/failed を示す結果を返します。中核となるチャネルは MCU、アクセシビリティ、AppleScript、CoreMIDI、CGEvent、Scripter、MIDI キーコマンドです。

ドキュメント

ドキュメント対象読者目的
セットアップガイドエンドユーザーインストール、MCP 登録、Logic Pro との連携、doctor アンカー
API リファレンスエンドユーザー、MCP クライアント10 個のツール、19 個のリソース、12 個のテンプレート、Honest Contract、検証済みの適用反映
トラブルシューティングエンドユーザーよくある問題と解決方法
セキュリティポリシーセキュリティレビュー担当者脅威モデル、報告方法、セキュリティ強化
変更履歴すべてのユーザーリリースごとの変更
コントリビューションコントリビューター開発環境のセットアップ、対象を限定した PR ワークフロー、PR 検証

公開ドキュメントのツリーは、セットアップ、API、トラブルシューティング、README のメディア、および現在進行中またはリリース済みのユーザー向け修正を説明する公開 issue の PRD/チケットに意図的に限定しています。過去のリリースノート、内部 PRD、非公開のチケットボード、スパイクのメモ、ローカルのライブエビデンス作業ファイルは docs/ の外に保管しています。公開されているリリース履歴は、CHANGELOG.md、GitHub Releases、マージ済み PR、issue の履歴に記載しています。

検証

ゲート確認内容エビデンス
CI(push/PR ごと)決定的な全テストスイート、リリースビルド、リポジトリーガード上記の Actions バッジは、現在の main の先端を反映しています
リリースビルドswift build -c releaseCI とリリースワークフローで実行されます
ライブ E2E実際に動作中の Logic Pro セッションに対する登録済み操作と、独立した読み戻しリリースごとのエビデンスと日付入りの観測記録は docs/observations/ にあり、関連する CHANGELOG の項目からリンクされています。すべてのコミットで実行されるわけではありません
README メディアLogic Pro の実際の画面収録から作成した素材docs/media/ で公開しています

この README には、テスト合格数を固定して記載していません。テストスイートの規模はリリースごとに変わるため、ここに数を記載すると次のリリース前に古くなってしまいます。現在の合格/不合格の状態は、ローカルで swift test --no-parallel を実行するか、CI バッジを確認してください。どのロケールを使用し、どの Logic のビルドで、何を測定し、何を測定していないかといった機能ごとのライブエビデンスに関する記述は、ここではなく、裏付けとなる変更の横にある CHANGELOG.md に記載しています。

ライブ E2E はデフォルトでリリースバイナリを使用します。プロトコル/セキュリティの検証はどのホストでも実行されます。Logic Pro の実際のセッションが認識されない場合、Logic/CoreMIDI に依存するチェックはスキップされます。

重要な API コントラクト

  • 誠実なコントラクトエンベロープ — 変更を伴うすべての操作は、State A(確定)、reason を伴う State B(不確定)、または error を伴う State C(ハード失敗)を返します。docs/API.md を参照してください。
  • HC v2 プラグインの適用結果 — logic_plugins.get_inventory、set_param_verified、insert_verified は state と hc_schema: 2 を追加します。State C には必ず verified:false、write_attempted、再試行の安全性、および該当する場合はターゲットの識別情報が含まれます。
  • フェイルクローズの変更ターゲット — ミキサーフェーダー、プラグインパラメーター、マーカーの削除/名前変更、トラックの削除/複製、MIDI インポートでは、明示的なターゲットパラメーターが必要です。
  • 正確なスロットへのプラグイン挿入 — logic_plugins.insert_verified は get_inventory が返す物理的なインサートインデックスをターゲットにし、ポップアップがそのスロットに固定されていることを検証し、書き込み後のインベントリ差分によってのみ成功を確認します。
  • ターゲットに忠実なナビゲーション — goto_marker は、キャッシュがない状態では次のマーカーへ進まず、element_not_found を返します。
  • 1 始まりの MIDI チャンネル — send_note、send_cc、record_sequence の ch 値は、Logic の UI に合わせて 1~16 を受け付けます。
  • 制限付きの生 SysEx — send_sysex は、CoreMIDI にルーティングする前に 1024 バイトを超えるペイロードを拒否します。
  • 可聴バウンスのガードレール — record_sequence は、未検証の GM Device/External MIDI インポートを拒否します。logic://project/audit は、MIDI リージョンを含む External MIDI トラックをエクスポートのブロッカーとして示し、logic_project.bounce はバウンスダイアログを開く前にそれらのブロッカーを拒否します。
  • 監査フェーズの分離 — 監査ログでは、拒否された呼び出し、確認プロンプト、実行されたルート呼び出しを区別します。
  • 検証済みのプロジェクト保存 — project.save_as は、ターゲットの .logicx パッケージが存在すること、および既存パッケージの更新日時が進んでいることを検証します。
  • ライブプロジェクトメタデータ — logic://project/info は、利用可能な場合はライブのトランスポートテンポ/サンプルレートを優先し、フィールドごとに保存済みプロジェクトメタデータへフォールバックします。
  • 副作用のない読み取り — リソースは、Logic を変更することなく、状態、メタデータ、キャッシュ済みインベントリを公開します。

リリースと配布

安定した本番用タグでは、GitHub Actions のリリースワークフローを使用します。RELEASE-METADATA.json には、各アーティファクトの正確な署名モード、Team ID、アーキテクチャが記録されています。Developer ID の認証情報がない場合、リリースでは公証済みであるかのように装うことなく、SHA256 メタデータとインストール検証を含む ADHOC アーティファクトを公開します。

リリースごとの詳細は CHANGELOG.md に記載されています。セキュリティとインストーラーの信頼レベルについては SECURITY.md に記載されています。

レジストリのメタデータ

このリポジトリには、公式 MCP Registry のメタデータパス向けに server.json が含まれています。これは現在の安定版リリース(v3.18.0)に固定されており、Logic Pro、DAW 自動化、MIDI、Claude/Cursor MCP クライアント、音楽制作エージェントの検出タグが付与されています。レジストリのパッケージスキーマでは、Homebrew のフォーミュラや GitHub リリースの tarball がまだ第一級のパッケージタイプとして扱われないため、このレコードはメタデータのみです。インストール元として引き続き正規となるのは、上記の固定された GitHub Release/Homebrew パスです。

既知の制限事項

  • テンポ入力:Logic のインラインテンポ入力が確定されない場合、transport.set_tempo は範囲を制限した粗い AX スライダーと正確な AX スライダーのフォールバックを使用し、正確な読み戻しを検証できない場合は安全側に倒して失敗します。
  • MIDI リージョンのパディング:record_sequence のリージョンは 1 小節目から始まり、聞こえないパディングを使って目標の小節まで延長されます。リージョン内のノートのタイミングは正確ですが、フレーズより長く見える場合があります。
  • 外部 MIDI のバウンス準備状況:GM Device/External MIDI トラック上の MIDI リージョンは、プロジェクト監査や logic_project.bounce において、可聴バウンスの証拠として認められません。検証済みの Logic バウンスと判断する前に、素材を Software Instrument トラックに移動するか、作り直してください。
  • MIDI キーコマンド:Logic 12.2 以降では、従来の .plist キーコマンドのインポートは受け付けられません。キーコマンドのみの操作には、引き続き手動の MIDI Learn が必要です。自動の録音アーム用キーコマンド設定(system.setup_arm_key)は、Apple のデータからキーコマンドの表記を確認するか、実際の動作を測定するまで、it-IT、pt-BR、zh-TW では実行を拒否します(CHANGELOG v3.18.0 を参照)。
  • マーカー:マーカーの作成には Logic 標準の「Navigate」メニューを使用し、読み取り可能な場合は Marker List を検証します。閉じている、または読み取れない Marker List は、検証済みの空リストとして扱わず、読み取り不可として報告するか、最後に読み取り可能だったキャッシュを返します。rename_marker は引き続き not_implemented です。
  • プラグインパラメーターの読み戻し:logic_plugins.set_param_verified は必要に応じて対象のインサートのプラグインウィンドウを開き、そのウィンドウを通じて Compressor の threshold をリアルタイムで検証します。任意のプラグインパラメーターへの対応は今後の課題であり、unsupported_param_readback を返して安全側に倒して失敗します。
  • ロケールの対応状況は、ほとんどが実測ではなく派生情報です:en-US、ko-KR、ja-JP、de-DE 以外では、多くの標準 UI ラベルは、その言語で実行中の Logic ウィンドウから読み取ったものではなく、Apple の .strings テーブルから derived として取得しています(上のロケール表を参照)。

開発

ソースからビルドするには、現在検証済みのツールチェーンとして Xcode 16.4 以降/Swift 6.2 が必要です。

swift test --no-parallel
swift build -c release

ライセンス

MIT です。LICENSE を参照してください。

コントリビューション

バグ報告、PR、機能に関する議論を歓迎します。開発ワークフローについては、CONTRIBUTING.md と未解決のイシューを参照してください。

セキュリティ脆弱性については、公開イシューを作成しないでください。非公開での報告方法については、SECURITY.md を参照してください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。