MayaでMCPサーバーを試すためのシンプルなサンプル

## 環境
* Windows
* Autodesk Maya 2026
* Claude for Desktop

## MayaでMCPサーバーを試す

ローカル環境でMCPサーバーを作成し、実際にMayaと連携させるための簡単な手順を記載します。以下の内容は試しやすさを重視しており、実践的な実装例を示したものではない点にご注意ください。

## 導入方法

### MCPサーバーの作成

[uv](https://docs.astral.sh/uv/) で任意のディレクトリに仮想環境を作成し、[MCP Python SDK](https://github.com/modelcontextprotocol/python-sdk) をインストールします。

```bat
cd /d <任意のディレクトリ>
uv init
uv venv
uv add "mcp[cli]"
```

次にPythonファイルを作成します。サンプルはMayaにPythonコマンドを送信するだけのシンプルなツールです。例ではポートを9999にしていますが、任意のポートをご利用ください。

```python:maya_mcp_server_sample.py
import socket

from mcp.server.fastmcp import FastMCP

mcp = FastMCP("Maya MCP")


@mcp.tool()
async def execute_script(command: str) -> None:
    try:
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.connect(("localhost", 9999))
        s.send(command.encode("utf-8"))
    except socket.error as e:
        print(f"Socket error: {e}")
    finally:
        s.close()


if __name__ == "__main__":
    mcp.run()
```

### Claude for Desktopの設定

[For Claude Desktop Users](https://modelcontextprotocol.io/quickstart/user) を参考にした設定手順を記載します。

 [Claude for Desktop](https://claude.ai/download) をインストールします。
(この記事の例は2025年04月時点の無料プランの範囲で試せるものです)

Claude for Desktopを起動し、画面左上の「≡」を押して「ヘルプ > 開発者モードを有効」を選択して開発者モードを有効にします。

<img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3965005/210f1ba8-e5c0-4d9e-a825-3f38871858e4.jpeg">

メニューの「ファイル > 設定...」を選択して設定パネルを開きます。設定パネルの「開発者」を選択して、「設定の編集」を押し、構成ファイル ```%APPDATA%\Claude\claude_desktop_config.json``` を作成します。

<img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3965005/98adb8c7-9b54-431c-bdbb-814a6ae647e0.jpeg">

Claudeを終了し ```%APPDATA%\Claude\claude_desktop_config.json``` に設定を追記します。

```json
{
  "mcpServers": {
    "maya": {
      "command": "uv",
      "args": [
        "--directory",
        "<Pythonファイルを配置したディレクトリ>",
        "run",
        "maya_mcp_server_sample.py"
      ]
    }
  }
}
```
Claudeを起動後、「ハンマー」のアイコンを選択し、利用可能なMCPツールとして登録されているか確認します。

<img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3965005/e3591c94-56cf-40c8-9fac-b67700159e4a.jpeg">

<img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3965005/5dfa2bb0-9664-4a3a-974b-e83544258681.jpeg">

## 実行例

Mayaを起動し、通信できるようにScript Editorで下記のスクリプトを実行してポートを開きます。例ではポートを9999にしていますが、Pythonファイルで指定したポートと合わせてください。

```python
import maya.cmds as cmds
cmds.commandPort(n=":9999", stp="python")
```
Claudeで下記のようなプロンプトを入力します。

```
MayaでCubeを作成する処理を実行してください。
```
Claudeがツールを認識しやすくするため、意図的に「Maya」と「処理」という単語をプロンプトに含めています。

プロンプト入力後、MayaにPythonコードが送信され、Cubeが作成されます。

**実行結果の例**
<img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3965005/6ab954eb-d3df-487d-a2fe-6d47440ef1df.jpeg">


## 参考

* [Model Context Protocol](https://github.com/modelcontextprotocol)
* [MCP Python SDK](https://github.com/modelcontextprotocol/python-sdk)
* [Claude for Desktop](https://claude.ai/download)
* [For Claude Desktop Users](https://modelcontextprotocol.io/quickstart/user)
* [uv](https://docs.astral.sh/uv/)
* [Maya commandPort](https://help.autodesk.com/view/MAYADEV/2026/JPN/?guid=__CommandsPython_index_html)