Maya MCP
Autodesk Maya的模型上下文协议(MCP)服务器实现
使用Maya 2023、2025进行测试。
v0.2.0版本
该项目使Claude Desktop等AI助手客户端能够使用自然语言控制Autodesk Maya 模型上下文协议(MCP).
这是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 | 创建和指定各种类型的材质(兰伯特、凤凰、木材、大理石、铬、玻璃等) |
| create_curve | 为各种形状(直线、圆、螺旋、螺旋、星形、齿轮等)生成NURBS曲线 |
| curve_modeling | 使用基于曲线的建模技术(拉伸、放样、旋转、扫掠等)创建几何体 |
| organize_objects | 通过分组、父级、布局、对齐和分布来组织对象。 |
| generate_scene | 生成包含多个对象(城市、森林、客厅、办公室、公园)的完整3D场景 |
安装
Maya MCP服务器的设计使得只有一个MCP服务器,不需要在Maya中安装任何东西。这很有帮助,因为您可以轻松使用不同版本的Maya,而不必担心协调版本更改。这是通过利用Maya为MEL脚本打开的默认命令端口来实现的。
MCP需要Python 3.10或更高版本。目前使用pip作为包的要求很低。要安装虚拟环境,请执行以下操作:
- 下载此项目
- 在项目目录中使用Python 3.10+创建一个虚拟环境。
python -m venv .venv - 激活虚拟环境
- 窗户: .venv\Scripts\activate.bat - Mac/Linux: source .venv\bin\activate.sh
pip install -r requirements.txt
如前所述,Maya无需安装任何东西。
MCP客户端配置
根据您使用的MCP客户端,配置文件的位置会有所不同。对于 克劳德桌面选集,转到文件->设置->开发人员选项卡,然后按编辑配置按钮。这将在JSON配置文件的目录位置打开文件查找器。
接下来,您需要使用文本编辑器手动编辑配置JSON文件。确保使用完整的文件路径。
{
"mcpServers": {
"MayaMCP": {
"command": "[FULL PATH TO MayaMCP PROJECT]/.venv/Scripts/python.exe",
"args": [
"[FULL PATH TO MayaMCP PROJECT]/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模块。该工具的设计中有一些程序员注意事项。
- Python文件名和函数名必须相同。确保它是独一无二的。
- Python函数将由服务器和Maya加载。函数之外的任何代码都必须能够加载到独立的Python中。这意味着任何导入(如maya.cmds)都应该在函数范围内完成。MCP服务器加载函数,以便检查函数签名,通过JSON-RPC将信息发送到MCP客户端。
- 函数签名将被解析,并且必须在函数参数注释中包含任何类型。
- 当您的函数被发送到Maya时,它将在am \_mcp_Maya_scope函数内起作用。这提供了许多好处。发送到Maya的函数不会对在Maya中运行的Python全局空间造成太大污染。此外,任何抛出的异常都将被捕获并作为错误返回给MCP客户端。
- 通常,您希望返回列表或字典,或者在出现错误时抛出异常。
- 适当地命名您的函数和参数,以便LLM能够理解该操作。包含函数文档字符串。
- 默认参数是好的。
- 错误检查很好,因此错误消息可以提供更好的失败解释。
我建议查看此项目中现有的Maya工具作为示例。
测试
目前,Maya MCP仅在Windows上进行了测试。应该可以在Linux和Mac上运行,因为所有东西都使用标准的Python。
未来想法
MCP还处于早期阶段,还有很多需要改进的地方。这里有一些想法。
- 展示更多功能。
- 使用提示工程进行改进,特别是描述Maya的使用和数据关系。
- 所有内容都注册为工具,允许资源和提示。
- 可以在Maya中找到任何具有MCP工具的插件。也许类似于在Maya中使用名为MCP的任何目录查看Python。所有这些都可以进行检查,然后提供给MCP客户。
许可证
麻省理工学院
链接
重要提示
这个项目是在我个人的时间和设备上完成的,目的是了解MCP。该项目与我目前的雇主无关,也不代表他们的工作或利益。
