dsh-unity-mcp-bridge 0.6.0 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -2
- package/README.zh.md +5 -2
- package/docs/DETAILS.md +24 -11
- package/lib/index.js +39 -11
- package/package.json +2 -2
- package/skills/unity-mcp-check/SKILL.md +131 -130
- package/skills/unity-mcp-delete/SKILL.md +146 -0
- package/skills/unity-mcp-install/SKILL.md +31 -17
- package/skills/{SKILL.md → unity-mcp-tools/SKILL.md} +59 -54
- package/skills/unity-mcp-tools/reference/extensions.md +118 -0
- package/skills/{reference → unity-mcp-tools/reference}/package-manager.md +1 -1
- package/skills/unity-mcp-tools/reference/rql.md +131 -0
- package/skills/{reference → unity-mcp-tools/reference}/screenshot.md +1 -1
- package/skills/{reference → unity-mcp-tools/reference}/script.md +3 -3
- package/skills/{reference → unity-mcp-tools/reference}/tests.md +9 -9
- package/skills/unity-mcp-tools/reference/tool.md +15 -0
- package/skills/unity-mcp-update/SKILL.md +212 -0
- package/skills/unity-mcp-update-tools/SKILL.md +115 -0
- package/tools/generate-unity-mcp-catalog.ps1 +84 -20
- package/tools/normalize-toolset.ps1 +107 -0
- package/vendor/README.md +12 -8
- package/vendor/SHA256SUMS-9.3.0 +7 -0
- package/vendor/com.ivanmurzak.unity.mcp-1.6.0.tgz +0 -0
- package/vendor/manifest.json +17 -17
- package/skills/reference/rql.md +0 -86
- package/skills/reference/tool.md +0 -12
package/README.md
CHANGED
|
@@ -9,7 +9,7 @@ A DeepSeek Harness (DSH) plugin that bridges a Unity MCP server (`com.ivanmurzak
|
|
|
9
9
|
- Dormant from boot: no connection, no Unity tools — two hook tools, ~224 tokens.
|
|
10
10
|
- `/unity-mcp-tools` then `unity_mcp_activate` connects and registers `mcp__unity__*`.
|
|
11
11
|
- Enabled commands take effect on the **next** step; `unity_tools_restore` disables them and disconnects.
|
|
12
|
-
- Ships the command catalog for plugin 1.
|
|
12
|
+
- Ships the command catalog for plugin 1.6.0 (19 commands, RQL-first; regenerable from the offline package via `/unity-mcp-update-tools`) and the `/unity-mcp-install` / `/unity-mcp-delete` / `/unity-mcp-check` / `/unity-mcp-update` / `/unity-mcp-update-tools` skills.
|
|
13
13
|
- `resyncAfterTools`: after a management-tool call the bridge re-fetches `tools/list` itself, because DSH's long-lived session never receives `list_changed`.
|
|
14
14
|
|
|
15
15
|
## Install
|
|
@@ -35,7 +35,10 @@ Uninstall: `dsh plugin --profile <profile> remove dsh-unity-mcp-bridge`
|
|
|
35
35
|
| Entry | What it does |
|
|
36
36
|
|---|---|
|
|
37
37
|
| `/unity-mcp-install` | Installs the Unity-side plugin and the MCP Server into the workspace's Unity project |
|
|
38
|
-
| `/unity-mcp-
|
|
38
|
+
| `/unity-mcp-delete` | Uninstalls the Unity-MCP plugin and its extensions, cleaning config and cache leftovers |
|
|
39
|
+
| `/unity-mcp-check` | Checks plugin install, port 20000, DSH bundle loading, minimal tool set and catalog version, then runs the connect test |
|
|
40
|
+
| `/unity-mcp-update` | Checks the official CLI, the local `vendor/` offline package and the Unity plugin for updates; upgrades only after you agree |
|
|
41
|
+
| `/unity-mcp-update-tools` | Refreshes the offline package and regenerates the `/unity-mcp-tools` command and extension indexes |
|
|
39
42
|
| `/unity-mcp-tools` | Opens Unity capability: activate → find the command → enable only what the task needs |
|
|
40
43
|
| `unity_tools_restore` | Disables everything except the management tool and returns to dormant |
|
|
41
44
|
|
package/README.zh.md
CHANGED
|
@@ -9,7 +9,7 @@ English → [README.md](README.md)
|
|
|
9
9
|
- 开机即休眠:不连接、不注册任何 Unity 工具,只有 2 个钩子工具(约 224 tokens)。
|
|
10
10
|
- `/unity-mcp-tools` → `unity_mcp_activate` 才连接并注册 `mcp__unity__*`。
|
|
11
11
|
- 开启的命令**下一步**才生效;`unity_tools_restore` 关闭它们并断开,回到休眠。
|
|
12
|
-
- 随包发布插件 1.
|
|
12
|
+
- 随包发布插件 1.6.0 的命令目录(19 个命令,RQL-first;`/unity-mcp-update-tools` 可按新离线包重生成)与 `/unity-mcp-install`、`/unity-mcp-delete`、`/unity-mcp-check`、`/unity-mcp-update`、`/unity-mcp-update-tools` 五个技能。
|
|
13
13
|
- `resyncAfterTools`:管理工具调用返回后桥接自己重拉 `tools/list`,不依赖 DSH 长会话收不到的 `list_changed` 通知。
|
|
14
14
|
|
|
15
15
|
## 安装
|
|
@@ -35,7 +35,10 @@ dsh plugin --profile <profile> add git+https://github.com/xiake-1/dsh-unity-mcp-
|
|
|
35
35
|
| 入口 | 作用 |
|
|
36
36
|
|---|---|
|
|
37
37
|
| `/unity-mcp-install` | 给工作区里的 Unity 工程装上 Unity 侧插件与 MCP Server |
|
|
38
|
-
| `/unity-mcp-
|
|
38
|
+
| `/unity-mcp-delete` | 从工程里卸载 Unity-MCP 插件与扩展,并清理配置/缓存残留 |
|
|
39
|
+
| `/unity-mcp-check` | 检查插件安装、端口 20000(不是就改)、DSH bundle 加载、工具集初始化、命令目录版本,再实测连通 |
|
|
40
|
+
| `/unity-mcp-update` | 检查 CLI、本地离线包(`vendor/`)与 Unity 插件的新版本,问过你才更新 |
|
|
41
|
+
| `/unity-mcp-update-tools` | 把离线包刷到最新并重生成 `/unity-mcp-tools` 的命令索引与扩展索引 |
|
|
39
42
|
| `/unity-mcp-tools` | 打开 Unity 能力:激活 → 找到命令 → 只开本次要用的 |
|
|
40
43
|
| `unity_tools_restore` | 关闭除管理工具外的全部工具并断开,回到休眠 |
|
|
41
44
|
|
package/docs/DETAILS.md
CHANGED
|
@@ -53,9 +53,12 @@ dsh plugin --profile <profile> add file:<path-to-this-checkout>
|
|
|
53
53
|
| `keepEnabledTools` | `[]` | 恢复时额外保留的原始工具名(除 `tool-set-enabled-state` 之外)。 |
|
|
54
54
|
| `registerCatalogSkill` | `true` | 是否注册随包的命令目录技能。 |
|
|
55
55
|
| `skillName` | `unity-mcp-tools` | 技能名 / 斜杠命令。 |
|
|
56
|
-
| `registerHelperSkills` | `true` |
|
|
56
|
+
| `registerHelperSkills` | `true` | 是否注册五个辅助技能。 |
|
|
57
57
|
| `installSkillName` | `unity-mcp-install` | 安装 Unity 侧插件的技能名。 |
|
|
58
|
-
| `
|
|
58
|
+
| `deleteSkillName` | `unity-mcp-delete` | 卸载 Unity 侧插件(含扩展与残留)的技能名。 |
|
|
59
|
+
| `checkSkillName` | `unity-mcp-check` | 检查「插件已装 / 端口 20000 / DSH bundle 加载 / 工具集 / 命令目录 / 能连上 DSH」的技能名。 |
|
|
60
|
+
| `updateSkillName` | `unity-mcp-update` | 检查并(经用户同意后)更新官方 CLI、本地 `vendor/` 离线包与 Unity 插件的技能名。 |
|
|
61
|
+
| `updateToolsSkillName` | `unity-mcp-update-tools` | 刷新本地离线包并重生成命令目录与扩展索引的技能名。 |
|
|
59
62
|
| `helperSkillsModelInvocable` | `true` | 辅助技能与目录不同,会提供给模型。 |
|
|
60
63
|
| `helperSkillsUserInvocable` | `true` | 同时也是用户斜杠命令。 |
|
|
61
64
|
|
|
@@ -70,7 +73,7 @@ boot ──► DORMANT ──(/unity-mcp-tools ─► unity_mcp_activate)──
|
|
|
70
73
|
2 hook tools bridged mcp__unity__* tools
|
|
71
74
|
```
|
|
72
75
|
|
|
73
|
-
|
|
76
|
+
每个**可见**命令的完整 JSON Schema 都会进入**之后每一次**模型请求;隐藏的命令贡献为零(1.6.0 起叫“可见性”,隐藏的工具仍可按名调用但不再列给模型)。开启是临时、可回收的成本——忘记第 4 步才会变成永久成本。恢复工具的存在就是为了让第 4 步不必枚举所有已注册名字(数量本身随版本变:0.9x 是 73 个,1.2.0 是 18 个,1.6.0 是 19 个;默认可见数都是 7)。
|
|
74
77
|
|
|
75
78
|
---
|
|
76
79
|
|
|
@@ -79,9 +82,12 @@ boot ──► DORMANT ──(/unity-mcp-tools ─► unity_mcp_activate)──
|
|
|
79
82
|
| 技能 | 内容 |
|
|
80
83
|
|---|---|
|
|
81
84
|
| `/unity-mcp-install` | 检查 `unity-mcp-cli` 是否在本机(缺则 `npm install -g unity-mcp-cli`),并核对 **CLI / Unity 插件 / MCP Server 三者 lockstep**(老 CLI 的 AI agent 列表会缺项,例如没有 `kilo-code`)。在工作区内按 `ProjectSettings/ProjectVersion.txt` 定位 Unity 工程;`Packages/manifest.json` 里已有 `com.ivanmurzak.unity.mcp` 就报告,否则 `unity-mcp-cli install-plugin <project> --with-server`(同时把 `GameDev-MCP-Server` 二进制放进 CLI 托管目录 `~/.ai-game-dev/server/<rid>/`),再重读 manifest 验证。GitHub 下载失败时走本机系统代理(Clash):端口从注册表读而不是猜,`NODE_USE_ENV_PROXY=1` 必需(Node 24 的全局 `fetch` 否则忽略 `HTTP_PROXY`),`NO_PROXY` 必须让 OpenUPM/npm 直连。最后手段:带断点续传的代理下载 + 对 release `SHA256SUMS` 校验 + `--server-source` 安装。仓库带 `vendor/` 离线包时优先离线:`tools/offline-package.mjs install` 写 Unity 官方支持的 `file:` 本地 tarball 依赖(自动备份 manifest),Server 来自缓存 zip,全新工程不联网即可装好。 |
|
|
82
|
-
| `/unity-mcp-
|
|
85
|
+
| `/unity-mcp-delete` | 与 `/unity-mcp-install` 相反:定位工程 → 列出将删的 `com.ivanmurzak.unity.mcp` 与 `com.ivanmurzak.unity.mcp.*` 扩展 → 备份 `Packages/manifest.json` 与 `UserSettings/AI-Game-Developer-Config.json` → `unity-mcp-cli close --force` 关编辑器 → `unity-mcp-cli remove-plugin` 删基础包 → 手动从 manifest 移除扩展依赖 → 删配置、`Library/mcp-server` 与 `Library/PackageCache/com.ivanmurzak.unity.mcp@*` → 校验 manifest 干净。不动 DSH 桥接插件、CLI 托管 Server、其他工程与 agent 配置。 |
|
|
86
|
+
| `/unity-mcp-check` | 链路体检:**① Unity 工程里是否装了插件**(`Packages/manifest.json` 依赖 + `Library/PackageCache/com.ivanmurzak.unity.mcp@*`);**② 端口 20000 + 模式 Custom**(Unity 侧读项目 `UserSettings/AI-Game-Developer-Config.json` 的 `host` 与 `connectionMode`,不对就 `bootstrap-local --url http://localhost:20000/` 改过来并备份;Cloud 模式会跳过本地服务器自动启动,所以最后**统一重启一次编辑器**(`close --force` → `open` → `wait-for-ready`),只改 JSON 不生效;DSH 侧只看 profile 有没有把 url 覆盖成别的端口);**③ DSH 依赖与 bundle**(`package.json` 依赖 + `dsh.profile.bundles` + bundle patch 里的 `unity-mcp` 行,确认没有第二份同 `serverName` 的 stock `dsh-mcp-client`);**④ 工具集**(`configure --list` 确认只剩 `tool-set-enabled-state`;新工程 `tools: []` 时 `--disable-all-tools` 是空操作,必须用 `--disable-tools <命令目录里的显式名单>` 物化条目、再 `--enable-tools tool-set-enabled-state`,`tools/normalize-toolset.ps1` 封装并校验);**⑤ 命令目录版本自检**(`skills/unity-mcp-tools/SKILL.md` 标题行版本 vs 项目 `PackageCache` 里的包版本,不一致就重生成 + 重启 `dsh web`);**⑥ 连通性**(`unity_mcp_activate` 实测,`ECONNREFUSED` = 没人听、404/405 = 端点不对、401/403 = token 不对)。不做版本检查与升级(→ `/unity-mcp-update`),也不配 AI agent。 |
|
|
87
|
+
| `/unity-mcp-update` | 检查并更新三样东西:**官方 CLI**(npm `unity-mcp-cli`)、**本地离线包**(插件自带 `vendor/`:插件 tarball + `GameDev-MCP-Server` zip + `SHA256SUMS` + `manifest.json`)、**Unity 内插件**(`com.ivanmurzak.unity.mcp`,Server 跟随插件钉住的版本)。`tools/offline-package.mjs check --project <proj> --cli-version (unity-mcp-cli --version)` 一次比「上游最新 / `vendor/` / 项目已装 / 本机 CLI」四层,只读不改。**有更新先问用户**(列出目标版本、会动哪些文件、需要重启什么),用户明确同意才更新:CLI `npm install -g unity-mcp-cli` → 离线包 `fetch --plugin-version <latest>`(只动 `vendor/`,可单独执行,不动工程、不用重启)→ 工程 `install --project`(自动备份 manifest)+ Server 按插件钉住的版本 `install-plugin --with-server --server-source <vendor zip>` → 重生成命令目录并重启 `dsh web`。用户不同意就只给报告与可复制命令。 |
|
|
88
|
+
| `/unity-mcp-update-tools` | 只刷新「知识层」:把 `vendor/` 离线包升到上游最新(`offline-package.mjs fetch`,SHA256 校验 + 断点续传,Server 按新插件钉住的版本),再**依据新离线包**重生成 `skills/unity-mcp-tools/SKILL.md`、`reference/*.md` 与 `reference/extensions.md`。生成器直接读 tarball 解出的包目录(`-PackageRoot`,版本取自包内 `package.json`),不需要 Unity 工程。`extensions.md` 列出插件包 `extensions.catalog.json` 里的 10 个可选扩展及各自会带的命令(扩展命令本身仍不进索引,装完用 `unity-tool-list` 取实时清单)。只改 `<bridge>`,不碰工程内插件;最后提示重启 `dsh web`。 |
|
|
83
89
|
|
|
84
|
-
|
|
90
|
+
五者都遵循官方安装流程 <https://ai-game.dev/engines/unity>。设 `registerHelperSkills: false` 可不发布它们。
|
|
85
91
|
|
|
86
92
|
---
|
|
87
93
|
|
|
@@ -89,10 +95,12 @@ boot ──► DORMANT ──(/unity-mcp-tools ─► unity_mcp_activate)──
|
|
|
89
95
|
|
|
90
96
|
上游 `com.ivanmurzak.unity.mcp` 已发 **180 个 release**(`0.8.3` 2025-06-23 → `1.5.0` 2026-10-24)。改动最大的是 **`1.0.0`(2026-10-15):RQL 取代数据类工具**——两条 `feat(rql)!` breaking 把 0.9x 的 73 个细粒度命令缩成 18 个(`rql-query` / `rql-mutate` / `rql-schema`),命令目录必须跨这个版本重生成。其余大改造:`0.81.0`(MCP Server 拆成共享的 `GameDev-MCP-Server`,从此独立编号)、`0.84.0`/`0.85.0`(鉴权重做:`ConnectionConfig.Token` 迁移、`cloudToken` 移除)、`1.1.0`(扩展包独立发布,现为 `2.0.x`)、`1.3.0`(`script-execute` 换 Code-Exec、CLI editor sessions、McpPlugin 8.11.0 工具超时)、`1.5.0`(独立 CLI 与 App skills)。
|
|
91
97
|
|
|
92
|
-
`vendor/` 缓存可安装产物,让新 Unity 工程不碰 GitHub 也能装(明细见 [vendor/README.md](../vendor/README.md)):插件 tarball `com.ivanmurzak.unity.mcp-1.
|
|
98
|
+
`vendor/` 缓存可安装产物,让新 Unity 工程不碰 GitHub 也能装(明细见 [vendor/README.md](../vendor/README.md)):插件 tarball `com.ivanmurzak.unity.mcp-1.6.0.tgz`(960,306 B)与 `gamedev-mcp-server-win-x64-9.3.0.zip`(44,088,479 B,对 release `SHA256SUMS` 校验)。**lockstep 是读出来的,不是猜的**:`tools/offline-package.mjs` 从 tarball 里取 `McpServerManager.ServerVersion`(插件 `1.6.0` 钉 Server `9.3.0`),CLI 与插件同号。
|
|
99
|
+
|
|
100
|
+
日常的「有没有新版本 / 要不要升级」走 `/unity-mcp-update`:先只读跑下面的 `check`(四层:上游最新 / `vendor/` / 项目已装 / 本机 CLI),有更新先问用户,同意后才 `fetch` 刷新本地离线包、再 `install` 进工程。
|
|
93
101
|
|
|
94
102
|
```powershell
|
|
95
|
-
#
|
|
103
|
+
# 四层比对:上游最新 / vendor 缓存 / 项目已装 / 本机 CLI
|
|
96
104
|
node "<plugin>\tools\offline-package.mjs" check --project <unity-project> --cli-version (unity-mcp-cli --version)
|
|
97
105
|
|
|
98
106
|
# 刷新:优先代理(GitHub release 资产是最不稳的一条),断点续传 + SHA256 校验
|
|
@@ -101,8 +109,8 @@ node "<plugin>\tools\offline-package.mjs" fetch
|
|
|
101
109
|
|
|
102
110
|
# 装进新的 Unity 工程
|
|
103
111
|
node "<plugin>\tools\offline-package.mjs" install --project <unity-project>
|
|
104
|
-
unity-mcp-cli install-plugin <unity-project> --with-server --server-version 9.
|
|
105
|
-
--server-source "<plugin>\vendor\gamedev-mcp-server-win-x64-9.
|
|
112
|
+
unity-mcp-cli install-plugin <unity-project> --with-server --server-version 9.3.0 `
|
|
113
|
+
--server-source "<plugin>\vendor\gamedev-mcp-server-win-x64-9.3.0.zip"
|
|
106
114
|
```
|
|
107
115
|
|
|
108
116
|
`install-plugin` **没有** `--plugin-source`;离线路径是 Unity 官方支持的 `file:` 本地 tarball 依赖。CLI 不会覆盖 `file:` / `git+` / `http:` 依赖(`dist/utils/manifest.js` 的 `nonSemverPrefixes`),所以之后重跑 `install-plugin` 也安全。
|
|
@@ -111,13 +119,18 @@ unity-mcp-cli install-plugin <unity-project> --with-server --server-version 9.2.
|
|
|
111
119
|
|
|
112
120
|
## 重新生成命令目录 / Regenerating the catalog
|
|
113
121
|
|
|
114
|
-
`tools/generate-unity-mcp-catalog.ps1`
|
|
122
|
+
`tools/generate-unity-mcp-catalog.ps1` 扫描插件包源码,重写 `skills/unity-mcp-tools/SKILL.md`、`skills/unity-mcp-tools/reference/<分类>.md` 与 `reference/extensions.md`(分类取自插件自己的 `[AiTool(Title = ...)]` 属性;扩展清单取自包内 `extensions.catalog.json`)。升级插件后重跑,再重启 `dsh web`。
|
|
115
123
|
|
|
116
124
|
```powershell
|
|
125
|
+
# 从 Unity 工程里已解析的包生成
|
|
117
126
|
powershell -NoProfile -ExecutionPolicy Bypass -File tools/generate-unity-mcp-catalog.ps1 -ProjectRoot <your-unity-project>
|
|
127
|
+
|
|
128
|
+
# 或直接从 vendor 离线包生成(不需要 Unity 工程;版本取自包内 package.json)
|
|
129
|
+
tar -xzf vendor/com.ivanmurzak.unity.mcp-<ver>.tgz -C <临时目录>
|
|
130
|
+
powershell -NoProfile -ExecutionPolicy Bypass -File tools/generate-unity-mcp-catalog.ps1 -PackageRoot <临时目录>/package
|
|
118
131
|
```
|
|
119
132
|
|
|
120
|
-
插件 1.2.0 不再把工具描述写成字符串字面量,而是常量引用(如 `[Description(RqlGuide.QueryDescription)]`),`RqlGuide` 还会把字面量与其他常量拼接。生成器会求值这些常量,RQL 语言手册因此能落到 `reference/rql.md`:`-BodyTools`(默认 `rql-*`)决定哪些命令带上插件自己的 `[AiToolBody]`/`[AiSkillBody]` 正文,于是机械类命令保持一行,语言类工具带完整指南。脚本必须存为 **带 BOM 的 UTF-8**——Windows PowerShell 5.1 会把无 BOM 的 UTF-8 当 ANSI
|
|
133
|
+
插件 1.2.0 不再把工具描述写成字符串字面量,而是常量引用(如 `[Description(RqlGuide.QueryDescription)]`),`RqlGuide` 还会把字面量与其他常量拼接。生成器会求值这些常量,RQL 语言手册因此能落到 `reference/rql.md`:`-BodyTools`(默认 `rql-*`)决定哪些命令带上插件自己的 `[AiToolBody]`/`[AiSkillBody]` 正文,于是机械类命令保持一行,语言类工具带完整指南。脚本必须存为 **带 BOM 的 UTF-8**——Windows PowerShell 5.1 会把无 BOM 的 UTF-8 当 ANSI,中文会变成解析错误。扩展是独立 UPM 包,生成器只扫基础包,所以扩展命令不进索引,`extensions.md` 只回答「可选哪些扩展 + 各带哪些命令」。
|
|
121
134
|
|
|
122
135
|
---
|
|
123
136
|
|
package/lib/index.js
CHANGED
|
@@ -845,12 +845,17 @@ const Config = z.union([z.object({
|
|
|
845
845
|
// model never sees or auto-loads it, and Unity capability never turns on by itself.
|
|
846
846
|
skillModelInvocable: z.boolean().default(false),
|
|
847
847
|
skillUserInvocable: z.boolean().default(true),
|
|
848
|
-
// Shipped helper skills: put the Unity-side plugin in (`/unity-mcp-install`)
|
|
849
|
-
// bridge actually reaches it (`/unity-mcp-check`)
|
|
850
|
-
//
|
|
848
|
+
// Shipped helper skills: put the Unity-side plugin in (`/unity-mcp-install`), remove it again
|
|
849
|
+
// (`/unity-mcp-delete`), prove the bridge actually reaches it (`/unity-mcp-check`),
|
|
850
|
+
// check/offer updates (`/unity-mcp-update`), and refresh the offline package + this command
|
|
851
|
+
// catalog (`/unity-mcp-update-tools`). Model-visible by default: they are the on-ramp and the
|
|
852
|
+
// doctor, not the Unity capability itself.
|
|
851
853
|
registerHelperSkills: z.boolean().default(true),
|
|
852
854
|
installSkillName: z.string().default("unity-mcp-install"),
|
|
855
|
+
deleteSkillName: z.string().default("unity-mcp-delete"),
|
|
853
856
|
checkSkillName: z.string().default("unity-mcp-check"),
|
|
857
|
+
updateSkillName: z.string().default("unity-mcp-update"),
|
|
858
|
+
updateToolsSkillName: z.string().default("unity-mcp-update-tools"),
|
|
854
859
|
helperSkillsModelInvocable: z.boolean().default(true),
|
|
855
860
|
helperSkillsUserInvocable: z.boolean().default(true),
|
|
856
861
|
reconnect: Reconnect
|
|
@@ -876,12 +881,17 @@ const Config = z.union([z.object({
|
|
|
876
881
|
// model never sees or auto-loads it, and Unity capability never turns on by itself.
|
|
877
882
|
skillModelInvocable: z.boolean().default(false),
|
|
878
883
|
skillUserInvocable: z.boolean().default(true),
|
|
879
|
-
// Shipped helper skills: put the Unity-side plugin in (`/unity-mcp-install`)
|
|
880
|
-
// bridge actually reaches it (`/unity-mcp-check`)
|
|
881
|
-
//
|
|
884
|
+
// Shipped helper skills: put the Unity-side plugin in (`/unity-mcp-install`), remove it again
|
|
885
|
+
// (`/unity-mcp-delete`), prove the bridge actually reaches it (`/unity-mcp-check`),
|
|
886
|
+
// check/offer updates (`/unity-mcp-update`), and refresh the offline package + this command
|
|
887
|
+
// catalog (`/unity-mcp-update-tools`). Model-visible by default: they are the on-ramp and the
|
|
888
|
+
// doctor, not the Unity capability itself.
|
|
882
889
|
registerHelperSkills: z.boolean().default(true),
|
|
883
890
|
installSkillName: z.string().default("unity-mcp-install"),
|
|
891
|
+
deleteSkillName: z.string().default("unity-mcp-delete"),
|
|
884
892
|
checkSkillName: z.string().default("unity-mcp-check"),
|
|
893
|
+
updateSkillName: z.string().default("unity-mcp-update"),
|
|
894
|
+
updateToolsSkillName: z.string().default("unity-mcp-update-tools"),
|
|
885
895
|
helperSkillsModelInvocable: z.boolean().default(true),
|
|
886
896
|
helperSkillsUserInvocable: z.boolean().default(true),
|
|
887
897
|
reconnect: Reconnect
|
|
@@ -1021,8 +1031,8 @@ function registerCatalogSkill(ctx, config) {
|
|
|
1021
1031
|
let parsed;
|
|
1022
1032
|
let baseDir;
|
|
1023
1033
|
try {
|
|
1024
|
-
baseDir = fileURLToPath(new URL("../skills/", import.meta.url));
|
|
1025
|
-
parsed = parseSkillFile(readFileSync(new URL("../skills/SKILL.md", import.meta.url), "utf8"));
|
|
1034
|
+
baseDir = fileURLToPath(new URL("../skills/unity-mcp-tools/", import.meta.url));
|
|
1035
|
+
parsed = parseSkillFile(readFileSync(new URL("../skills/unity-mcp-tools/SKILL.md", import.meta.url), "utf8"));
|
|
1026
1036
|
} catch (error) {
|
|
1027
1037
|
sctx.logger.warn(`unity-mcp-bridge: catalog skill files unreadable: ${String(error)}`);
|
|
1028
1038
|
return;
|
|
@@ -1071,9 +1081,12 @@ function registerCatalogSkill(ctx, config) {
|
|
|
1071
1081
|
}
|
|
1072
1082
|
}
|
|
1073
1083
|
/**
|
|
1074
|
-
* The
|
|
1075
|
-
* into the workspace's Unity project; `/unity-mcp-
|
|
1076
|
-
*
|
|
1084
|
+
* The five shipped operational helper skills. `/unity-mcp-install` gets the Unity-side plugin
|
|
1085
|
+
* into the workspace's Unity project; `/unity-mcp-delete` removes it (and its extensions) again;
|
|
1086
|
+
* `/unity-mcp-check` only proves the three things it owns (plugin installed, port 20000, bridge
|
|
1087
|
+
* reaches DSH); `/unity-mcp-update` checks the official CLI and the Unity plugin for new versions
|
|
1088
|
+
* and updates them once the user agrees; `/unity-mcp-update-tools` refreshes the offline
|
|
1089
|
+
* `vendor/` package and regenerates this command catalog (index + extension list) from it.
|
|
1077
1090
|
* Same best-effort contract as the catalog skill: no skill registry, no skills, no failure.
|
|
1078
1091
|
*/
|
|
1079
1092
|
const HELPER_SKILLS = [
|
|
@@ -1082,10 +1095,25 @@ const HELPER_SKILLS = [
|
|
|
1082
1095
|
file: "../skills/unity-mcp-install/SKILL.md",
|
|
1083
1096
|
nameKey: "installSkillName"
|
|
1084
1097
|
},
|
|
1098
|
+
{
|
|
1099
|
+
label: "delete",
|
|
1100
|
+
file: "../skills/unity-mcp-delete/SKILL.md",
|
|
1101
|
+
nameKey: "deleteSkillName"
|
|
1102
|
+
},
|
|
1085
1103
|
{
|
|
1086
1104
|
label: "check",
|
|
1087
1105
|
file: "../skills/unity-mcp-check/SKILL.md",
|
|
1088
1106
|
nameKey: "checkSkillName"
|
|
1107
|
+
},
|
|
1108
|
+
{
|
|
1109
|
+
label: "update",
|
|
1110
|
+
file: "../skills/unity-mcp-update/SKILL.md",
|
|
1111
|
+
nameKey: "updateSkillName"
|
|
1112
|
+
},
|
|
1113
|
+
{
|
|
1114
|
+
label: "update-tools",
|
|
1115
|
+
file: "../skills/unity-mcp-update-tools/SKILL.md",
|
|
1116
|
+
nameKey: "updateToolsSkillName"
|
|
1089
1117
|
}
|
|
1090
1118
|
];
|
|
1091
1119
|
function registerHelperSkills(ctx, config) {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-unity-mcp-bridge",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Opt-in Unity-MCP bridge for DeepSeek Harness: dormant by default, /unity-mcp-tools activates it, ships the 1.
|
|
3
|
+
"version": "0.9.0",
|
|
4
|
+
"description": "Opt-in Unity-MCP bridge for DeepSeek Harness: dormant by default, /unity-mcp-tools activates it, ships the 1.6.0 command catalog plus /unity-mcp-install, /unity-mcp-delete, /unity-mcp-check, /unity-mcp-update and /unity-mcp-update-tools.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "lib/index.js",
|
|
7
7
|
"repository": {
|