pixelsoyo/dsh-unity-bridge ↗★ 0
dsh-unity-bridge
Drive the Unity Editor (Unity 2022.3 and newer, Unity 6 and later included) from DSH via the mcp-unity bridge. 适合Unity开发者,允许智能体直接读取和操作本地Unity项目。
설치
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:pixelsoyo/dsh-unity-bridge安全边界(使用前请读)
装上这个插件等于把一个能改你项目的执行者接进来,边界如下:
| 项 | 行为 |
|---|---|
| 桥接令牌 | 只读取文件路径,值仅用于 Basic 握手头;不复制、不打印,日志里只有 Library/McpUnity/bridge-token 这个路径 |
| 网络 | 只连本机的 127.0.0.1 / [::1](未改 Host / UNITY_HOST 时),不向外发任何数据;Unity 侧 AllowRemoteConnections: false 是默认值 |
| 子进程环境 | 插件只额外加 4 个变量(MCP_UNITY_PROJECT、MCP_UNITY_PROBE、ELECTRON_RUN_AS_NODE、UNITY_REQUEST_TIMEOUT);其余父进程环境默认继承、按黑名单剔除:名字里含 KEY / PASSWORD / SECRET / TOKEN 的变量与所有 DSH_* 不会传进去(mcp-client 的 scrubbedParentEnv)。这不是白名单,凭据形状不同的变量仍会继承 |
| 执行项目内代码 | 启动时会 import 项目里 Library/PackageCache/com.gamelovers.mcp-unity@*/Server~/build/index.js,那是在 DSH 宿主 Node 进程里运行的第三方代码 —— 只对你信任的 Unity 项目启用本插件 |
| 写操作 | 模型可以增删改 GameObject/组件、创建/保存场景与预制体、切 Play Mode、跑测试 —— 会改并保存你的项目,请在版本控制下使用 |
| 执行代码类工具 | execute_menu_item 可触发任意菜单逻辑;add_package 能安装会执行编辑器代码的包,默认被 Unity 侧 AllowPackageInstallation: false 关闭 |
| 无人值守 | Unity 没开时 server 仍会启动,工具调用会重连失败;但不会在后台改文件 |
两点补充:
- 同一个 profile 里不要再启用另一个也用
serverName: unity的 bundle(例如旧版dsh-controlunity):重名时后加载的那条起不来,工具前缀也会互相覆盖。 - Unity 没开时工具调用不会立刻失败:请求会进 mcp-unity 的命令队列,约 60 秒后报
Command expired after 60000ms in queue(CommandQueue的defaultTimeout: 60000)。
配置项
都在 cordis.patch.yml 的 env: 里(改完重载插件生效):
| 变量 | 默认 | 说明 |
|---|---|---|
MCP_UNITY_PROJECT | 空 = 自动 | 直接锁定项目根目录(含 Assets + ProjectSettings 的那层) |
MCP_UNITY_PROBE | 开 | 0 关闭握手探测(多项目时只按“最近使用”排序) |
MCP_UNITY_SEARCH_ROOTS | 自动 | 扫描起点,; 或 , 分隔 |
MCP_UNITY_SCAN | 关 | 1 强制每次都做文件系统扫描 |
MCP_UNITY_SETTINGS_PATH | 自动 | 直接指定项目的 ProjectSettings/McpUnitySettings.json |
MCP_UNITY_AUTH_TOKEN_PATH | 自动 | 直接指定令牌文件(默认 Library/McpUnity/bridge-token) |
UNITY_PORT | 项目设置 | 强制端口,必须和 Unity 实际监听的一致(见下节) |
UNITY_HOST | 自动 | 强制地址;一般不用填,握手探测会自动区分 127.0.0.1 / [::1] |
UNITY_REQUEST_TIMEOUT | 170(秒) | server 等 Unity 回一次响应的超时上限;不设时 mcp-unity 默认 10 秒,编译 / 跑测试这类慢操作会被截断(见「超时」一节) |
端口/主机默认读项目里的 ProjectSettings/McpUnitySettings.json。启动时插件会把最终端口写进
UNITY_PORT,把主机名经 formatHost 规范化后写进 UNITY_HOST(localhost 不写,沿用默认值),
保证 server 和探测结果一致;探测关闭时也一样格式化,所以 IPv6 不会漏方括号。
env: 里的空字符串表示“自动”。MCP_UNITY_PROJECT: '' 与删掉这一行等价。