前言¶
DSH 强调“一切皆插件”。在 DSH 中接入 MCP 服务器时,手工维护配置、判断挂载状态、管理启停和密钥引用会比较繁琐。@fishlikewater/dsh-mcp-manager 在 DSH 设置页提供「MCP 服务器」入口,宿主侧按配置热挂载或卸载 @deepseek-ai/dsh-mcp-client 实例。下面介绍它的功能、安装方式和注意点。
这是什么¶
- 包名:
@fishlikewater/dsh-mcp-manager - 维护者:
fishlikewater - 许可证:MIT
- Node 要求:
>=18
定位:MCP 服务器管理器。
它在 DSH 设置页列出、新增、编辑、删除 MCP 服务器,并把配置持久化到 settings.yaml 的 mcp 命名空间(mcp.servers)。宿主侧再按这些配置动态挂载 @deepseek-ai/dsh-mcp-client 实例。
运行时由宿主侧提供:
@deepseek-ai/cordis ^4.0.1@deepseek-ai/dsh-mcp-client ^0.1.0-rc.6
插件依赖:
@deepseek-ai/schemastery ^3.18.1
核心功能¶
设置页管理¶
设置页可以列出、新增、编辑、删除 MCP 服务器,并显示挂载状态。
每台服务器有 enabled 开关:
- 关闭:立即停止对应实例并移除工具
- 开启:重新挂载并注册工具
开关状态随配置持久化,重启 DSH 后保持。
传输方式¶
支持:
stdio:本地命令streamable-http:远程 URL
真实挂载状态¶
连接失败、重连中、重连成功、放弃重连等异步事件会实时反映到设置页,而不是只显示“已挂载”。
并发保存保护¶
GET/POST 携带 rev 修订号,作为乐观锁。
如果配置被其他窗口改过,保存会返回 409 并提示刷新,避免静默覆盖。
服务器选项¶
每台服务器可配置:
toolCallTimeoutMs:工具调用超时failOnStartupError:启动失败即报错
密钥引用¶
env / headers 的值支持:
env:NAMEcred:NAME
挂载时解析,settings.yaml 中只保存引用文本。
headless profile¶
在没有 webServer 服务的 headless profile 中,插件会跳过 HTTP 接口,只做实例管理。
安装与启用¶
先确认已安装 dsh CLI 和 pnpm;dsh plugin 命令会转发给 pnpm。
从 npm 安装:
dsh plugin --profile web add @fishlikewater/dsh-mcp-manager
从本地 checkout 安装:
dsh plugin --profile web add ./path/to/dsh-mcp-manager
验证组合树:
dsh --profile web --dump-config
如果配置正确,输出中应能看到 mcp-manager 行。
重启 dsh 进程后生效。随后刷新浏览器页面,打开「设置 → MCP 服务器」。
卸载:
dsh plugin --profile web remove @fishlikewater/dsh-mcp-manager
典型用法¶
初始示例¶
examples/mcp-servers.example.yaml 给出 settings.yaml 中 mcp 命名空间的示例。可将其合并进:
$DSH_HOME/settings.yaml
再从设置页调整。
HTTP 接口¶
设置页使用以下接口:
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/mcp/servers |
返回 { rev, servers, status } |
| POST | /api/mcp/servers |
请求体为 { rev?, servers: [...] },整体替换并触发重挂载 |
当 rev 与当前修订不符时,返回 409 并提示刷新。
保存与热生效¶
保存后,配置写入 settings.yaml 的 mcp 命名空间,并触发宿主侧重新挂载。
删除、关闭某台服务器后,对应实例停止,工具移除;开启后重新挂载。
适用场景与注意¶
适合需要在 DSH 中维护多个 stdio 或 streamable-http MCP 服务器,且希望从设置页启停、查看状态、使用密钥引用、避免多窗口相互覆盖的场景。
注意:
- 插件以当前
dsh进程权限运行。安装前应检查源码、依赖和许可证。 - 许可证为 MIT。
- 安装或插件代码改动后需要重启
dsh进程;保存配置本身可以热生效。 - 包名使用 scope 版
@fishlikewater/dsh-mcp-manager;无 scope 的dsh-mcp-manager已被他人占用。 - 设置页导航图标依赖外壳的类名哈希。DSH 升级后如果选择器失效,会退回默认齿轮图标,不影响功能。
结尾¶
@fishlikewater/dsh-mcp-manager 把 MCP 服务器配置、启停、状态和密钥引用集中到 DSH 设置页中处理,减少手工维护成本。
GitHub:
https://github.com/fishlikewater/dsh-mcp-manager