前言¶
在 DeepSeek Harness(DSH)里接 MCP,常见做法是往 cordis.yml 或各 bundle 的 cordis.patch.yml 里加 @deepseek-ai/dsh-mcp-client 实例。装多了之后,「当前进程到底加载了哪些 MCP、哪条还在跑、哪条已经手写停掉」并没有一个统一界面:往往要翻 profile 与用户层的补丁文件,自己辨认哪一行是 MCP,再决定怎么改。停用一个 MCP 同样没有 Web 入口。
MCP 极简管理(插件 id:dsh-mcp-mini-manager)由社区维护者 runcat-tommy 发布,分类为 admin-security。它在 DSH Web 的「设置」侧边栏增加一页,与「插件」同级(设置页 id:mcp-mini-manager,order 16),列出当前 DSH 实际装载的每个 MCP 服务器、简介与状态,并支持逐个「移除」(写入可恢复的停用补丁)。仓库与目录页:
- GitHub:https://github.com/runcat-tommy/dsh-mcp-mini-manager
- SkillHub 目录:https://www.skillhub.cn/plugins/runcat-tommy/dsh-mcp-mini-manager
SkillHub 是社区插件目录站点,与 DeepSeek / 幻方无官方从属关系;安装前请自行查看源码与 MIT 许可证。插件以当前 dsh web 进程权限运行,涉及读写 profile 与用户层 cordis.patch.yml。
这是什么¶
一句话:Minimal MCP manager for DeepSeek Harness Web——同一级设置页里汇总 MCP、看状态、可逐个停用,停用通过 profile 层补丁完成且可恢复。
DSH 理念是「一切皆插件」;本插件是标准 DSH bundle(声明 dsh.bundle.patch 与 dsh.client),当前 npm 包版本为 1.5.4(以仓库 package.json 为准)。
它怎么知道「装了哪些 MCP」¶
在 DSH 里,一个 MCP 服务器对应 cordis 装载树里的一行,模块为 @deepseek-ai/dsh-mcp-client:每个插件实例连一个 MCP,多服务器则在 cordis.yml 里加载多个实例。
本插件从两处读取并合并:
| 来源 | 提供什么 | 局限 |
|---|---|---|
运行中的 Loader(ctx.loader.entries()) |
权威 config(serverName、transport、command、url 等)与 fiber 状态 |
看不见已停用行(不在树里) |
补丁层(各 bundle 的 cordis.patch.yml、profile 的 cordis.patch.yml、~/.dsh/cordis.patch.yml) |
被停用的行及来源包 | 仅静态配置,无运行状态 |
合并后,昨天「移除」的 MCP 仍会显示为「已移除」,并保留原始配置(来自移除记录)。运行中的树在能观测的事情上优先,补丁层补上树里看不见的部分。
安全边界:浏览器请求只带本插件目录接口返回的行 id;host 端确认该行确实是 MCP 客户端行后,才推导要写的文件与段落。浏览器不发送路径或 YAML 正文。
核心功能¶
列表与状态¶
每个 MCP 服务器一行展示:
- 简介:stdio 显示命令行,streamable-http 显示 endpoint;配置含
!!js时只标字段名,不显示值。 - 状态:在用 / 已移除 / 启动失败 / 启动中 / 未观测(由 Loader fiber 与补丁层共同推导)。
- 工具:该服务器经
mcp__<serverName>__<rawName>注册给模型的工具及描述。
另有 疑似自带 MCP 能力的插件(只读):不经过 dsh-mcp-client、自行连远端 MCP 的插件仅列出,不提供移除(移除语义等于卸载插件)。
页面底部 诊断信息:profile 目录、写入目标、home 层补丁、读取了哪些补丁层、各层无法解析的内容。
移除与恢复¶
「移除」= 向 profile 自己的 cordis.patch.yml 追加按 id 定位的停用补丁,例如:
# >>> dsh-mcp-mini-manager: disabled mcp row mcp-github
# server: github
# removed: <ISO 时间戳> by dsh-mcp-mini-manager
# restore this server from the MCP 极简管理 settings page, or delete
# these lines to re-enable the row by hand.
- id: mcp-github
disabled: true
# <<< dsh-mcp-mini-manager: disabled mcp row mcp-github
设计要点(README 原文归纳):
- 不改任何包文件,停用写在用户层,重装包不会抹掉你的停用选择。
- 通常不需重启:DSH 对 profile / home 层有
watchUserPatches;写完后 host 会再读运行树,如实提示「已即时生效」或「重启后生效」。 - 可恢复:写入前原始行会存到
<harness home>/.mcp-mini-manager/removed/<rowId>.json;「恢复」只删除对应停用块,行级拼接,不重写整份 YAML(避免破坏注释与其它插件的!!js)。
会被拒绝的情况包括:行已停用、起止标记不配对、补丁文件末尾无换行、行 id 形如路径、浏览器跨站 Origin 与 Host 不一致(403)等。
「清空移除记录」为唯一不可逆操作:只删记录文件,不恢复也不删除任何 MCP,需二次确认。
局限(文档明示)¶
- fiber 为
active只表示装载成功,不代表远端已连通;连接状态见dsh-mcp-client日志,本页不猜测。 - 必须有
loader服务才能列出运行中行;读不到时页面会说明,而非显示「没有 MCP」。 - 只覆盖经
dsh-mcp-client桥接的工具;resources / prompts 不在范围内。
安装与启用¶
三条安装路径装的是同一包;装好后均需重启一次 dsh web(新 bundle 在启动时由 profile manifest 读取,只刷新页面不够)。停用 / 恢复 MCP 本身则依赖补丁热加载,一般无需再重启。
① 从 GitHub 直接装¶
适合不想 clone、本机有 git 的情况:
dsh plugin --profile web add github:runcat-tommy/dsh-mcp-mini-manager
仓库已提交 lib/ 运行产物且无 install 类脚本,通常不触发构建审批。更新:重跑同一条命令。
② 下载 ZIP 再装¶
不用 git、不用 npm:在 GitHub 下载 ZIP 解压到固定目录后:
dsh plugin --profile web add D:\plugins\dsh-mcp-mini-manager
(Linux/macOS 将路径换成你的解压目录。)更新:覆盖目录后重跑 add 并重启。
③ 从 npm 装¶
dsh plugin --profile web add dsh-mcp-mini-manager
包地址:https://www.npmjs.com/package/dsh-mcp-mini-manager
更新:
dsh plugin --profile web up dsh-mcp-mini-manager
查看与卸载插件(与「停用某个 MCP」不同):
dsh plugin --profile web list
dsh plugin --profile web remove dsh-mcp-mini-manager
典型用法¶
- 按上面任选一种方式把
dsh-mcp-mini-manager加入webprofile,重启dsh web。 - 打开 Web 设置,在侧边栏找到与「插件」同级的 MCP 极简管理(
mcp-mini-manager)。 - 浏览列表中的命令行或 endpoint、状态、已注册工具;需要下线某个 MCP 时对该行执行「移除」,必要时在页面上「恢复」或手动删除 profile
cordis.patch.yml里带标记的停用块。 - 若状态与预期不符,展开诊断信息核对补丁层;连接问题到日志里查
dsh-mcp-client的重连与失败记录。
宿主 HTTP 接口(供脚本或调试,浏览器跨站带 Origin 时需与 Host 一致):
| 方法 | 路径 | 作用 |
|---|---|---|
| GET | /dsh-mcp-mini-manager/api/catalog |
目录 + 移除记录 + 诊断 |
| POST | /dsh-mcp-mini-manager/api/disable |
停用,body:{"rowId":"..."} |
| POST | /dsh-mcp-mini-manager/api/restore |
恢复,body:{"rowId":"..."} |
适用场景与注意¶
适合:已在 DSH Web profile 里通过 dsh-mcp-client 接了一个或多个 MCP,希望用界面统一查看状态、临时下线某个服务器而不改第三方 bundle 文件的人。
注意:
- 安装与写补丁发生在本机 profile / harness home,权限与当前 DSH 进程一致;生产或共享机器上请先审阅
lib/index.js等宿主逻辑。 - 不管理「插件内置 MCP」的启停;那些条目只读。
- 社区目录与 GitHub 星标等以站点为准(目录页当前星标为 0),版本以 npm / 仓库标签为准。
结尾¶
MCP 极简管理把「看清 loaded MCP」和「可恢复地停用一行」收进一页设置,补丁写在用户层、行级读写,避免整文件 YAML 重序列化。需要安装命令与边界细节时,以仓库 README 为准:
- 目录页:https://www.skillhub.cn/plugins/runcat-tommy/dsh-mcp-mini-manager
- 源码与说明:https://github.com/runcat-tommy/dsh-mcp-mini-manager