dsh-mcpserver-manager:在 DSH 设置里用 JSON 管理 MCP 并写入 cordis.patch.yml

前言

在 DeepSeek Harness(DSH)里接 MCP,最终要落到宿主 profile 的 cordis.patch.yml。手写 YAML 补丁、对齐 transport 字段、从 Claude Desktop 或 Cursor 文档里拷 JSON 再手改一遍,既容易写错格式,也难确认写进了哪个 profile。社区插件 dsh-mcpserver-manager(维护者 liuleiyu121520,分类 admin-security)把流程收进 设置 → MCP 管理:粘贴一段 JSON,前后端双重校验通过后写入 DSH 官方 MCP 维护配置,列表即时回显;条目可启停、体检、查看宿主已注册的工具。配置与原生 MCP 同源,卸载插件后条目仍留在 cordis.patch.yml。

这是什么

dsh-mcpserver-manager 是 DSH 的设置页插件(客户端注入 @deepseek-ai/dsh-client-ui-settings),在 UI 里管理 MCP 服务器条目,落盘目标是当前宿主 profile 的 cordis.patch.yml(例如 desktop 宿主常见路径为 ~/.dsh/profiles/desktop/cordis.patch.yml),按官方补丁格式 - insert: 插入,而不是插件私有的 JSON 文件。

仓库:GitHub - liuleiyu121520/dsh-mcpserver-manager
目录页:skillhub.cn 插件页
许可证:MIT(见仓库 package.json)
当前资料中的版本:0.4.5;要求宿主 dsh >= 0.2.1-rc.2。

核心功能

粘贴 JSON 接入与格式兼容

在「添加 MCP」弹窗里粘贴配置,输入过程即时校验;语法错误可定位到「第 N 行第 M 列」。前后端共用 src/validate.js,前端通过的条目后端同样规则校验,通过后才写盘,写完列表刷新并短暂高亮新条目。

插件识别 Claude / Cursor 常见的 { "mcpServers": { … } } 形状:集合键作为 serverName,transportType / type 映射为 transport;sse 会映射为 streamable-http(DSH MCP 客户端 schema 仅有 stdio 与 streamable-http,无 SSE 实现)并给出提示。一次只接受 一个 服务器;mcpServers 里多于一个会直接拒绝并列出名字。

未写传输方式时,有 command 推断为 stdio,有 url 推断为 streamable-http,底部一行会显示类似「将写入 <serverName> · <transport>」。

写入官方配置与安全编辑

写入 当前宿主 profile 的 patch 层(正常运行走宿主 profileContext.patchPath)。受管段落采用文本级行编辑、原子写、.bak 备份,失败自动回滚;段外内容不动。列表与回显里 env / headers 只显示键名,明文不越过 Host 边界。

停用/启用使用 cordis 原生 disabled: true;编辑时密钥留空表示沿用原值,可改 serverName(改名即替换原条目)。用户手写或其它插件写入的条目会出现在「非本插件管理 · 只读」分组,只读展示,健康检查与工具列表仍可用。

健康检查与工具列表

每条目可一键健康检查,结果以 toast 给出「正常 / 需留意 / 连不上」及原因与耗时。判据包括已注册工具数、streamable-http 的握手(initialize → tools/list,携带所配请求头)、stdio 命令能否在 PATH 解析。卡片行上显示「共 N 个工具」,展开后从宿主 ctx.tools 的 mcp__<serverName>__ 命名空间读取工具名、参数个数与描述(只读宿主真实注册结果)。

更新与其它

启动约 15 秒后查 GitHub Releases,之后每 6 小时一次;有新版本可在页头横幅一键更新(安装走 pluginManager.installBundle('github:…#vX.Y.Z'),tag 固定)。运行时 dependencies 为空。

安装与启用

DSH 社区插件可通过插件页、DSH Hub 或命令行安装;以下命令来自仓库 README。

方式一:插件页

  1. 左侧导航点 插件
  2. 右上角 添加插件
  3. 粘贴仓库地址并安装:
https://github.com/liuleiyu121520/dsh-mcpserver-manager
  1. 完成后打开 设置 → MCP 管理

方式二:DSH Hub

在 DSH Hub 插件页 按页面说明安装。

方式三:命令行

dsh plugin --profile <你的 profile> add github:liuleiyu121520/dsh-mcpserver-manager

固定版本:

dsh plugin --profile <你的 profile> add github:liuleiyu121520/dsh-mcpserver-manager#v0.1.0

卸载(MCP 条目仍留在 cordis.patch.yml):

dsh plugin --profile <你的 profile> remove dsh-mcpserver-manager

典型用法

  1. 打开 设置 → MCP 管理
  2. 点 添加 MCP,粘贴 JSON(或「填入示例 ▾」选模板再改)
  3. 错误区为空后点 确定 → 写入 → 列表刷新
  4. 在卡片上启停、健康检查、展开工具列表;⋯ 可编辑或删除(删除需二次确认)

stdio 示例(本地命令):

{
  "serverName": "github",
  "transport": "stdio",
  "command": "npx",
  "args": ["-y", "@modelcontextprotocol/server-github"],
  "env": { "GITHUB_TOKEN": "!!js process.env.GITHUB_TOKEN" }
}

!!js process.env.X 会原样写入 cordis,运行时再求值,避免 token 明文躺在文件里。

streamable-http 示例:

{
  "serverName": "remote",
  "transport": "streamable-http",
  "url": "https://example.com/mcp",
  "headers": { "Authorization": "Bearer your-token" }
}

从 Claude / Cursor 复制的外层写法(粘贴后会拆壳并映射字段):

{
  "mcpServers": {
    "creis_mcp_server": {
      "transportType": "sse",
      "url": "https://example.com/mcp/creis_mcp_server",
      "headers": { "x-litellm-api-key": "Bearer sk-xxx" },
      "disabled": false
    }
  }
}

主要字段:serverName(1–32 字符,全局唯一)、transport(stdio 或 streamable-http)、stdio 必填 command、http 必填 url;可选 args、env、cwd、headers、toolCallTimeoutMs(默认 60000)等。白名单外字段会黄色警告后原样写入。

排障时可看 Host 启动日志中的 mount 行,或 API GET /api/dsh-mcpserver-manager/servers 返回的 file / fileDisplay。

适用场景与注意

适合需要在 DSH 桌面或 Web 宿主里图形化维护 MCP、又不想单独维护一份与 cordis 脱节的配置文件的开发者。从其它 IDE 文档复制 MCP JSON、希望自动映射到 DSH 传输类型时,也比纯手改 patch 省事。

插件以后端进程权限读写 profile 下的 YAML;安装前应阅读源码与 MIT 许可证,确认 env / headers 写入行为符合你的安全策略。高级用户可通过插件配置 patchFile(绝对路径)指定写入文件;相对路径会被忽略。

DSH 生态强调「一切皆插件」;SkillHub、DSH Hub 等目录为社区站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-mcpserver-manager 把 MCP 接入收敛为:校验 JSON → 按官方 - insert: 写入当前 profile 的 cordis.patch.yml → 在设置页统一管理启停、体检与工具可见性;卸载插件不带走已写入的 MCP 配置。

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

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

Xiaoye