项目简介

unity-mcp-playtest 是一个示例项目,展示了如何使用 Model Context Protocol (MCP) 构建一个 Unity 编辑器扩展服务器。该服务器允许大型语言模型 (LLM) 客户端(如 Claude Desktop)通过 MCP 协议调用预定义的工具,从而控制和扩展 Unity 编辑器的功能。本项目包含一个基于 TypeScript 的 MCP 服务器和一个 Unity 示例项目,演示了如何在 Unity 中集成和使用 MCP 服务器。

主要功能点

  • 工具注册与执行: 服务器端 (TypeScript) 注册了工具 (例如 'create_object_tool'),客户端可以请求服务器执行这些工具。示例中提供了一个创建 Unity 对象的工具。
  • Unity 编辑器集成: Unity 示例项目 (C#) 作为一个 MCP 工具的执行环境,接收来自 MCP 服务器的指令,并在 Unity 编辑器中执行相应的操作(例如创建游戏对象)。
  • TCP 通信: MCP 服务器和 Unity 编辑器之间通过 TCP 协议进行通信。
  • 简单的工具示例: 提供了一个 'create_object_tool' 工具,演示了如何从 MCP 服务器向 Unity 发送指令以创建基本游戏对象(立方体、球体、胶囊体)。
  • 可扩展性: 项目结构清晰,易于扩展和添加新的工具,以满足更复杂 Unity 编辑器自动化和 LLM 集成的需求。

安装步骤

  1. 克隆仓库: 首先克隆 'unity-mcp-playtest' 仓库到本地。
  2. 构建 MCP 服务器:
    • 进入 'unity-mcp-server' 目录: 'cd unity-mcp-playtest/unity-mcp-server'
    • 安装依赖: 'npm install'
    • 构建项目: 'npm run build'
    • 构建完成后,服务器代码将位于 'unity-mcp-server/dist/index.js'。
  3. 打开 Unity 示例项目: 使用 Unity 打开 'unity-mcp-sample' 目录下的 Unity 项目。
  4. 启动 Unity MCP 窗口: 在 Unity 编辑器中,点击菜单栏 'UnityMCP' -> 'Show Window',打开 Unity MCP 控制窗口。
  5. 启动 Unity 服务器: 在 Unity MCP 窗口中,点击 "Start Server" 按钮,启动 Unity 端的 TCP 服务器。 此时 Unity 将监听 127.0.0.1:6336 端口,等待 MCP 服务器的连接和指令。

服务器配置

要将此 MCP 服务器与 MCP 客户端(例如 Claude Desktop)连接,您需要配置客户端以指向此服务器。以下是一个 Claude Desktop 的配置示例,您需要将其添加到 Claude Desktop 的开发者配置 (Developer-Edit Config) 中:

{
  "mcpServers": {
    "unity-mcp": {
      "command": "node",
      "args":["[您的仓库路径]/unity-mcp-playtest/unity-mcp-server/dist/index.js"]
    }
  }
}

配置参数说明:

  • '"unity-mcp"': 服务器名称,您可以自定义。
  • '"command": "node"': 启动服务器的命令,这里使用 Node.js 运行时环境。
  • '"args": ["path/to/unity-mcp-server/dist/index.js"]': 启动命令的参数,指向构建后的 MCP 服务器入口文件 'index.js' 的绝对路径。 请务必将 '[您的仓库路径]' 替换为您本地仓库的实际路径。

基本使用方法

  1. 启动 MCP 服务器: 在命令行中,进入 'unity-mcp-server' 目录,运行 'npm run start' 命令,启动 MCP 服务器。 (或者直接使用 Claude Desktop 启动,如果已配置)
  2. 启动 Unity 编辑器和 Unity MCP 窗口,并启动 Unity 服务器 (如安装步骤所述)
  3. 连接 MCP 客户端: 配置并启动 MCP 客户端(如 Claude Desktop),客户端应该能够检测到并连接到名为 "unity-mcp" 的 MCP 服务器。
  4. 调用工具: 在 MCP 客户端中,您可以指示 LLM 调用已注册的工具,例如 'create_object_tool'。 客户端需要根据工具的 schema 提供相应的参数(例如 shape 和 position)。
  5. Unity 执行工具: MCP 服务器接收到客户端的工具调用请求后,会将指令通过 TCP 连接发送到 Unity 编辑器。Unity 端的服务器接收到指令后,会在 Unity 编辑器中执行相应的操作(例如创建指定的游戏对象),并将结果返回给 MCP 服务器,最终返回给客户端。

注意: 由于仓库 README 中 "TODO List" 部分提到 "Change TCP structure",当前实现可能存在 TCP 客户端/服务器角色反转的情况,这可能会影响某些 MCP 客户端的兼容性。请关注仓库的 issue 讨论以获取最新的信息和可能的修复方案。

信息

分类

开发者工具