dsh-mcp-plugin:在 DSH Web 设置里管理 MCP 服务器

前言

DeepSeek Harness(DSH)通过 Cordis 与 profile 配置加载 MCP 服务器,工具名前缀为 mcp__<serverName>__*。日常开发里,改 cordis.patch.yml、核对 stdio 与 HTTP 参数、看某台服务是否加载失败,往往要手改 YAML 并重启或等重载。下面介绍社区插件 shinelon/dsh-mcp-plugin(包名 @local/mcp-manager):在 Web 端设置面板增加「MCP 服务」页,对当前 profile 下的 MCP 做列表、增删改与启停,改动写入 ~/.dsh/profiles/web/cordis.patch.yml 并由 HMR 热重载,多数操作无需重启 DSH。

这是什么

dsh-mcp-plugin 是 DSH 的 Web 双面插件:浏览器半边注入设置区「MCP 服务」页,宿主半边提供回环 HTTP 路由与补丁文档编辑逻辑。维护者为 shinelon,源码与说明见 GitHub 仓库,社区目录页为 skillhub.cn/plugins/shinelon/dsh-mcp-plugin。许可证为 MIT;package.json 中版本为 1.0.0,要求 Node >=22、DSH >=0.1.7-rc.2。

核心功能

列表与状态

列表展示每台服务器的 serverName、传输类型(本地进程 / HTTP)、目标、启用状态,以及来自 loader fiber 的运行状态:运行中、加载中、等待、失败、已禁用。失败行会显示错误摘要。

新增与编辑

新增走向导式表单:

  • stdio:command、args、env、cwd
  • streamable-http:url、headers

提交前经 @deepseek-ai/dsh-mcp-client 的 Config schema 校验后写入。编辑为整行配置替换;serverName 不可改(它决定工具名前缀)。不支持改名,只能删除后新增。

删除、启用与禁用

删除时:若配置行在 profile 层则直接删除;若来自 bundle 层则只读,删除操作会降级为写入「禁用覆盖行」。启用/禁用通过切换行上的 disabled 标志完成。

即时生效

配置变更写入 ~/.dsh/profiles/web/cordis.patch.yml,HMR 自动重载 MCP,一般无需重启 DSH。

安全与补丁编辑

写操作前对补丁 YAML 做 CST 手术式编辑:未改动的行注释与格式逐字保留(测试覆盖)。!!js 表达式值原样透传,不把 env 解析结果写回文件,避免密钥固化落盘。HTTP 路由仅允许回环(socket、Host、same-origin 三重校验)。写入前重解析校验,采用 temp/rename 原子写,首次写前自动备份为 cordis.patch.yml.bak-mcpmgr。

安装与启用

README 中的安装示例使用本地 link 路径(请换成你本机克隆或下载后的目录):

dsh plugin --profile web add link:D:/dsh_space/dsh_plugins/dsh-mcp-plugin

bundle 列表变更后需要重启一次 DSH;之后若自行改插件源码,执行 pnpm run build 并刷新页面即可。

卸载:

dsh plugin --profile web remove @local/mcp-manager

开发者构建与测试:

pnpm install
pnpm run build
pnpm test
pnpm run typecheck

典型用法

  1. 按上文命令将插件加入 web profile 并重启 DSH。
  2. 打开 Web 设置,进入「MCP 服务」页,查看现有服务器与实时状态。
  3. 通过「新增」按传输类型填写表单;保存后检查列表状态是否为运行中或失败(失败时看错误摘要)。
  4. 需要临时下线某服务时使用禁用;bundle 来源的条目只能禁用,不能编辑或真删。
  5. 若配置里用了 !!js 表达式,UI 编辑后该字段会变成字面量,界面会有「表达式」徽章提示。

架构概要

浏览器半边(React,/plugins/<id>/client.js)
  └─ settings.section 插槽 → 「MCP 服务」页
       └─ 文档相对路径 fetch(同源)
            ▼
宿主半边(cordis 插件,exports ".")
  ├─ /mcp-manager/list|add|update|remove|set-enabled
  ├─ 补丁文档 CST 编辑(yaml parseDocument)
  └─ ctx.loader.entries() → fiber 实时状态
       ▼
~/.dsh/profiles/web/cordis.patch.yml(HMR → MCP 热重载)

适用场景与注意

适合在 DSH Web 端频繁增删 MCP、排查加载失败、不想手搓 YAML 的开发者。插件以当前 DSH 进程权限运行,安装前应阅读源码与 MIT 许可证,确认路由与写盘行为可接受。

已知边界(来自 README):

  • !!js 字段在 UI 中编辑后会变为字面量。
  • bundle 层来源的 MCP 行只读,可禁用,不可删除或编辑。
  • 不支持 serverName 改名。

SkillHub 等社区目录与 DeepSeek / 幻方无官方从属关系,插件属社区生态,非官方应用商店条目。

结尾

dsh-mcp-plugin 把 MCP 配置收敛到 Web 设置里的单一页面,并与 cordis.patch.yml、HMR 和 loader 状态对齐。目录页:https://www.skillhub.cn/plugins/shinelon/dsh-mcp-plugin;源码:https://github.com/shinelon/dsh-mcp-plugin。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜