マヤMCP
Autodesk Maya のモデル コンテキスト プロトコル (MCP) サーバー実装
Maya 2023、2025 でテスト済み。
バージョン0.1.0
このプロジェクトにより、Claude Desktop などの AI アシスタント クライアントは、Model Context Protocol (MCP)を使用して自然言語で Autodesk Maya を制御できるようになります。
Maya MCPサーバーはまだ初期段階であり、機能は最小限です。当初はアーキテクチャ設計とシンプルさに重点を置きました。
以下は、Maya MCP に登録されているツールの一部の一覧です。
道具 | 説明 |
---|---|
オブジェクトの種類別リスト | シーン内のオブジェクトのリストを取得します。filter_by を使用して、「カメラ」、「ライト」、「マテリアル」、「シェイプ」などの特定のオブジェクトをフィルタリングします。 |
オブジェクトの作成 | Mayaシーンでオブジェクトを作成します。使用可能なオブジェクトタイプは、立方体、円錐、球、円柱、カメラ、スポットライト、ポイントライト、ディレクショナルライトです。 |
オブジェクト属性を取得する | Maya オブジェクトの属性のリストを取得します。 |
オブジェクト属性の設定 | オブジェクトの属性を特定の値に設定します。 |
シーン_new | Mayaで新しいシーンを作成します。既存のシーンがロードされ、変更されている場合は、force引数を使用して新しいシーンを強制的に作成します。 |
シーンを開く | シーンをMayaに読み込みます。 |
シーン保存 | 現在のシーンを保存します。ファイル名が指定されていない場合は、現在の名前で保存されます。 |
オブジェクトを選択 | シーン内のオブジェクトを選択します。 |
インストール
Maya MCPサーバーは、MCPサーバーのみで動作し、Maya内に何もインストールする必要がないように設計されています。これにより、Mayaの異なるバージョンを簡単に使用でき、バージョン変更の調整を気にする必要がなくなります。これは、MayaがMELスクリプト用に開放するデフォルトのコマンドポートを利用することで実現されます。
MCPにはPython 3.10以降が必要です。パッケージ要件が最小限であるため、現在はpipを使用しています。仮想環境をインストールするには、以下の手順を実行してください。
- このプロジェクトをダウンロードする
- プロジェクトディレクトリにPython 3.10+を使用して仮想環境を作成します。python
python -m venv .venv
- 仮想環境をアクティブ化する
- Windows:
.venv\Scripts\activate.bat
- Mac/Linux:
source .venv\bin\activate.sh
- Windows:
pip install -r requirements.txt
述べたように、Maya にインストールするものは何もありません。
MCP クライアント構成
使用しているMCPクライアントによって、設定ファイルの場所は異なります。Anthopic Claude Desktopの場合は、「ファイル」→「設定」→「開発」タブに移動し、「設定の編集」ボタンを押してください。JSON設定ファイルのディレクトリにあるファイルファインダーが表示されます。
次に、テキストエディタを使って設定JSONファイルを手動で編集する必要があります。ファイルのフルパスを使用するようにしてください。
変更が完了したら、Claude Desktopを再起動してください(ウィンドウを閉じるのではなく、「終了」メニュー項目を使用してください)。「開発者」タブにMaya MCPサーバーが表示されます。
Claude Desktopでは、Maya MCPツールが利用可能かどうかを確認できます。ボタンをクリックすると、詳細なポップアップが表示されます。
マヤコミュニケーションズ
Maya MCPサーバーがMayaと初めて通信を試みると、Maya内でこのポップアップが表示されます。MCPサーバーとMaya間の継続的な通信を許可するには、「すべて許可」をクリックしてください。これはMayaセッションごとに行う必要があります。
開発者ノート
Maya MCP Serverモジュールは、非侵入的な方法で簡単に変更できるように設計されています。これは、Maya PythonコードをMCPサーバーに常駐させ、Mayaのコマンドポートに送信して実行させることで実現されます。結果はサーバーに送り返され、処理されます。
デフォルトのMayaコマンドポートはMELを実行するため、PythonコードはPythonインタープリタへのMEL関数呼び出し内で実行されるように変更されます。複数行のPythonコードでは結果を返せないなど、いくつかの制限があります。そのため、各コマンドはMayaへの接続を2つ作成します。1つ目は操作を実行し、結果を保存する接続です。2つ目は結果を読み戻す接続です。
MayaグローバルPythonインタープリタのネームスペースへのデータ投入を最小限に抑えるため、Mayaに送信される関数と変数は、 mcp_maya *で始まるスコープに設定されます。各Mayaツールは、_mcp_maya_scope()という関数にスコープされます。結果は変数_mcp_maya_resultsに代入されます。この方法により、名前の衝突の可能性が大幅に低減されます。
この設計にはちょっとした工夫があります。基本的にはPythonファイルを追加し、MCPクライアントとMaya MCPサーバーを再起動するだけで使えます。Maya MCPサーバーとMaya本体の両方で操作を統合する必要はありません。追加するコードはMaya固有のPythonコードのみで、MCPデコレータを追加する必要もありません。これは、固定のツールセットを使用するよりも、様々なインストール環境に合わせて拡張・適応できる、はるかに優れた設計です。
Maya MCPサーバーは、低レベルのPython MCPモジュールを使用して構築されました。これは、実行時にすべてのツールを動的に定義するために必要でした。ツール関数のシグネチャは、サーバーの起動時に動的に取得されます。
新しいツールの追加
Maya MCPに新しいツールを追加するのは簡単です。既存のコードを変更する必要はありません。mayatools/thirdpartyディレクトリにツールコマンドのPythonファイルを1つ追加するだけです。ツール自体はMaya内で実行されるため、MayaのすべてのPythonモジュールにアクセスできます。ツールの設計には、いくつかのプログラマーノートが含まれています。
- Pythonファイル名と関数名は必ず同じでなければなりません。また、一意であることを確認してください。
- Python関数はサーバーとMayaの両方にロードされます。関数外のコードは、スタンドアロンのPythonにロードできる必要があります。つまり、maya.cmdsなどのインポートはすべて関数のスコープ内で行う必要があります。MCPサーバーは関数をロードし、関数シグネチャを検査して、JSON-RPC経由でMCPクライアントに情報を送信します。
- 関数シグネチャが解析され、関数引数アノテーションにすべての型を含める必要があります。
- 関数がMayaに送信される際、そのスコープは_mcp_maya_scope関数内に限定されます。これにより、多くのメリットが得られます。Mayaに送信される関数は、Maya内で実行されているPythonのグローバル空間を過度に汚染することはありません。さらに、スローされた例外はすべてキャッチされ、MCPクライアントにエラーとして返されます。
- 通常は、リストまたは辞書を返すか、エラーが発生した場合に例外をスローします。
- LLMが操作を理解できるように、関数と引数に適切な名前を付けてください。関数のドキュメント文字列を含めてください。
- デフォルトの引数は適切です。
- エラー チェックは適切なので、エラー メッセージで失敗のより適切な説明を提供できます。
このプロジェクトの既存の Maya ツールを例として見ることをお勧めします。
テスト
現在、Maya MCPはWindowsでのみテストされています。すべて標準のPythonを使用しているため、LinuxとMacの両方で動作するはずです。
将来のアイデア
MCPはまだ初期段階であり、改善すべき点はたくさんあります。いくつかアイデアをご紹介します。
- より多くの機能を公開します。
- プロンプト エンジニアリングの使用を改善し、特に Maya の使用方法とデータの関係を説明します。
- すべてがツールとして登録され、リソースとプロンプトが許可されます。
- MCPツールを備えたMaya内のプラグインを見つけることも可能かもしれません。例えば、Maya内のMCPという名前のディレクトリのPYTHONPATHを調べるといった方法があります。これらをすべて検査し、MCPクライアントに返すことも可能です。
ライセンス
マサチューセッツ工科大学
リンク
重要な注意事項
このプロジェクトは、MCPについて学ぶために、私自身の時間と機材を使って作成しました。このプロジェクトは、私の現在の雇用主とは一切関係がなく、その職務や利益を代表するものではありません。
This server cannot be installed
local-only server
The server can only run on the client's local machine because it depends on local resources.
マヤMCP
Related MCP Servers
- JavaScript
- GoMIT License
- Python
- JavaScript