Unity编辑器桥接工具

连接Unity Editor与Claude Code的模型上下文协议(MCP)工具包,提供91种编辑器控制、场景管理和资源操作功能。

  • by jaewonjung6446
  • JavaScript
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 jaewonjung6446/unity-mcp

使用说明

Unity MCP

连接Unity Editor和Claude Code的模型上下文协议(MCP)包。

建筑

Claude Code ←(STDIO)→ Node.js MCP Server ←(WebSocket :8090)→ Unity Editor (C#)

项目结构

unity-mcp/
├── server/                  # Node.js MCP 브릿지 서버 (TypeScript)
│   ├── bin/cli.ts           # CLI 엔트리포인트
│   ├── src/
│   │   ├── index.ts         # MCP 서버 엔트리포인트
│   │   ├── unity-bridge.ts  # WebSocket 클라이언트 (Unity 연결)
│   │   ├── types.ts         # 요청/응답 타입 정의
│   │   └── tools/index.ts   # 91개 도구 정의
│   └── build/               # 컴파일된 JS 출력
└── unity-package/           # Unity 패키지 (C#)
    └── Editor/
        ├── McpServer.cs     # WebSocket 서버 (연결/디스패치)
        ├── McpServerMenu.cs # 에디터 메뉴 통합
        ├── McpSettings.cs   # 설정 관리
        ├── ConsoleLogBuffer.cs  # 콘솔 로그 버퍼
        ├── ShaderGraphHelper.cs # ShaderGraph 유틸리티
        ├── IToolHandler.cs  # 도구 핸들러 인터페이스
        └── Handlers/        # 90개 핸들러 구현

安装

1.Unity套餐

Packages/manifest.json添加到:

"com.jaewon.mcp-unity": "https://github.com/jaewonjung6446/unity-mcp.git?path=unity-package"
  • 需要Unity 2022.3或更高版本
  • 依赖性: com.unity.nuget.newtonsoft-json, com.unity.editorcoroutines

2.构建MCP Server

cd server
npm install
npm run build

3.MCP配置

.mcp.json:

{
  "mcpServers": {
    "unity": {
      "command": "node",
      "args": ["D:\\Unity\\Izakoza\\unity-mcp\\server\\build\\cli.js"]
    }
  }
}

Multiple Unity Projects(多项目设置)

要在一个本地同时运行多个Unity项目的MCP,必须使用不同的端口。

1.设置Unity特定项目的端口

每个Unity项目的 ProjectSettings/McpUnitySettings.json:

项目A:

{ "Port": 8090 }

项目B:

{ "Port": 8091 }

2.MCP服务器设置

.mcp.json在 --port 或者 -p 将端口指定为参数:

{
  "mcpServers": {
    "unity-project-a": {
      "command": "node",
      "args": ["D:\\Unity\\unity-mcp\\server\\build\\cli.js", "--port", "8090"]
    },
    "unity-project-b": {
      "command": "node",
      "args": ["D:\\Unity\\unity-mcp\\server\\build\\cli.js", "--port", "8091"]
    }
  }
}

端口优先级

  1. 命令行参数(--port)-最优先
  2. ProjectSettings/McpUnitySettings.json 配置文件
  3. 默认值: 8090

可用工具(91)

编辑器控件(7)

工具 说明
get_state 编辑器状态(播放模式、活动场景、平台)
get_selection 当前选定的对象
set_selection 更改/禁用编辑器选择(多选,选择资源)
pause_editor 暂停/关闭Play模式
step_frame 暂停时前进1帧
undo_redo 撤消/重做(步骤20)
clear_console 清除控制台窗口和日志缓冲区

场景(6)

工具 说明
open_scene 精简打开(additive选项)
close_scene 关闭场景
save_scene 保存活动的精简文件
get_scenes_list 构建设置/加载/完整场景列表
get_scene_hierarchy 精简分层快照
set_scene_view_camera 控制Scene View相机(位置、旋转、缩放、预设视图)

游戏对象(9)

工具 说明
get_game_object GameObject信息(ID/名称/路径)
create_game_object 创建GameObject(empty,primitive,位置/旋转/缩放)
delete_game_object 删除GameObject(Undo支持)
set_game_object_property 设置属性(名称、标签、图层、位置、旋转、缩放等)
duplicate_game_object 复制(数量,偏移选项)
group_game_objects 将多个对象分组为空父项
align_game_object 按轴对齐(min/max/center/first)
set_parent 更改/关闭父子关系
focus_game_object 在Scene View中聚焦对象

组件(5)

工具 说明
get_component_data 读取元件序列化字段值
add_component 添加组件(Rigidbody、AudioSource等)
remove_component 移除元件
set_component_property 设置元件属性(int、float、Color、Vector等)
find_objects_by_criteria 按标签/图层/组件/名称搜索对象

预制件(3)

工具 说明
open_prefab 打开PreFab编辑模式
create_prefab 使用瘦对象创建预Fab资源
instantiate_prefab 将FreeFab实例化到场景中

资产管理(13)

工具 说明
create_script 创建C#脚本
execute_code 执行C#代码
get_asset_contents 阅读资源内容
get_asset_importer 查看导入设置
copy_asset 复制资源
import_asset 导入资源
delete_asset 删除资源/文件夹
move_asset 移动/重命名资源
create_folder 创建文件夹(递归)
get_asset_dependencies 查询资源依赖性
find_references 反向搜索资源引用
get_asset_preview 资源预览缩略图图像
refresh_assets 刷新AssetDatabase(Ctrl+R)

搜索与验证(4)

工具 说明
search 搜索资源或精简对象
screenshot Scene/Game视图截图
test_active_scene 活动的精简验证(缺少脚本、材料等)
get_missing_references 扫描场景/资源中的缺失参照

着色器图(5)

工具 说明
create_shader_graph 创建ShaderGraph(URP Lit/Unlit/Canvas模板)
add_shader_graph_node 添加节点(SampleTexture2D、Color、Multiply等)
connect_shader_graph_nodes 节点之间的连接
add_shader_graph_property 添加属性(Color、Float、Texture 2D等)
get_shader_graph_node_types 查看支持节点类型/插槽信息

材质与渲染(7)

工具 说明
create_material 创建材质(指定着色器)
set_material_property 材料属性设置(color、float、texture等)
set_game_object_material 将材料分配给GameObject
analyze_scene 场景分析(渲染器、材质、着色器、光源)
get_render_settings 查看渲染设置(ambient、fog、skybox、reflections)
set_render_settings 更改渲染设置(fog、ambient、skybox等)
set_light_property 设置光源属性(类型、颜色、强度、阴影等)

卷/后处理(2)

工具 说明
get_volume_settings 浏览URP Volume设置(Bloom、Vignette等)
set_volume_component 设置体积元件(Bloom、ColorAdjustments等)

用户界面(9)

工具 说明
create_ui_element 创建UI元素(自动生成Text、Button、Slider等,Canvas)
find_ui_elements 扫描Canvas UI元素(路径、类型、状态)
inspect_ui_layout 检测UI布局问题(重叠、屏幕外、小触摸区域)
click_ui_element UI点击模拟(Play Mode)
set_ui_input 输入InputField文本(Play Mode)
get_ui_state 查询UI元素状态(Button、Toggle、Slider等)
drag_ui_element UI拖放模拟(Play Mode)
scroll_ui 滚动事件模拟(Play Mode)
set_ui_value 滑块/切换/下拉/滚动条값 설정

QA&播放模式(6)

工具 说明
set_play_mode 进入/退出Play模式
get_console_logs 查询控制台日志(error、warning、exception筛选器)
wait_for_seconds 等待(0.1至30秒)
wait_until 等待满足条件(对象激活、文本匹配等)
simulate_input 模拟键盘/鼠标输入(Play Mode)
set_time_scale 设置Time.timeScale(慢速、倍速)

动画(2)

工具 说明
get_animator_state 查看Animator状态、过渡信息和参数值
set_animator_parameter 设置Animator参数(Float、Int、Bool、Trigger)

物理(三)

工具 说明
raycast 物理播放(世界/屏幕坐标,多重点击)
set_rigidbody_property 设置Rigidbody/2D属性(质量、拖动、重力等)
apply_force 对Rigidbody施加力(Force,Impulse,VelocityChange)

音频(2)

工具 说明
get_audio_sources 查看场景中的所有AudioSource信息
play_audio 音频播放/停止/暂停(可更改剪辑)

导航(2)

工具 说明
get_navmesh_info NavMesh信息,NavMeshAgent/Obstacle查询
set_navmesh_destination 设置/停止NavMeshAgent目的地(Play Mode)

场景系统(2)

工具 说明
get_particle_system_info ParticleSystem信息(模块设置、状态、派对大小)
get_terrain_info Terrain信息(大小、分辨率、图层、树)

项目信息(4)

工具 说明
get_project_settings 查看项目设置(player、quality、physics、time)
get_packages 安装的软件包列表
get_build_settings 构建设置(目标平台、场景、开发模式)
get_performance_stats 运行时性能统计(FPS、内存、对象数量)

发展

cd server
npm install
npm run build          # TypeScript 컴파일
npm run watch          # 변경 감지 자동 빌드
node build/cli.js      # 서버 실행