返回市场
玛雅MCP

玛雅MCP

作者:PatrickPalmer31 星标更新:2025-05-12

项目介绍

Maya MCP

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 安装,因为包需求较少。要安装虚拟环境:

  1. 下载此项目。
  2. 在项目目录中使用 Python 3.10+ 创建虚拟环境。python -m venv .venv
  3. 激活虚拟环境
    • Windows: .venv\Scripts\activate.bat
    • Mac/Linux: source .venv/bin/activate.sh
  4. pip install -r requirements.txt

如前所述,Maya 不需要安装任何内容。

MCP 客户端配置

根据您使用的 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 通信

当 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 时,它将被封装在 _mcp_maya_scope 函数中。这提供了许多好处。发送到 Maya 的函数不会过多地污染运行在 Maya 中的 Python 全局空间。此外,任何抛出的异常都将被捕获并作为错误返回给 MCP 客户端。
  • 通常,您希望返回一个列表或字典,或者在发生错误时抛出异常。
  • 适当地命名您的函数和参数,以便 LLM 可以理解操作。包括一个函数文档字符串。
  • 默认参数是好的。
  • 错误检查是好的,以便错误消息可以提供更好的失败解释。

我建议查看此项目中的现有 Maya 工具作为示例。

测试

目前,Maya MCP 只在 Windows 上进行了测试。应该可以在 Linux 和 Mac 上工作,因为一切都使用标准 Python。

未来想法

MCP 还处于早期阶段,有很多改进的空间。这里有一些想法。

  • 暴露更多功能。
  • 改进提示工程,特别是描述 Maya 的使用和数据关系。
  • 所有内容都注册为工具,允许资源和提示。
  • 可能可以在 Maya 中找到具有 MCP 工具的任何插件。也许可以通过查看 Maya 中的 PYTHONPATH 并查找任何名为 MCP 的目录来实现。所有这些都可以被检查并提供给 MCP 客户端。

许可证

MIT

链接

重要说明

此项目是在我的个人时间和设备上完成的,目的是了解 MCP。该项目与我当前雇主无关,不代表他们的工作或利益。