项目简介
本项目 '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 应用场景需求。
安装步骤
-
构建 MCP 服务器:
- 进入 'unity-mcp-server' 目录: 'cd unity-mcp-server'
- 安装依赖: 'npm install'
- 构建项目: 'npm run build'
- 构建完成后,服务器代码将位于 'unity-mcp-server/dist/index.js'。
-
配置 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' 文件路径,请替换为实际路径)
-
打开 Unity 示例项目:
- 打开 'unity-mcp-sample' 目录下的 Unity 项目。
- 在 Unity 编辑器中,选择 "UnityMCP/Show Window" 打开 Unity MCP 控制窗口。
- 点击 "Start Server" 按钮启动 Unity 端的 TCP 服务器。
基本使用方法
- 启动 MCP 服务器和 Unity 客户端 (示例项目): 按照安装步骤启动 MCP 服务器和 Unity 示例项目。
- 连接 MCP 服务器: Claude Desktop (或其他 MCP 客户端) 应该能够根据配置连接到 MCP 服务器。Unity MCP 控制窗口会显示连接状态。
- 调用工具: 在 Claude Desktop (或其他 MCP 客户端) 中,可以调用 'create_object_tool' 工具,并传递 JSON 格式的参数,例如:
{ "tool_call": { "name": "create_object_tool", "parameters": { "shape": "cube", "position": { "x": 0, "y": 1, "z": 0 } } } } - 查看结果: 如果工具调用成功,Unity 场景中会在指定位置创建一个 Cube 对象。
创建自定义工具
你可以参考示例中的 'createObject.ts' (TypeScript 服务器端) 和 'CreateObjectTools.cs' (Unity 客户端) 创建自定义工具。
关键步骤:
- 定义工具接口 (TypeScript): 在 'unity-mcp-server/src/tools' 目录下创建新的工具文件,定义工具的名称、描述、参数 schema (使用 zod) 和 'execute' 函数。'execute' 函数负责将请求转发给 Unity 客户端。
- 实现工具逻辑 (Unity C#): 在 'unity-mcp-sample/Assets/UnityMCP/Editor/Tools' 目录下创建新的 C# 脚本,实现工具的具体逻辑。确保工具名称与 TypeScript 端定义的名称一致。
- 在 Unity 端注册工具: 在 'UnityMCPWindow.cs' 的 'HandleClientAsync' 函数中,添加新的 'case' 分支来处理新的工具调用。
信息
分类
开发者工具