Unity MCP服务器(Rust)
用于Unity编辑器集成的MCP(模型上下文协议)服务器,用Rust编写。
该服务器使AI助手(如Claude)能够通过标准化的MCP协议与Unity编辑器进行交互,允许场景管理、游戏对象操纵、脚本编辑等操作。
建筑
先决条件
- Rust 1.70+(通过安装 生锈)
- 在Windows上:使用C++工作负载的Visual Studio构建工具
构建命令
# Development build
cargo build
# Release build (optimized)
cargo build --release
# Run directly
cargo run -- --help二进制文件将位于 target/debug/unity-mcp (或 target/release/unity-mcp 用于发布版本)。
用法
# Default: STDIO transport (for MCP client integration)
unity-mcp
# HTTP transport with WebSocket support
unity-mcp --transport http
# Custom HTTP port
unity-mcp --transport http --http-port 8090
# Target a specific Unity instance
unity-mcp --default-instance "MyProject@abc123"
# Enable debug logging
unity-mcp --log-level debug命令行选项
| 选项 | 环境变量 | 默认值 | 描述 |
|---|---|---|---|
--transport | UNITY_MCP_TRANSPORT | stdio | 运输方式: stdio 或 http |
--http-url | UNITY_MCP_HTTP_URL | http://localhost:8080 | HTTP服务器URL |
--http-host | UNITY_MCP_HTTP_HOST | localhost | HTTP服务器绑定主机 |
--http-port | UNITY_MCP_HTTP_PORT | 8080 | HTTP服务器端口 |
--default-instance | UNITY_MCP_DEFAULT_INSTANCE | - | 目标默认Unity实例 |
--log-level | UNITY_MCP_LOG_LEVEL | info | 日志级别:跟踪、调试、信息、警告、错误 |
--pidfile | - | - | 写入PID文件的路径 |
--skip-startup-connect | UNITY_MCP_SKIP_STARTUP_CONNECT | false | 跳过初始Unity连接 |
Unity插件设置
此服务器与MCP for Unity插件配合使用,该插件必须安装在您的Unity项目中。
安装插件
- 复制
MCPForUnity文件夹到Unity项目的Assets目录,或通过Unity包管理器安装 - 打开Unity并允许插件编译
- 插件将自动开始监听MCP服务器连接
插件配置
Unity插件通过WebSocket连接到MCP服务器。默认情况下,它预期:
- Websocket URL:
ws://localhost:8080/hub/plugin - Discovery的端口范围:6400-6500(TCP)
如果您在其他端口上运行服务器,请更新Unity中的插件设置:
- 首选 窗口>Unity MCP>设置
- 更新服务器URL以匹配您的配置
连接流程
- Unity插件启动并打开与MCP服务器的WebSocket连接
- 插件使用项目信息(名称、路径、哈希)注册自己
- MCP服务器现在可以通过此连接向Unity发送命令
- 命令在Unity中执行,响应被发回
建筑
┌─────────────────┐ WebSocket ┌─────────────────┐
│ MCP Client │◄─────────────────────►│ Unity MCP │
│ (Claude, etc) │ │ Server │
└─────────────────┘ └────────┬────────┘
│
WebSocket│/TCP
│
┌────────▼────────┐
│ Unity Editor │
│ (Plugin) │
└─────────────────┘运输方式
- 工作室:MCP协议的标准输入/输出传输。当服务器由MCP客户端生成时使用。
- 超文本传输协议:支持WebSocket的HTTP服务器。适用于开发和独立运行服务器。
关键组件
- 插件中心 (
/hub/plugin):Unity插件连接的WebSocket端点 - 工具注册表:注册并执行MCP工具(manage_scene、manage_gameobject等)
- 资源注册表:提供MCP资源(editor_state、project_info等)
- 端口发现:扫描端口6400-6500以查找Unity实例(传统TCP模式)
HTTP端点
使用HTTP传输运行时(--transport http):
| 端点 | 描述 |
|---|---|
/mcp | MCP协议(流式HTTP)-适用于MCP客户端 |
/health | 健康检查-返回JSON状态 |
/hub/plugin | 用于Unity插件连接的WebSocket |
/plugin/sessions | 列出活动插件会话 |
/tools/:name | 直接工具执行(传统) |
/resources/*uri | 直接资源读取(遗留) |
/register-tools | 自定义工具注册 |
可用工具
服务器为Unity交互公开了这些MCP工具:
| 工具 | 说明 |
|---|---|
manage_scene | 场景操作(创建、加载、保存、获取层次结构、截图) |
manage_gameobject | 游戏对象CRUD和转换 |
manage_components | 添加、删除、修改组件 |
manage_asset | 资产操作(导入、创建、搜索) |
manage_material | 材质和着色器属性 |
manage_prefabs | 预制阶段作业 |
manage_script | C#脚本管理 |
manage_editor | 编辑器状态(播放/暂停/停止) |
run_tests | 执行Unity测试 |
read_console | 读取Unity控制台日志 |
| 还有更多。.. |
可用资源
| 资源URI | 描述 |
|---|---|
mcpforunity://editor_state | 当前编辑器状态和设置 |
mcpforunity://project_info | 项目元数据和路径 |
mcpforunity://instances | 连接Unity实例 |
mcpforunity://custom-tools | 项目注册的自定义工具 |
日志
日志将写入:
- 标准错误:控制台输出
- 文件:
~/.unity_mcp/logs/unity_mcp_server.log(每日轮换)
MCP客户端配置
克劳德桌面版
添加到您的Claude桌面配置(~/.config/claude/claude_desktop_config.json 在Linux/Mac上, %APPDATA%\Claude\claude_desktop_config.json 在Windows上):
{
"mcpServers": {
"unity": {
"command": "path/to/unity-mcp",
"args": []
}
}
}使用HTTP传输
如果使用HTTP传输单独运行服务器:
{
"mcpServers": {
"unity": {
"url": "http://localhost:8080"
}
}
}发展
项目结构
src/
├── main.rs # Entry point and CLI
├── lib.rs # Library root
├── config.rs # Configuration management
├── error.rs # Error types
├── server.rs # HTTP server and routing
├── middleware/ # Request context
├── models/ # Data models and types
├── services/
│ ├── tools/ # MCP tool implementations
│ └── resources/ # MCP resource implementations
├── transport/
│ ├── plugin_hub.rs # WebSocket hub for Unity
│ ├── plugin_registry.rs # Plugin session tracking
│ ├── unity_transport.rs # Transport abstraction
│ └── legacy/ # TCP framing protocol
├── telemetry/ # Usage telemetry (optional)
└── utils/ # Utility functions运行测试
cargo test代码格式化
cargo fmt代码检查
cargo clippy与Python实现的差异
这个Rust实现是Unity服务器上原始Python MCP的移植。主要区别:
- 演出:内存使用率显著降低,启动速度更快
- 单一二进制:不需要Python解释器或依赖项
- 类型安全:协议处理的编译时间保证
- 相同协议:与Unity C#插件完全兼容
Unity插件不需要修改即可与此Rust服务器一起使用。
许可证
麻省理工学院
