更新日:
確認環境: macOS の MIDIFabric 開発版。Codex、Claude Code との接続を試験

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 のプライバシーポリシーにあります。

← 開発ノートの一覧