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项目。

Package
dsh-unity-bridge
Compatibility
Unverified
Version
0.2.0
License
MIT
Last updated
Oct 22, 2026

Install

$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_TIMEOUT170(秒)server 等 Unity 回一次响应的超时上限;不设时 mcp-unity 默认 10 秒,编译 / 跑测试这类慢操作会被截断(见「超时」一节)

端口/主机默认读项目里的 ProjectSettings/McpUnitySettings.json。启动时插件会把最终端口写进 UNITY_PORT,把主机名经 formatHost 规范化后写进 UNITY_HOST(localhost 不写,沿用默认值), 保证 server 和探测结果一致;探测关闭时也一样格式化,所以 IPv6 不会漏方括号。

env: 里的空字符串表示“自动”。MCP_UNITY_PROJECT: '' 与删掉这一行等价。