dsh-mcp-setting:在设置界面管理 DSH 的 MCP 服务器

前言

DeepSeek Harness (DSH) 采用插件化架构,MCP 服务器的接入通常需要编辑配置文件(如 cordis.patch.yml)。手动维护这些配置行容易出错,且难以实时查看服务状态。dsh-mcp-setting 插件在 DSH 的设置界面中新增了「MCP 服务器」页面,允许用户直接通过 Web 界面进行增删改查。

这是什么

这是一个 DeepSeek Harness 客户端插件,由 belowthetree 维护。它通过注入设置页面,提供对 DSH 配置文件中 @deepseek-ai/dsh-mcp-client 配置行的直接管理能力。插件不仅实现了可视化的配置编辑,还集成了状态监控与配置校验机制。

核心功能

  1. 服务器列表与概览
    展示主配置文件($DSH_HOME/cordis.patch.yml)与各 profile 补丁文件中的全部 MCP 服务器,标注来源与端点摘要。

  2. 实时连接状态
    页面每 5 秒静默刷新,通过加载器 fiber 与工具注册表(mcp__<serverName>__* 前缀)推断状态。显示内容为:已连接 · 工具数 / 未连接 / 启动失败 / 加载中。注意:在断线重连的退避窗口内,状态可能短暂显示为「已连接」。

  3. 启用/停用控制
    每台服务器自带开关,通过写入 loader 行的 disabled 标志控制。DSH 的配置热加载机制会即时生效,无需重启进程。

  4. 配置编辑与删除
    支持修改服务器参数或删除条目。编辑时会保留表单未展示的字段(如 reconnect、toolCallTimeoutMs)。删除操作会一并移除所在文件中空掉的 insert 补丁条目。

  5. 新增服务器
    在主配置文件中新增条目,并自动补齐自描述的头注释。

  6. 配置校验
    遵循 @deepseek-ai/dsh-mcp-client 的配置契约。校验规则包括:

    • id 和 serverName 唯一性
    • command 必填(针对 stdio 传输)
    • url 必填(针对 streamable-http 传输)
    • 命名规则匹配。校验失败会拒绝写入并返回中文提示。
  7. 安全机制

    • 所有写操作仅允许本机回环访问。
    • 每次写入前保留 .bak 备份文件。
    • 使用临时文件 + 原子落盘方式修改 YAML 文档,确保未触碰的注释与 !!js 表达式原样保留。
  8. 重启 DSH
    页面顶部提供「重启 DSH」按钮(需两次点击确认),用于重新拉起 DSH 进程以应用完整重载。

安装与启用

推荐通过 npm 安装到指定的 DSH profile(例如 web profile):

pnpm dsh plugin --profile web add dsh-mcp-setting

安装后,DSH 进程会自动装配该插件。浏览器打开设置 -> MCP 服务器即可看到新增的管理界面。

若需移除:

pnpm dsh plugin --profile web remove dsh-mcp-setting

典型用法

  1. 安装插件并重启 DSH。
  2. 打开浏览器,进入 DSH 设置页面的「MCP 服务器」选项卡。
  3. 点击「重启 DSH」按钮确认应用更改(如果修改了配置)。
  4. 在列表中观察服务器的实时连接状态,通过开关快速启用或停用特定服务器。

技术细节与注意事项

  • 热加载生效:启停操作利用 DSH 的配置热加载,即时生效;增删改会写入配置文件,建议配合「重启 DSH」按钮使用。
  • 开发环境:开发者可通过 pnpm install && pnpm build 编译,或使用 dev_build_plugin -> dev_install_package 注入器生产线进行本地开发挂载。
  • 测试与构建:项目包含单元测试(pnpm test)、类型检查(pnpm typecheck)与构建脚本(pnpm build)。
  • 环境要求:Node.js 版本需 >= 20。

参考资料

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

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

小夜