UnityMCP 
UnityMCP是一个功能强大的Unity编辑器插件,它实现了模型上下文协议(MCP),实现了Unity和AI助手之间的无缝集成。它提供实时编辑器状态监控、远程命令执行和全面的日志记录功能。
建筑
该项目由两个主要部分组成:
1.Unity插件(UnityMCP插件)
Unity编辑器插件,提供:
- 用于连接状态和监控的调试窗口
- 用于实时通信的WebSocket客户端
- C#代码执行引擎
- 综合测井系统
- 编辑器状态跟踪和序列化
2.MCP服务器(unity MCP服务器)
基于TypeScript的MCP服务器,通过标准化工具公开Unity编辑器功能:
可用工具
get_editor_state
- 检索当前Unity编辑器状态
- 包括活动游戏对象、选择状态、游戏模式状态
- 提供场景层次和项目结构
- 支持不同的输出格式(原始、仅脚本、无脚本)
execute_editor_command
- 直接在Unity编辑器中执行C#代码
- 完全访问UnityEngine和UnityEditor API
- 实时执行,全面错误处理
- 命令超时保护
get_logs
- 检索和过滤Unity编辑器日志
- 支持按类型、内容和时间戳进行过滤
- 可定制的输出字段
- 缓冲区管理,实现最佳性能
安装
通过Smithery安装
通过以下方式自动安装克劳德桌面版UnityMCP 史密瑟里:
BASH``` 1npx -y @smithery/cli install @Arodoid/unitymcp —client claude
### 先决条件
- Unity 2022.3或更高版本
- Node.js 18或更高版本
- npm 9或更高版本
### Unity插件设置
1. 复制 `UnityMCPPlugin` 文件夹到Unity项目的Assets目录
2. 打开Unity编辑器
3. 通过Unity的顶部菜单栏>UnityMCP>调试窗口访问插件
### MCP服务器设置
BASH```
1
2
3cd unity-mcp-server
npm install
npm run build
用法
启动服务器
BASH``` 1 2cd unity-mcp-server node build/index.js
### 从Unity连接
1. 打开Unity项目
2. 打开UnityMCP调试窗口(窗口>UnityMCP>调试窗口)
3. 插件将自动尝试连接到MCP服务器
4. 在调试窗口中监视连接状态和日志
### 示例:执行命令
CSHARP```
1
2
3
4
5
6// Center the selected object
Selection.activeGameObject.transform.position = Vector3.zero;
// Toggle play mode
EditorApplication.isPlaying = !EditorApplication.isPlaying;
// Create a new cube
GameObject.CreatePrimitive(PrimitiveType.Cube);
发展
构建服务器
BASH``` 1 2cd unity-mcp-server npm run build
### 观察变化
BASH```
1npm run watch
检查MCP通信
BASH``` 1npm run inspector
## 技术细节
### 通信协议
- 基于WebSocket的8080端口通信
- 双向实时更新
- 所有通信的JSON消息格式
- 自动重新连接处理
### 安全功能
- 命令执行超时保护
- 错误处理和验证
- 日志缓冲区管理
- 连接状态监控
### 错误处理
该系统为以下方面提供全面的错误处理:
- 连接问题
- 命令执行失败
- 编译错误
- 运行时异常
- 超时情况
## 贡献
1. 分叉存储库
2. 创建功能分支(`git checkout -b feature/amazing-feature`)
3. 提交您的更改(`git commit -m 'Add amazing feature'`)
4. 推到分支(`git push origin feature/amazing-feature`)
5. 打开拉取请求
## 许可证
本项目根据知识共享署名-非商业4.0国际协议(CC BY-NC 4.0)获得许可。