Maya MCP サーバー (Maya MCP Server)
Maya MCP Server を使用すると、Model Context Protocol (MCP) を通じて AI エージェントが自然言語で Autodesk Maya と直接対話・操作できるようになります。この連携により、プロンプトを活用した 3D モデリング、シーン作成、および編集が可能になります。これは Patrick Palmer 氏によって作成されたサードパーティ製サーバーであり、Autodesk Maya や Griptape の公式製品ではありません。
サードパーティ製サーバーに関する注意
この MCP サーバーは Griptape または Autodesk Maya によって公式にサポートされているものではありません。ご自身の判断で使用し、作業データの適切なバックアップを必ず確保してください。
前提条件
Maya MCP サーバーを使用する前に、以下を準備する必要があります:
- Autodesk Maya 2023 以降がインストールされていること
- Python 3.10 以降がインストールされていること
- リポジトリ から Maya MCP サーバーをダウンロードしてセットアップしていること。詳細については インストール手順 を参照してください。
インストール手順 (Installation)
1. Maya MCP サーバーのダウンロードとセットアップ
-
ターミナルを開き、リポジトリをダウンロードしたいローカルマシンのディレクトリに移動します。見つけやすい場所に配置することをお勧めします(例: Mac の場合、GitHub リポジトリをまとめている
$HOME/Documents/GitHubなど)。cd $HOME/Documents/GitHub -
リポジトリをクローン します:
git clone https://github.com/PatrickPalmer/MayaMCP.git cd MayaMCP -
仮想環境を作成 します:
python -m venv .venv -
仮想環境を有効化 します:
- Windows:
.venv\Scripts\activate.bat - Mac/Linux:
source .venv\bin\activate
- Windows:
-
依存関係をインストール します:
pip install -r requirements.txt
2. Maya を開きコマンドポートを有効化
-
Autodesk Maya を起動 します
-
コマンドポート (Command Port) を有効化 します — これは MCP サーバーが Maya と通信するために必須です。Maya のスクリプトエディタ (Script Editor) で、以下の Python コードを実行します:
import maya.cmds as cmds def setup_maya_command_port(port=50007): """エラーハンドリング付きで Maya コマンドポートをセットアップ""" try: # まず、このポートで開いている既存のコマンドポートがあれば閉じる try: cmds.commandPort(name=f"localhost:{port}", close=True) print(f"Closed existing command port on localhost:{port}") except: # 閉じるポートが存在しなくても問題ありません pass # コマンドポートを有効化 cmds.commandPort(name=f"localhost:{port}") print(f"Command Port successfully enabled on localhost:{port}") return True except Exception as e: print(f"Error setting up command port: {e}") return False # セットアップを実行 if setup_maya_command_port(50007): print("Maya MCP server should now be able to connect!") else: print("Failed to setup command port. Check Maya's Command Port settings in Preferences.")
セッションごとのコマンドポート有効化が必要
Maya を起動するたびにコマンドポートを有効化する必要があります。コマンドポートの設定は Maya セッション間で保持されません。
Maya スクリプトとして保存して効率化
このプロセスを簡単にするために、コマンドポートのセットアップを Maya スクリプトとして保存できます:
-
以下のスクリプトを
enable_mcp_command_port.pyとして保存 します:import maya.cmds as cmds def enable_mcp_command_port(port=50007): """エラーハンドリング付きで Maya コマンドポートをセットアップ""" try: # まず、このポートで開いている既存のコマンドポートがあれば閉じる try: cmds.commandPort(name=f"localhost:{port}", close=True) print(f"Closed existing command port on localhost:{port}") except: # 閉じるポートが存在しなくても問題ありません pass # コマンドポートを有効化 cmds.commandPort(name=f"localhost:{port}") print(f"Command Port successfully enabled on localhost:{port}") return True except Exception as e: print(f"Error setting up command port: {e}") return False -
Maya のスクリプトエディタで スクリプトをテスト します:
import enable_mcp_command_port enable_mcp_command_port.enable_mcp_command_port() -
以下のいずれかの方法を選択 します:
方法 A: シェルフボタン (Shelf Button) の作成
- ステップ 2 のテストコードをシェルフにドラッグしてボタンを作成します
- コマンドポートを有効化したいときに、いつでもそのボタンをクリックします
方法 B: userSetup.py による自動起動
- Maya の userScripts ディレクトリを探します:
- Windows:
%USERPROFILE%\Documents\maya\2025\scripts\ - macOS:
~/Library/Preferences/Autodesk/maya/2025/scripts/ - Linux:
~/maya/2025/scripts/
- Windows:
- 既存の
userSetup.pyファイルに次の行を追加します(存在しない場合は新規作成):import enable_mcp_command_port enable_mcp_command_port.enable_mcp_command_port() - Maya を再起動すると、コマンドポートが自動的に有効化されます
初回接続時のアクセス許可
Maya MCP サーバーはコマンドポート経由で Maya と通信します。MCP サーバーが Maya と初めて通信しようとする際、Maya 内で権限を求めるポップアップが表示される場合があります。"Allow All" をクリックして継続的な通信を許可してください。
3. Griptape Nodes での設定
-
Griptape Nodes を開き、Settings → MCP Servers に移動します
-
+ New MCP Server をクリック します
-
サーバーを設定 します:
- Server Name/ID:
maya - Connection Type:
Local Process (stdio) - Configuration JSON(お使いの OS に合わせた設定例を選択してください):
Windows:
{ "transport": "stdio", "command": "C:\\path\\to\\MayaMCP\\.venv\\Scripts\\python.exe", "args": [ "C:\\path\\to\\MayaMCP\\src\\maya_mcp_server.py" ], "cwd": null, "encoding": "utf-8", "encoding_error_handler": "strict" }macOS/Linux:
{ "transport": "stdio", "command": "/path/to/MayaMCP/.venv/bin/python", "args": [ "/path/to/MayaMCP/src/maya_mcp_server.py" ], "cwd": null, "encoding": "utf-8", "encoding_error_handler": "strict" }パスの設定に関する注意
サンプルのパスを、実際のローカル環境の MayaMCP プロジェクトディレクトリへの絶対パスに置き換えてください。macOS/Linux ではスラッシュ (
/)、Windows ではバックスラッシュ (\\) を使用します。 - Server Name/ID:
-
Create Server をクリック します
利用可能なツール (Available Tools)
基本ツール
list_objects_by_type- シーン内のオブジェクト一覧を取得(カメラ、ライト、マテリアル、シェイプでのオプションフィルタリングに対応)create_object- 基本オブジェクトの作成(立方体、円錐、球体、円柱、カメラ、ライト)get_object_attributes- Maya オブジェクトの属性一覧を取得set_object_attribute- オブジェクトの属性に特定の値を設定scene_new- Maya で新しいシーンを作成scene_open- Maya にシーンを読み込むscene_save- 現在のシーンを保存select_object- シーン内のオブジェクトを選択clear_selection_list- ユーザーの選択リストをクリアviewport_focus- ビューポートをセンタリングおよびフィットさせて、特定のオブジェクトにフォーカス
高度なモデリングツール
create_advanced_model- 詳細なパラメータを指定して複雑な 3D モデル(自動車、木、建物、カップ、椅子など)を作成mesh_operations- モデリング操作の実行(押し出し、ベベル、細分割、ブーリアン、結合、ブリッジ、分割)create_material- マテリアルの作成と割り当て(lambert、phong、wood、marble、chrome、glass など)create_curve- NURBS カーブの生成(直線、円、スパイラル、ヘリックス、星型、ギアなど)curve_modeling- カーブベースのモデリングによるジオメトリ作成(押し出し、ロフト、回転、スイープなど)organize_objects- グループ化、親子付け、レイアウト、整列、および分散によるオブジェクトの整理
設定オプション (Configuration Options)
設定を変更して Maya への接続をカスタマイズできます:
{
"transport": "stdio",
"command": "/path/to/MayaMCP/.venv/bin/python",
"args": [
"/path/to/MayaMCP/src/maya_mcp_server.py"
],
"cwd": "/path/to/MayaMCP",
"encoding": "utf-8",
"encoding_error_handler": "strict"
}
プラットフォーム固有のパス設定
Windows:
{
"command": "C:\\path\\to\\MayaMCP\\.venv\\Scripts\\python.exe",
"args": ["C:\\path\\to\\MayaMCP\\src\\maya_mcp_server.py"]
}
macOS/Linux:
{
"command": "/path/to/MayaMCP/.venv/bin/python",
"args": ["/path/to/MayaMCP/src/maya_mcp_server.py"]
}
ユースケースの例 (Example Use Cases)
Maya MCP サーバーで作成できるプロンプトの例を紹介します:
- "4つの車輪とスポーティなデザインを備えたシンプルな車のモデルを作成して"
- "3本の枝と密集した葉を持つ木を構築して"
- "窓のある建物を作成し、レンガのマテリアルを適用して"
- "カップを作成し、クロームマテリアルを適用して"
- "椅子を作成してシーン内に配置して"
- "スパイラルカーブを生成し、それを押し出してスプリングを作成して"
- "機械モデリング用の歯車型カーブを作成して"
- "すべての家具オブジェクトをグループ化してまとめて"
- "すべてのオブジェクトをワールド原点に整列させて"
- "新しいシーンを作成し、'my_project.ma' として保存して"
高度な機能 (Advanced Features)
カスタムモデルの作成
create_advanced_model ツールは、固有のパラメータを持つさまざまなモデルタイプに対応しています:
車のモデル:
{
"model_type": "car",
"parameters": {
"wheels": 4,
"sporty": true,
"convertible": false
}
}
木のモデル:
{
"model_type": "tree",
"parameters": {
"branches": 3,
"leaf_density": 0.8,
"type": "pine"
}
}
マテリアルの作成
カスタムプロパティを持つさまざまなマテリアルタイプを作成できます:
クロームマテリアル:
{
"material_type": "chrome",
"color": [0.8, 0.8, 0.8],
"parameters": {
"reflectivity": 0.9
}
}
ウッド(木製)マテリアル:
{
"material_type": "wood",
"color": [0.6, 0.4, 0.2],
"parameters": {
"veinSpread": 0.5,
"veinColor": [0.3, 0.2, 0.1]
}
}
トラブルシューティング (Troubleshooting)
よくある問題
- 接続の問題: Maya が実行中であり、コマンドポートが有効化されていることを確認してください。Griptape Nodes 内で MCP サーバーが正しく設定されているか、Python パスが適切な仮想環境を指しているかを確認します。
- アクセス許可の拒否: Maya に初めて接続する際、通信を許可するために Maya のポップアップで "Allow All" をクリックしてください。
- パスの問題: 設定には絶対パスを使用し、MayaMCP プロジェクトパスが正しいことを確認してください。
- Python バージョン: Python 3.10 以降を使用していることを確認してください。
デバッグのヒント
- まずはシンプルなコマンドからテストする(例: "list all objects in the scene")
- Maya が実行中でアクセス可能であることを確認する
- 仮想環境が適切に有効化されているか確認する
- 設定内のすべてのファイルパスが絶対パスであり正しいことを確認する
- 問題が解決しない場合は、Maya と MCP 接続の両方を再起動する
Maya コマンドポートについて
Maya MCP サーバーは通信に Maya のデフォルトコマンドポートを使用します。これにより以下のような特徴があります:
- 追加の Maya プラグインやアドオンは不要
- 通信は MEL スクリプティングを通じて行われる
- Python コードは Maya の Python インタプリタ内で実行される
- 実行結果はコマンドポート経由で返される
セキュリティに関する考慮事項 (Security Considerations)
任意のコード実行に関する警告
Maya MCP サーバーは Maya の環境内で直接 Python コードを実行します。これは非常に強力ですが、潜在的なリスクも伴います:
- MCP サーバーを使用する前に 必ず Maya の作業内容を保存してください
- 可能な限り、生成された操作を確認してください
- 本番環境では慎重に使用してください
- 複雑な操作によって Maya シーンに予期せぬ影響が出る可能性があることに留意してください
Maya コマンドポートの仕様
サーバーは通信に Maya のコマンドポートを使用します:
- これは外部通信用の標準的な Maya 機能です
- 追加のセキュリティ保護手段は実装されていません
- Maya のインストール環境が安全かつ最新であることを確認してください
- Maya への外部アクセスを許可することの影響を十分に考慮してください
参考リソース (Resources)
- Maya MCP Server Repository - 公式リポジトリおよびドキュメント
- Autodesk Maya - Maya 公式ドキュメント
- Maya Python API - Maya スクリプティングのリファレンス
- Model Context Protocol - MCP 仕様およびドキュメント
開発者向けノート (Developer Notes)
Maya MCP サーバーは容易に拡張できるように設計されています。mayatools/thirdparty ディレクトリに Python ファイルを作成することで、新しいツールを追加できます。サーバーは実行時に新しいツールを自動的に検出して登録します。
主要な設計原則:
- ツールは Maya の Python 環境で直接実行される
- ツールファイル内で MCP デコレータを記述する必要がない
- 名前空間の汚染を防ぐよう関数がスコープ定義されている
- 実行結果は Maya のコマンドポート経由で返送される
- 通信層にエラーハンドリングが組み込まれている