Pure Data MCP Server について
Pure Data MCP Server は、リアルタイムのコンピュータ音楽向けオープンソースのビジュアル環境である Pure Data と Claude を接続するサーバーです。自然言語でパッチの作成、接続、制御を行えます。オーディオのパッチングを扱うミュージシャンや開発者向けです。
主な機能
- 01Pure Data オブジェクトの動的な作成
- 02オブジェクトの接続によるシグナルフローの構築
- 03clear_workspace によるワークスペースの初期化
- 04DSP の遠隔での開始と停止
- 05オブジェクトのパラメーターのリアルタイム変更
活用シーン
- 01自然言語で簡単なシンセサイザーやシグナルチェーンを組む
- 02会話の中で周波数やエフェクトのパラメーターを調整する
- 03リアルタイムのオーディオパッチを素早く試作する
MCP 対応
このサーバーはオブジェクト作成、接続、DSP 制御、ワークスペース消去などのツールを Claude Desktop などの MCP クライアントに公開し、OSC メッセージで Pure Data と通信します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Pure Data MCP サーバー
このプロジェクトは、Model Context Protocol(MCP)を通じてClaude AIとPure Dataを連携させます。この連携により、Claudeは自然言語を使ってPure Dataのパッチを動的に作成、変更、制御できます。
概要
このシステムは、次の3つの主要コンポーネントで構成されています。
- MCP サーバー(
mcp_server.py):Claude向けのModel Context Protocolインターフェースを実装します - OSCデーモン(
osc_daemon.py):Pure DataとのOSC通信を処理します - Pure Dataパッチ(
example_patch.pd):OSCメッセージを受信する動的なパッチングソリューションです
機能
- 動的なオブジェクト作成:Claudeを通じて、必要に応じて任意のPure Dataオブジェクトを作成します
- 接続管理:オブジェクト同士を接続し、複雑な信号フローを構築します
- ワークスペース管理:
clear_workspaceですべてのオブジェクトを消去し、状態をリセットします - DSP制御:オーディオ処理をリモートで開始・停止します
- パラメーター制御:オブジェクトのパラメーターをリアルタイムで変更します
- グローバルオブジェクト追跡:インデックスベースの信頼性の高い接続システムです
- エラー処理:堅牢なエラー検出と報告機能を備えています
- デバッグツール:包括的なログシステムを備えています
最近の更新
インストール
前提条件
- Python 3.7+
- Pure Data(vanilla)0.51+
- 必要なPythonパッケージ:
python-oscfastmcpjsonschema
uvパッケージマネージャー
uvのインストール
macOSおよびLinuxの場合:
curl -LsSf https://astral.sh/uv/install.sh | sh
Windows(PowerShell)の場合:
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
詳細はこちら:astral-sh/uv
🛠️ 使用方法
リポジトリのクローン
git clone https://github.com/nikmaniatis/Pd-MCP-Server.git
Claude Desktopとの連携
- 次を開きます:
Claude > Settings > Developer > Edit Config > claude_desktop_config.json
- 次のブロックを追加します:
{
"mcpServers": {
"Pure Data MCP Server": {
"command": "uv",
"args": [
"--directory",
"PATH_TO_PD_MCP_SERVER",
"run",
"main.py"
],
"env": {
"PD_OSC_HOST": "127.0.0.1",
"PD_OSC_PORT": "5000",
"PD_FEEDBACK_PORT": "5001"
}
}
}
}
注:
uvコマンドが見つからない場合は、which uv(Unix)またはGet-Command uv(PowerShell)を実行し、"command"フィールドにフルパスを指定してください。
簡単な例
MCPサーバーが接続され、Pdパッチが待ち受けている状態で、自然言語を使ってClaudeにパッチの作成を依頼できます。
「440 Hzのosc
を作成し、dacに接続して、DSPを開始してください。」
ClaudeはMCPツールを呼び出し、次のような処理を行います。
create_object("osc~", ["440"], {"x": 100, "y": 50}) → index 0
create_object("*~", ["0.25"], {"x": 100, "y": 110}) → index 1
create_object("dac~", [], {"x": 100, "y": 170}) → index 2
connect_objects({"id": "osc~_100_50", "port": 0}, {"id": "*~_100_110", "port": 0})
connect_objects({"id": "*~_100_110", "port": 0}, {"id": "dac~_100_170", "port": 0})
connect_objects({"id": "*~_100_110", "port": 0}, {"id": "dac~_100_170", "port": 1})
start_dsp()
これにより、ワークスペースのサブパッチに次のパッチが作成されます。
osc~ 440
|
*~ 0.25 (volume)
/ \
dac~ L+R
その後、会話を通じてClaudeにパッチの変更、エフェクトの追加、周波数の変更、またはより複雑な信号チェーンの構築を依頼できます。
アーキテクチャ
メッセージフロー
- Claudeがユーザーのリクエストに基づいてMCPツールを実行します
- MCPサーバーがツール呼び出しを処理します
- OSCメッセージが整形され、Pure Dataに送信されます
- Pure Dataが動的パッチを介してコマンドを実行します
- フィードバック(ある場合)はOSCコールバックを介して返されます
トラブルシューティング
よくある問題
- オブジェクトの作成に失敗する:Pure Dataが起動しており、パッチが開いていることを確認してください
- 接続の問題:オブジェクトIDが
create_objectから返された値と完全に一致していることを確認してください - ポートの競合:ポート5000がすでに使用されていないか確認してください
- メッセージ形式のエラー:メッセージ形式がPure Dataパッチで想定されている形式と一致していることを確認してください
- オブジェクトが見つからない:オブジェクト追跡が正しく機能しなくなった場合は、MCPサーバーとPure Dataの両方を再起動してみてください
既知の制限事項
- 削除または切断はサポートされていません:Pdパッチ(
example_patch.pd)が処理するのは/pd/create、/pd/connect、/pd/dsp、/pd/clearのみです。オブジェクトや接続を個別に削除することはできません。代わりにclear_workspaceを使ってワークスペース全体をリセットしてください。 - 引数がゼロ個のシグナルオブジェクト:動的パッチングで
+~や*~などのシグナルオブジェクトを0引数付きで作成すると(例:obj 100 100 +~ 0)、Pd 0.55+では2つ目のインレットがシグナルインレットではなくフロートインレットとして扱われ、シグナル接続が機能しなくなります。この問題を避けるため、MCPサーバーはシグナルオブジェクトの末尾にあるゼロ引数を自動的に削除します。
ライセンス
このプロジェクトはMIT Licenseのもとでライセンスされています。詳細はLICENSEファイルをご覧ください。
謝辞
- Pure Data - オープンソースのビジュアルプログラミング言語
- Model Context Protocol - AI ツールを可能にするプロトコル
- Python-OSC - OSC の Python 実装
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。