MIDIFabric のエフェクトは Lua で書いています。作りたい動きを言葉で伝えれば、普段使っている AI クライアントにコードを書いてもらえるようにしたい。そのための接続方法として、MCP を選びました。
MCP を選んだ理由
接続方法は、次の 3 つを検討しました。
- MIDIFabric から AI サービスの API を呼ぶ。 利用者に API キーを用意してもらう必要があり、普段の AI クライアントとは別に API の利用料金がかかります。
- MIDIFabric の中から AI のコマンドラインツール(
codex execやclaude -pなど)を動かす。 利用者の契約で動くツールを、別の製品から呼び出す形になります。この利用方法が規約上認められるか判断できず、採用を見送りました。規約で禁止されていると確認したわけではありません。 - MCP サーバーになる。 MCP(Model Context Protocol)は、Codex や Claude Code のように利用者が自分で動かす AI のツールが、アプリの提供する道具を呼び出せるようにする仕組みです。AI を操作するのは利用者自身で、利用者のアカウントのもとで動きます。MIDIFabric は AI を起動せず、AI の資格情報にも触れません。
MIDIFabric に MCP サーバーを持たせ、利用者が起動した AI クライアントから接続する構成にしました。
接続は Mac の中だけ
ここで説明する MCP 接続は Mac 向けで、Codex と Claude Code で確認しています。
- サーバーは
127.0.0.1(Mac 自身のループバックのアドレス)だけで待ち受けます。ネットワークのほかの機器からは届きません。 - 設定 > AI でオンにするまで、オフのままです。既定のポートは 8765 で、止めている間に変更できます。
- すべての要求に、アクセストークンが必要です。256 ビットの乱数で、一度作られ、作り直すまで保たれます。トークンの照合は、時間の差で中身を推測されないように行います。
Originヘッダーのある要求は拒否します。ブラウザがこのサーバーと話すことはないからです。Hostヘッダーも完全に一致する必要があります。4 MiB を超える要求も拒否します。- これらの確認は、要求の中身を読む前に行います。
接続設定をコピーするボタンは、Codex 用と Claude Code 用に分けています。コピーされる設定や登録コマンドには、接続先のアドレスとトークンが含まれます。利用者がそれを AI クライアントに貼り付けて登録します。
localhost では暗号化しない理由
ループバックの通信は、Mac の外に出ません。その通信を盗み見られるプログラムなら、設定のファイルやメモリからトークンを直接読めるので、暗号化しても守れるものは増えません。HTTPS にすると、自己署名の証明書を AI のツールごとに信頼させる必要があり、「このコマンドを貼り付けるだけ」の手順がずっと長くなります。
トークンが守るもの、守らないもの
トークンは、それを持たないアプリがサーバーを使うことを防ぎます。一方で、同じユーザーとして動き、AI のツールの設定ファイルやクリップボード、メモリを読めるアプリまでは防げません。呼び出しているのがどのプログラムかも識別しないので、正しいトークンを持つ別のクライアントはつながります。この制約があるため、アプリではトークンを含む設定を他の人と共有しないよう案内しています。
AI ができること、できないこと
サーバーには 12 個の MCP ツールがあり、AI クライアントから次の操作を行えます。
- MIDIFabric の作成ガイドと、付属のエフェクトのテンプレートを読めます。
- 書いたエフェクトを確かめられます(コンパイルして初期化するだけで、MIDI は鳴らしません)。
- 新しいエフェクトや、既存のエフェクトの修正を提出できます。
- 登録済みのエフェクトの一覧を見て、1 つを Lua のコードまで含めて読めます。
- 設定 > AI で許可した場合だけ、モニタが保持している MIDI の記録と、適用済みのルーティングの構成を読めます。モニタとルーティングは別々に許可でき、初期設定ではどちらもオフです。
モニタの記録には、SysEx と、機器やポートの名前が含まれます。ルーティングの構成には、接続、ルートとエフェクトの名前、Bypass、エフェクトの今のパラメータの値が含まれます。未適用の編集、音声、ログ、そのほかのファイルは読めません。許可しても読むだけで、ルーティングを変えることも、ノートや SysEx を送ることも、コマンドを実行することもできません。許可をオフにしても、すでに AI に渡した情報は取り戻せません。
AI が読んだ内容は、利用者自身のアカウントと規約のもとで AI の会社へ送られます。利用者の依頼文は、利用者から AI のツールへ直接届き、MIDIFabric を通りません。読み取り対象を追加するときは、アプリ内の説明、マニュアル、プライバシーポリシーも同時に更新する運用にしています。
受け取ったエフェクトを登録するまで
AI がエフェクトを提出すると、MIDIFabric はそれを確かめ、最新の候補をメモリに保持します。既定では、利用者がエディタで開き、Apply を押して登録します。設定 > AI で自動登録をオンにすることもできますが、対象はオンにした後の提出だけで、手動の登録と同じ確認と Apply を通ります。エフェクトをルーティングに置くのは、いつも利用者自身です。
受け取り時の検査では、コンパイルと初期化ができるかを確認します。狙った動作になっているかは、登録後にルーティングへ置き、実際に弾いて確認します。
AI のツールが読める情報の一覧は、MIDIFabric のプライバシーポリシーにあります。