dsh-mcp-manager:在 DSH Web 界面里管理 MCP 服务器

前言

在 DeepSeek Harness(DSH)里接 Model Context Protocol(MCP)服务器,常见做法是在 profile 里手写 mcp-* 配置行:改命令、改环境变量、临时关掉某个 server,往往要动文本配置并重启或重载理解成本不低。会话里若只想「这一轮不用某个 MCP 的工具」,也没有统一的 UI 开关。

dsh-mcp-manager 是维护者 097794 发布的 DSH 插件(分类:工作流),目标是在 Harness 的 Web UI 里完成 MCP 的列表、增删改、启用/禁用、连接测试,并在 Composer 里按会话单独开关各 server。每个经插件配置的服务器都会挂载为真实的 @deepseek-ai/dsh-mcp-client 实例,工具命名空间 mcp__<name>__<tool>、资源与 server 指令的行为与 profile 里手写 MCP 行一致。

这是什么

插件包名 dsh-mcp-manager,当前版本 0.1.0,MIT 许可证。一句话定位:在 DSH 内通过界面管理 MCP 服务器,并支持按会话启用或隐藏工具。

仓库与目录页:

  • GitHub:https://github.com/097794/dsh-mcp-manager
  • SkillHub 目录:https://www.skillhub.cn/plugins/097794/dsh-mcp-manager

核心功能

Settings 里的 MCP 服务器管理

路径:Settings → MCP servers。可列出、添加、编辑、删除 server,启用或禁用,并对单个 server 做 Test。

配置字段(保存前为草稿,点 Save 后宿主立即协调:删除或改过的 server 会断开,新建的会连接):

字段 说明
Name 成为工具命名空间 mcp__<name>__<tool>;字母、数字、_、-,最长 32
Transport stdio 本地进程,或 streamable-http 远程服务
Command / arguments / working directory 仅 stdio;参数一行一个
Environment 仅 stdio;KEY=VALUE 一行一个,值可用 ${ENV_VAR}
URL / headers 仅 streamable-http;请求头 Name: Value 一行一个,可用 ${ENV_VAR}
Enabled 关闭时不连接、不提供工具

Test 在隔离作用域挂载 server,报告工具数量与名称,不改动当前 live 工具列表。${ENV_VAR} 从 harness 进程环境展开;变量缺失时该 server 会失败并给出明确提示。

已在 profile 里以 MCP 行存在的 server(例如 mcp-anysearch)会在 From the profile 下只读列出;其工具仍参与会话级开关。

Composer 里按会话开关

打开 Composer 的 + 菜单(与 / 命令同一菜单),选择 MCP servers。原菜单区域会显示 server 列表、各 server 工具数量,以及逐项开关:

  • 关:该 server 的工具对智能体隐藏(tools.restrict deny),本会话也不再注入对应 mcp:<name> 的 system prompt 段落;
  • 开:上述限制与段落恢复。

点击外部或按 Escape 关闭,行为与命令菜单一致。状态保存在 durable 的 per-session 插件记录 plugin:mcp-manager/toggles 中,刷新后仍有效,且不会泄漏到其他会话。子智能体启动时默认所有 server 均为启用。

实现要点(便于排查)

宿主侧用 volatile 的 servers 配置;apply 时为每个启用的 server 通过 ctx.plugin(...) 挂载子插件 @deepseek-ai/dsh-mcp-client。system-prompt/assemble 会去掉本会话已关 server 的 mcp:<name> 段;agent/created、agent/disposed 与 tools/change 同步 per-agent 工具限制。

浏览器侧通过同源 JSON API(/dsh-mcp-manager/api/...)读写状态、测试与会话开关,Settings 页注册为 settings.section,并提供 /mcp 命令在 conversation.input.overlay 打开面板。与 loopback Web 上其它路由一样未做鉴权,不要将 DSH 宿主暴露到 loopback 之外。

安装与启用

需要带插件系统的 DSH 构建,README 举例为 DSH 0.2.1-rc.2 desktop。package.json 中 engines.dsh 为 >=0.2.1-rc.1 <0.3.0-0,Node >=22.19.0。

官方 README 未提供 dsh plugin add github:... 一类命令,安装方式为本地目录 bundle:

  1. 将本插件目录 clone 或复制到稳定路径(本地目录安装是链接而非复制,需保留该文件夹)。
  2. 在 DSH 中:Plugins → Add plugin → local directory,或使用插件管理工具的 install_bundle,传入该文件夹的绝对路径。

典型用法

  1. 安装并启用插件后,打开 Settings → MCP servers,新增一条 stdio 或 streamable-http 配置,填好 Name、Transport 及对应字段,先 Test 确认工具列表,再 Save。
  2. 在 Composer + → MCP servers 中,对不需要本轮使用的 server 关掉开关,再开始对话;需要时在同一面板重新打开。
  3. 若 profile 里已有 MCP 行,在 Settings 页只读区可见;会话开关仍作用于其工具与 prompt 段。

开发侧可运行 README 中的单元测试(纯逻辑在 lib/model.js):

node --test test/model.test.mjs

适用场景与注意

适合:经常在 DSH 里增减或调试 MCP、希望在 UI 里测试连接、或按会话临时隐藏部分 MCP 工具的工作流场景。

务必了解 README Compatibility and risk 中的说明:

  • 针对 DSH 0.2.1-rc.2 开发,依赖 ctx.plugin、tools.restrict、system-prompt/assemble、appendPluginRecord 等面向插件的 API,不构成公开兼容承诺。
  • stdio server 的命令在 harness 进程环境与权限下运行,只添加可信 server。
  • 按会话隐藏工具不是安全边界,模型仍可能通过其它 provider 调用工具。
  • 删除 server 不会删除其已写入的数据,仅断开连接。

安装前建议阅读仓库源码与 MIT 许可证;社区目录 SkillHub 为独立站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-mcp-manager 把 MCP 的配置、测试与会话级开关收进 DSH Web UI,并与手写 profile MCP 行共用同一套 @deepseek-ai/dsh-mcp-client 挂载语义。进一步细节见 GitHub 仓库 与 SkillHub 目录页。

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

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

小夜