MIDIFabric のエフェクトは、小さな Lua のプログラムです。作りたいエフェクトを言葉で伝えて、AI に書いてもらえるようにしたいと考えました。しかも、利用者がすでに契約して信頼している AI のツールを使って、です。このノートは、MIDIFabric がそうしたツールとどうつながるか、その裏にある判断についてです。
MCP を選んだ理由
AI とつなぐ方法は 3 つありました。
- MIDIFabric から AI サービスの API を呼ぶ。 API キーと別の課金が必要で、多くの人がすでに持っているものではありません。
- MIDIFabric の中から AI のコマンドラインツール(
codex execやclaude -pなど)を動かす。 利用者の契約を、別の製品の中から裏で使うことになります。サービスの規約がそれを認めているか判断できなかったので、製品には載せないことにしました。禁止されていると主張しているわけではなく、位置付けがはっきりしないものを出したくなかった、ということです。 - MCP サーバーになる。 MCP(Model Context Protocol)は、Codex や Claude Code のように利用者が自分で動かす AI のツールが、アプリの提供する道具を呼び出せるようにする仕組みです。AI を操作するのは利用者自身で、利用者のアカウントのもとで動きます。MIDIFabric は AI を起動せず、AI の資格情報にも触れません。
3 つ目を選びました。MIDIFabric は小さな MCP サーバーを動かし、利用者が自分の AI のツールをそこへつなぎます。
接続は Mac の中だけ
- サーバーは
127.0.0.1(Mac 自身のループバックのアドレス)だけで待ち受けます。ネットワークのほかの機器からは届きません。 - 設定 > AI でオンにするまで、オフのままです。既定のポートは 8765 で、止めている間に変更できます。
- すべての要求に、アクセストークンが必要です。256 ビットの乱数で、一度作られ、作り直すまで保たれます。トークンの照合は、時間の差で中身を推測されないように行います。
Originヘッダーのある要求は拒否します。ブラウザがこのサーバーと話すことはないからです。Hostヘッダーも完全に一致する必要があります。4 MiB を超える要求も拒否します。- これらの確認は、要求の中身を読む前に行います。
つなぐときのために、MIDIFabric は 2 つのボタンを用意しています。1 つは Codex 用の設定を、もう 1 つは Claude Code の登録コマンドをコピーします。どちらにもアドレスとトークンが入っています。MIDIFabric が AI のツールの設定を書き換えることはなく、貼り付けるのは利用者です。
localhost では暗号化しない理由
ループバックの通信は、Mac の外に出ません。その通信を盗み見られるプログラムなら、設定のファイルやメモリからトークンを直接読めるので、暗号化しても守れるものは増えません。HTTPS にすると、自己署名の証明書を AI のツールごとに信頼させる必要があり、「このコマンドを貼り付けるだけ」の手順がずっと長くなります。
トークンが守るもの、守らないもの
トークンは、それを持たないアプリがサーバーを使うことを防ぎます。一方で、同じユーザーとして動き、AI のツールの設定ファイルやクリップボード、メモリを読めるアプリまでは防げません。呼び出しているのがどのプログラムかも識別しないので、正しいトークンを持つ別のクライアントはつながります。この割り切りは意図して選んだものです。アプリでは、コピーした設定にトークンが含まれていて、人と共有しないよう案内しています。
AI ができること、できないこと
サーバーは 10 個の道具を提供します。AI はこれらを使って、次のことができます。
- MIDIFabric の作成ガイドと、付属のエフェクトのテンプレートを読めます。
- 書いたエフェクトを確かめられます(コンパイルして初期化するだけで、MIDI は鳴らしません)。
- 新しいエフェクトや、既存のエフェクトの修正を提出できます。
- 登録済みのエフェクトの一覧を見て、1 つを Lua のコードまで含めて読めます。
機器の一覧、モニタのデータ、演奏、ログ、そのほかのファイルは読めません。ルーティングを変えることも、ノートや SysEx を送ることも、コマンドを実行することもできません。
AI が読んだ内容は、利用者自身のアカウントと規約のもとで AI の会社へ送られます。利用者の依頼文は、利用者から AI のツールへ直接届き、MIDIFabric を通りません。私たちは自分たちのために決まりを作りました。将来の版で、モニタのデータなど AI のツールが読めるものを増やすときは、同じ変更で、アプリ内の説明、マニュアル、プライバシーポリシーを更新します。
提出されたことと、動くことは別
AI がエフェクトを提出すると、MIDIFabric はそれを確かめ、最新の候補をメモリに保持します。既定では、利用者がエディタで開き、Apply を押して登録します。設定 > AI で自動登録をオンにすることもできますが、対象はオンにした後の提出だけで、手動の登録と同じ確認と Apply を通ります。エフェクトをルーティングに置くのは、いつも利用者自身です。
これらの段階は、意図して分けています。「AI が提出した」は、受け取ったという意味です。「確認を通った」は、コンパイルして起動できるという意味です。どちらも、頼んだとおりに鳴るという意味ではありません。それを確かめられるのは、弾いてみることだけです。
まだしていないこと
- Codex と Claude Code 以外の AI のツールからの MCP 接続は、試験していません。
- iPad: 今は Mac だけです。iPad では、同じローカルネットワークで動く AI のツールから接続できるようにする計画です。接続が機器の外に出るので、通信の守り方はそのときに改めて決めます。
- AI がどれだけうまくエフェクトを書けるかは、体系的には測っていません。そもそも体系的に測れるものなのかも、まだ分かりません。ただ、私たちが使っている範囲では、うまく書けています。MIDIFabric に付属しているエフェクトにも、AI で書いたものがあります。
AI のツールが読める情報の一覧は、MIDIFabric のプライバシーポリシーにあります。