Sonic Pi MCP について
Sonic Pi MCP は、AI アシスタントが自然言語で記述された音楽を Sonic Pi のコードに変換し、OSC で送信する MCP サーバーです。対話を通じて音楽のアレンジや実験を行いたい方に向いており、Sonic Pi 側のキュー用ランナーがセグメント間のクロスフェードを担当します。
主な機能
- 01queue_segment による次の音楽セグメントの送信
- 02stop_all による OSC 経由の即時停止
- 03play_note によるテスト用ノートの再生
- 04DJ セッション向けのリソースとプロンプト
- 05環境変数による OSC ホスト・ポート・パスの設定
活用シーン
- 01自然言語の記述から Sonic Pi 用の楽曲セグメントを生成
- 02Sonic Pi でのセクション間のクロスフェード
- 03ライブ演奏中のセグメント投入と管理
MCP 対応
本プロジェクトは MCP サーバーであり、queue_segment、run_code、stop_all、play_note などのツールに加え、リソースとプロンプトを MCP クライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Sonic Pi MCP
Sonic Pi 用の Model Context Protocol(MCP)サーバーです。LLM クライアントで音楽を自然言語で記述すると、モデルが Sonic Pi コードを生成し、このサーバーが OSC 経由で送信します。セグメント間のクロスフェードには、Sonic Pi に含まれる キューランナー を使用します。
特長
queue_segment— 次の楽曲セグメント全体(名前付きのlive_loop、use_bpmなど)を送信します。run_code—queue_segmentと同じです(互換性のため)。stop_all— OSC(/stop-all-jobs)経由で即時停止します。Sonic Pi の Stop と同様です。play_note— テスト用の音を手早く再生します。- リソース — DJ セッションの作り方、語彙、ツールの使い方を提供します(MCP クライアントから読み込みます)。
- プロンプト
next_performance_segment— 長時間のセットで次のブロックを組み立てる際に役立ちます。 - 環境変数 —
OSC_HOST、OSC_PORT、OSC_CODE_PATH、OSC_STOP_ALL_PATH。
前提条件
任意:ローカル開発には Bun を使用できます(bun run dev)。
Sonic Pi の初回セットアップ(キューランナー)
- Sonic Pi を開きます。
- sonic-pi-queue.rb をバッファーにコピーします。
- Run を押して、実行したままにします。
このバッファーはデフォルトの OSC ポートで待ち受け、MCP から送信されたセグメント間をクロスフェードします。
MCP サーバーのインストール
npx -y sonic-pi-mcp
このコマンドを stdio 経由で実行するようにクライアントを設定します(以下を参照)。
Cursor
プロジェクトで ~/.cursor/mcp.json および/または .cursor/mcp.json を使用します。
{
"mcpServers": {
"sonic_pi_mcp": {
"command": "npx",
"args": ["-y", "sonic-pi-mcp"]
}
}
}
ローカルクローン(npm install または bun install と bun run build の実行後):
{
"mcpServers": {
"sonic_pi_mcp": {
"command": "node",
"args": ["/absolute/path/to/sonic-pi-mcp/bin/cli.mjs"]
}
}
}
ビルドせずに Bun を使用する場合 — クライアントによっては cwd が無視されるため、src/server.ts には絶対パスを指定するか、ランチャーを使用してください。
{
"mcpServers": {
"sonic_pi_mcp": {
"command": "/absolute/path/to/sonic-pi-mcp/bin/mcp-dev.sh",
"args": []
}
}
}
chmod +x bin/mcp-dev.sh を一度実行します。このスクリプトはリポジトリに移動して bun run src/server.ts を実行します。
Claude Desktop
~/Library/Application Support/Claude/claude_desktop_config.json(Windows ではパスが異なります):
{
"mcpServers": {
"sonic_pi_mcp": {
"command": "npx",
"args": ["-y", "sonic-pi-mcp"]
}
}
}
ローカルクローンの場合、Module not found "src/server.ts" または spawn bunx ENOENT が表示されたら、上記の bin/mcp-dev.sh を使用してください。古い定義がキャッシュされている場合は、アプリで MCP を削除して再追加します。
VS Code
拡張機能のドキュメントに従い、MCP 拡張機能で npx を -y および sonic-pi-mcp とともに実行するよう設定し、トランスポートに stdio を指定します。
環境変数
| 変数 | デフォルト値 | 意味 |
|---|---|---|
OSC_HOST | 127.0.0.1 | Sonic Pi のホスト |
OSC_PORT | 4560 | Sonic Pi の OSC ポート |
OSC_CODE_PATH | /run-code | コード用の OSC パス(Sonic Pi のバッファーと一致させる必要があります) |
OSC_STOP_ALL_PATH | /stop-all-jobs | 即時停止用のパス |
別のマシンから接続する場合は、Sonic Pi で 受信 OSC を許可し、OSC_HOST を適切に設定してください。
開発
git clone https://github.com/abhishekjairath/sonic-pi-mcp.git
cd sonic-pi-mcp
bun install # or npm install
bun run build
bun run dev
OSC の簡易テスト(Sonic Pi とランナーを実行中の状態で行います):
bun run test
MCP Inspector
npx @modelcontextprotocol/inspector
bun run build の実行後、このディレクトリを作業ディレクトリとして、引数 bin/cli.mjs を指定した node を使用します。
トラブルシューティング
- 音が出ない — Sonic Pi は開いていますか?キューバッファーは実行中ですか?ポート 4560 に到達できますか?
- 何も起きない — Sonic Pi で OSC が有効になっていますか?
OSC_HOST/OSC_PORTは一致していますか? - レイヤーが積み重なる — 名前付きの
live_loops とともにqueue_segmentを使用してください。完全にリセットするときだけstop_allを使用します。 Module not found "src/server.ts"(Claude) —commandにbin/mcp-dev.shを指定し、argsは空にするか、絶対パスを使用してください。cwdだけに頼らないでください。resources/list/prompts/list→ Method not found — ツールのみを公開する古いビルドを使用しています。このリポジトリまたは npm から MCP を再インストール/再起動して、リソースとプロンプトが登録されるようにしてください。- Sonic Pi のログに Ruby エラーが表示される — 生成されたコードの解析または実行に失敗しています。スニペット(括弧、サンプル、構文)を修正して、もう一度送信してください。失敗時、キューランナーはコードのスニペットを出力します。
ライセンス
MIT — LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。