项目简介

本项目 'unity-mcp-visualscripting' 是一个演示 Unity 与 MCP 服务器交互的示例工程。它包含一个 TypeScript 开发的 MCP 服务器和一个 Unity 客户端,展示了如何通过 MCP 协议在 Unity 中注册和调用工具,扩展 LLM 的能力。

注意: 当前示例的 TCP 结构由于 TypeScript SDK 的问题,存在客户端和服务器反转的情况。Unity 实际上作为 TCP 服务器运行,而 MCP 服务器作为 TCP 客户端连接 Unity。

主要功能点

  • 工具注册与执行: 示例中展示了如何注册和执行一个简单的 'create_object_tool' 工具,该工具可以在 Unity 场景中创建 3D 对象 (Cube, Sphere, Capsule)。
  • Unity 集成: 通过 Unity 编辑器窗口 ('UnityMCPWindow') 管理 MCP 服务器的连接状态,并接收和处理来自 MCP 服务器的指令。
  • 可扩展性: 项目结构清晰,允许开发者轻松扩展和创建自定义工具,以满足不同的 LLM 应用场景需求。

安装步骤

  1. 构建 MCP 服务器:

    • 进入 'unity-mcp-server' 目录: 'cd unity-mcp-server'
    • 安装依赖: 'npm install'
    • 构建项目: 'npm run build'
    • 构建完成后,服务器代码将位于 'unity-mcp-server/dist/index.js'。
  2. 配置 Claude Desktop (或其他 MCP 客户端):

    • 打开 Claude Desktop (或其他 MCP 客户端) 的设置,找到开发者配置 (Developer-Edit Config) 或类似选项。
    • 在配置文件中添加 'mcpServers' 配置项,指定服务器名称、启动命令和参数。
    • 示例配置 (请根据实际文件路径调整 'args' 中的路径):
      {
          "mcpServers": {
            "unity-mcp": {
              "command": "node",
              "args":["/path/to/your/unity-mcp-template/unity-mcp-server/dist/index.js"]
            }
          }
        }
      配置参数说明:
      • 'server name': 'unity-mcp' (服务器名称,客户端配置中用于标识服务器)
      • 'command': 'node' (Node.js 运行时命令,用于执行 JavaScript 代码)
      • 'args': '["/path/to/your/unity-mcp-template/unity-mcp-server/dist/index.js"]' (服务器启动参数,指向构建后的 'index.js' 文件路径,请替换为实际路径)
  3. 打开 Unity 示例项目:

    • 打开 'unity-mcp-sample' 目录下的 Unity 项目。
    • 在 Unity 编辑器中,选择 "UnityMCP/Show Window" 打开 Unity MCP 控制窗口。
    • 点击 "Start Server" 按钮启动 Unity 端的 TCP 服务器。

基本使用方法

  1. 启动 MCP 服务器和 Unity 客户端 (示例项目): 按照安装步骤启动 MCP 服务器和 Unity 示例项目。
  2. 连接 MCP 服务器: Claude Desktop (或其他 MCP 客户端) 应该能够根据配置连接到 MCP 服务器。Unity MCP 控制窗口会显示连接状态。
  3. 调用工具: 在 Claude Desktop (或其他 MCP 客户端) 中,可以调用 'create_object_tool' 工具,并传递 JSON 格式的参数,例如:
    {
        "tool_call": {
            "name": "create_object_tool",
            "parameters": {
                "shape": "cube",
                "position": { "x": 0, "y": 1, "z": 0 }
            }
        }
    }
  4. 查看结果: 如果工具调用成功,Unity 场景中会在指定位置创建一个 Cube 对象。

创建自定义工具

你可以参考示例中的 'createObject.ts' (TypeScript 服务器端) 和 'CreateObjectTools.cs' (Unity 客户端) 创建自定义工具。

关键步骤:

  1. 定义工具接口 (TypeScript): 在 'unity-mcp-server/src/tools' 目录下创建新的工具文件,定义工具的名称、描述、参数 schema (使用 zod) 和 'execute' 函数。'execute' 函数负责将请求转发给 Unity 客户端。
  2. 实现工具逻辑 (Unity C#): 在 'unity-mcp-sample/Assets/UnityMCP/Editor/Tools' 目录下创建新的 C# 脚本,实现工具的具体逻辑。确保工具名称与 TypeScript 端定义的名称一致。
  3. 在 Unity 端注册工具: 在 'UnityMCPWindow.cs' 的 'HandleClientAsync' 函数中,添加新的 'case' 分支来处理新的工具调用。

信息

分类

开发者工具