Autodesk Maya 的 Model Context Protocol (MCP) 服务器实现
已测试版本:Maya 2023, 2025。
v0.2.0
该项目使像 Claude Desktop 这样的AI助手客户端能够通过自然语言使用 Model Context Protocol (MCP) 控制 Autodesk Maya。
Maya MCP 服务器仍处于早期阶段,功能集较为基础。初期的重点在于架构设计和简洁性。
以下是一些注册到 Maya MCP 的工具列表。
| 工具 | 描述 |
|---|---|
| list_objects_by_type | 获取场景中的对象列表。使用 filter_by 参数过滤特定类型的对象,如“相机”、“灯光”、“材质”或“形状”。 |
| create_object | 在 Maya 场景中创建一个对象。可用的对象类型包括立方体、圆锥、球体、圆柱、相机、聚光灯、点光源、方向光源。 |
| get_object_attributes | 获取 Maya 对象上的属性列表。 |
| set_object_attributes | 设置对象的属性值。 |
| scene_new | 在 Maya 中创建一个新的场景。使用 force 参数在加载并修改现有场景时强制创建新场景。 |
| scene_open | 将场景加载到 Maya 中。 |
| scene_save | 保存当前场景。如果未指定文件名,则按当前名称保存。 |
| select_object | 在场景中选择一个对象。 |
| 工具 | 描述 |
|---|---|
| create_advanced_model | 使用详细参数创建复杂的3D模型,如汽车、树木、建筑、杯子和椅子等。 |
| mesh_operations | 执行建模操作,如挤出、倒角、细分、布尔运算、组合、桥接和分割等。 |
| create_material | 创建并分配各种类型的材质(Lambert、Phong、木头、大理石、铬、玻璃等)。 |
| create_curve | 生成用于各种形状的NURBS曲线(线、圆、螺旋、螺旋线、星形、齿轮等)。 |
| curve_modeling | 使用基于曲线的建模技术创建几何体(挤出、放样、旋转、扫掠等)。 |
| organize_objects | 通过分组、父级、布局、对齐和分布来组织对象。 |
| generate_scene | 生成包含多个对象的完整3D场景(城市、森林、客厅、办公室、公园)。 |
Maya MCP 服务器设计为仅包含 MCP 服务器,无需在 Maya 内安装任何内容。这有助于轻松使用不同版本的 Maya 并不需要担心协调版本变化。这是通过利用 Maya 默认打开的用于 MEL 脚本的命令端口来实现的。
MCP 需要 Python 3.10 或更高版本。目前使用 pip 安装,因为包需求较少。要安装虚拟环境:
python -m venv .venv.venv\Scripts\activate.batsource .venv/bin/activate.shpip install -r requirements.txt如前所述,Maya 不需要安装任何内容。
根据您使用的 MCP 客户端不同,配置文件的位置也有所不同。对于 Anthropic Claude Desktop,请转至 文件 -> 设置 -> 开发者选项卡,并点击编辑配置按钮。这将弹出 JSON 配置文件所在目录位置的文件查找器。
接下来,您需要手动使用文本编辑器编辑配置 JSON 文件。确保使用完整的文件路径。
{
"mcpServers": {
"MayaMCP": {
"command": "[完整路径到MayaMCP项目的]/.venv/Scripts/python.exe",
"args": [
"[完整路径到MayaMCP项目的]/src/maya_mcp_server.py"
]
}
}
}
完成更改后,请重启 Claude Desktop(使用退出菜单项而不是仅仅关闭窗口)。在开发者选项卡中,您现在可以看到列出的 Maya MCP 服务器。
在 Claude Desktop 中,您可以验证 Maya MCP 工具是否可用。点击
按钮,将出现详细的弹出窗口。

当 Maya MCP 服务器首次尝试与 Maya 通信时,您将在 Maya 中看到此弹出窗口。请点击“允许所有”以允许 MCP 服务器与 Maya 之间的持续通信。每次 Maya 会话都需要执行此操作。

Maya MCP 服务器模块旨在以非侵入的方式轻松修改。这是通过将 Maya Python 代码驻留在 MCP 服务器中并通过 Maya 的命令端口发送执行来实现的。结果被发送回服务器进行处理。
默认的 Maya 命令端口运行 MEL,因此 Python 代码被修改为在 MEL 函数调用中运行 Python 解释器。也有一些限制,例如多行 Python 代码不能有任何返回结果。因此,每个命令都会创建两个连接到 Maya 的连接。首先运行操作并保存结果,然后第二个连接读取结果。
为了帮助最小化填充 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 添加新工具非常简单。您无需更改任何现有代码。您只需要将单个工具命令 Python 文件添加到 mayatools/thirdparty 目录中。该工具本身将在 Maya 中运行,因此它将访问所有 Maya Python 模块。工具的设计中有几个编程注意事项。
我建议查看此项目中的现有 Maya 工具作为示例。
目前,Maya MCP 只在 Windows 上进行了测试。应该可以在 Linux 和 Mac 上工作,因为一切都使用标准 Python。
MCP 还处于早期阶段,有很多改进的空间。这里有一些想法。
MIT
此项目是在我的个人时间和设备上完成的,目的是了解 MCP。该项目与我当前雇主无关,不代表他们的工作或利益。