返回市场
UnityMCP服务器

UnityMCP服务器

作者:Arodoid480 星标更新:2025-03-19

项目介绍

UnityMCP

smithery badge

<a href="https://github.com/Arodoid/UnityMCP/pulls"><img src="https://img.shields.io/github/issues-pr/Arodoid/UnityMCP" alt="Pull Requests Badge"/></a> <a href="https://github.com/Arodoid/UnityMCP/issues"><img src="https://img.shields.io/github/issues/Arodoid/UnityMCP" alt="Issues Badge"/></a>

<a href="https://github.com/Arodoid/UnityMCP/stargazers"><img src="https://img.shields.io/github/stars/Arodoid/UnityMCP" alt="Stars Badge"/></a> <a href="https://github.com/Arodoid/UnityMCP/network/members"><img src="https://img.shields.io/github/forks/Arodoid/UnityMCP" alt="Forks Badge"/></a>

UnityMCP 是一个强大的 Unity 编辑器插件,实现了模型上下文协议(MCP),使 Unity 和 AI 助手之间能够无缝集成。它提供了实时编辑器状态监控、远程命令执行以及全面的日志记录功能。

UnityMCP

架构

该项目由两个主要组件组成:

1. Unity 插件(UnityMCPPlugin)

这是一个 Unity 编辑器插件,提供以下功能:

  • 连接状态和监控的调试窗口
  • 实时通信的 WebSocket 客户端
  • C# 代码执行引擎
  • 全面的日志系统
  • 编辑器状态跟踪和序列化

2. MCP 服务器(unity-mcp-server)

这是一个基于 TypeScript 的 MCP 服务器,通过标准化工具暴露 Unity 编辑器的功能:

可用工具

  1. get_editor_state

    • 获取当前 Unity 编辑器状态
    • 包括活动的 GameObject、选择状态、播放模式状态
    • 提供场景层次结构和项目结构
    • 支持不同的输出格式(原始、仅脚本、无脚本)
  2. execute_editor_command

    • 在 Unity 编辑器中直接执行 C# 代码
    • 完全访问 UnityEngine 和 UnityEditor API
    • 带有全面错误处理的实时执行
    • 命令超时保护
  3. get_logs

    • 获取并过滤 Unity 编辑器日志
    • 支持按类型、内容和时间戳过滤
    • 自定义输出字段
    • 优化性能的缓冲管理

安装

通过 Smithery 安装

要通过 Smithery 自动安装 UnityMCP 到 Claude Desktop:

npx -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 服务器设置

cd unity-mcp-server
npm install
npm run build

使用

启动服务器

cd unity-mcp-server
node build/index.js

从 Unity 连接

  1. 打开您的 Unity 项目
  2. 打开 UnityMCP 调试窗口(窗口 > UnityMCP > 调试窗口)
  3. 插件会自动尝试连接到 MCP 服务器
  4. 在调试窗口中监控连接状态和日志

示例:执行命令

// 将选中的对象居中
Selection.activeGameObject.transform.position = Vector3.zero;

// 切换播放模式
EditorApplication.isPlaying = !EditorApplication.isPlaying;

// 创建一个新的立方体
GameObject.CreatePrimitive(PrimitiveType.Cube);

开发

构建服务器

cd unity-mcp-server
npm run build

监视更改

npm run watch

检查 MCP 通信

npm run inspector

技术细节

通信协议

  • 基于 WebSocket 的通信,端口 8080
  • 双向实时更新
  • 所有通信采用 JSON 消息格式
  • 自动重连处理

安全特性

  • 命令执行超时保护
  • 错误处理和验证
  • 日志缓冲管理
  • 连接状态监控

错误处理

系统提供了全面的错误处理机制,包括:

  • 连接问题
  • 命令执行失败
  • 编译错误
  • 运行时异常
  • 超时情况

贡献

  1. 分叉仓库
  2. 创建您的功能分支 (git checkout -b feature/amazing-feature)
  3. 提交您的更改 (git commit -m '添加了惊人的功能')
  4. 推送到分支 (git push origin feature/amazing-feature)
  5. 打开 Pull Request

许可证

此项目根据知识共享署名-非商业性使用 4.0 国际许可协议(CC BY-NC 4.0)授权。