dsh-mcp-settings
English | 中文
这是一个可安装的 DeepSeek Harness bundle,包含通过 Web 设置管理 MCP 服务器的三个插件。
| Cordis 行 | 入口 | 职责 |
|---|---|---|
dsh-mcp-settings-manager | dsh-mcp-settings/manager | 拥有 mcp.servers,为每个已启用服务器启动或停止内置 MCP client fiber,并发布合并后的连接状态。 |
dsh-mcp-settings-inventory | dsh-mcp-settings/inventory | 提供只读 mcpInventory/list Remote。 |
dsh-mcp-settings-ui | dsh-mcp-settings + ./client | 提供 MCP 设置页、表单/JSON 编辑、启停开关、状态轮询和工具数量。 |
bundle 会把这三个插件行插入兼容的 Web profile。该 profile 不能同时挂载另一套由设置驱动的 MCP manager 或 MCP 设置 UI。已有 mcp.servers 用户设置不会被删除。
环境要求
- 匹配的 DeepSeek Harness 开发版本;它的
webprofile 必须已经提供package.json中列出的 DSH peer 包。 - 该 Harness 版本必须发出
mcp-client/status事件;此事件尚未进入公开 Harness 默认分支。 - Node.js
^22.19.0 || >=24。 - 从 GitHub 直接安装时使用 pnpm 10 或更高版本。
从 GitHub 安装
DSH 插件通过 bundle 分发。dsh plugin add 会把包安装进 profile,并把它的 dsh.bundle 层加入 profile manifest;不需要额外的启用脚本。
dsh plugin --profile web add github:aka-danielZhang/dsh-mcp-settings该命令只安装 bundle,不会安装或升级 Harness 拥有的 peer 包;因此必须按上述要求使用匹配的 Web profile。
Git 安装会运行仓库的 prepare 脚本生成 lib/。pnpm 默认阻止依赖构建脚本;如果第一次安装提示 build 被忽略,请把提示中的准确包名加入 ~/.dsh/profiles/web/pnpm-workspace.yaml,然后重试:
allowBuilds:
"dsh-mcp-settings@https://codeload.github.com/aka-danielZhang/dsh-mcp-settings/tar.gz/<commit-sha>": true这项授权允许安装期间执行包代码。安装不受你控制的源码时应锁定 commit:
dsh plugin --profile web add github:aka-danielZhang/dsh-mcp-settings#<commit-sha>安装后重启 dsh --profile web,打开“设置 > MCP”;原有 mcp.servers 列表会继续使用。
检查组合结果:
dsh --profile web --dump-config输出应包含 dsh-mcp-settings-manager、dsh-mcp-settings-inventory 和 dsh-mcp-settings-ui。
安装本地 checkout
git clone https://github.com/aka-danielZhang/dsh-mcp-settings.git
cd dsh-mcp-settings
dsh plugin --profile web add file:.全局安装了 dsh 时,也可以使用这些可选快捷脚本:
pnpm run plugin:add
pnpm run plugin:dump
pnpm run plugin:removeDSH CLI 是权威安装路径;这些脚本不会直接修改 profile 文件。
配置 MCP 服务器
使用“设置 > MCP”。manager 读取与内置实现相同的 mcp.servers 设置命名空间。凭据保存在 Harness 凭据服务中;HTTP 条目通过 authorizationCredentialRef 生成 Bearer 认证头,stdio 条目通过 envCredentialRefs 把目标环境变量映射到凭据引用,因此密钥无需进入 MCP 设置文档。引用名必须符合可移植环境变量格式 [A-Za-z_][A-Za-z0-9_]*。
配置 authorizationCredentialRef 后,解析得到的 Bearer 值是权威来源,会替换 headers 中任意大小写形式的 Authorization 项。收到 credentials/updated 事件时,仅重启使用该引用的服务器,因此轮换凭据无需修改 MCP 设置即可作用于下一次进程启动或连接。
UI 支持 stdio 与 Streamable HTTP、表单与 JSON 编辑、凭据引用、直接启停以及实时状态/工具数量。保存已启用服务器后立即查询一次,随后每两秒查询,直到连接成功或经过 60 秒。
移除
dsh plugin --profile web remove dsh-mcp-settings重启 Web profile。bundle 插入的插件行会消失,用户设置保持不变。
开发
类型检查和测试遵循 DSH 仓库外插件约定:在相邻目录 ../deepseek-harness 保留一个 Harness checkout。
git clone https://github.com/deepseek-ai/deepseek-harness.git ../deepseek-harness
cd ../deepseek-harness && pnpm install
cd ../dsh-mcp-settings
pnpm install
pnpm run typecheck
pnpm test
pnpm run bundle
pnpm run smoke实时开发时,先把本地 checkout 安装到 Web profile,保持 dsh web 运行,再在另一个终端启动本插件的 bundle watcher:
pnpm run plugin:add
pnpm run dev:webdsh web 始终挂载 Client HMR 接收端。watcher 会重建这个仓库外插件的 Host 和 Client bundle;运行中的 Host 发现 bundle revision 变化后,会让浏览器插件自动热替换,无需刷新页面。Harness 根目录的 pnpm run dev:web 只监视仓库内 packages/*/* 的 Client 插件,不能替代本插件自己的 watcher。
prepare 使用自包含的 tsdown.config.ts 与 tsconfig.prepare.json,因此 GitHub 安装方不需要相邻 Harness checkout;类型检查与测试需要它。
GitHub CI 会在没有 Harness checkout 的情况下验证消费端安装、bundle、JavaScript 语法和打包产物。完整类型检查与测试会针对匹配的相邻 Harness 开发树运行,因为依赖的 mcp-client/status 事件尚未进入公开 Harness 默认分支。
兼容性
当前兼容的 DeepSeek Harness 版本:0.1.0-rc.7(@deepseek-ai/dsh-root 与内置 @deepseek-ai/dsh-mcp-client,均为 0.1.0-rc.7)。自 v0.2.2 起,manager 在本地镜像重连默认值与服务器名 pattern,不再导入 dsh-mcp-client 未发布的导出,因此可以在干净的 rc.7 harness 上加载。Harness 版本必须发出 mcp-client/status 事件。
该 bundle 替换当前 DeepSeek Harness RC 版本线提供的扩展点,并复用内置 @deepseek-ai/dsh-mcp-client。DSH 仍处于预发布阶段;这些扩展点变化时,需要一起更新 peer 范围、Typert descriptor 和 bundle patch。
来源与许可
实现迁移自 DeepSeek Harness 中 MIT 许可的 MCP manager、MCP inventory 和 MCP Settings 包。详见 [LICENSE](LICENSE)。