dsh-mcp-manager:在 DSH 设置页管理 MCP 服务器

前言

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.yamlmcp 命名空间(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:NAME
  • cred:NAME

挂载时解析,settings.yaml 中只保存引用文本。

headless profile

在没有 webServer 服务的 headless profile 中,插件会跳过 HTTP 接口,只做实例管理。

安装与启用

先确认已安装 dsh CLI 和 pnpmdsh 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.yamlmcp 命名空间的示例。可将其合并进:

$DSH_HOME/settings.yaml

再从设置页调整。

HTTP 接口

设置页使用以下接口:

方法 路径 说明
GET /api/mcp/servers 返回 { rev, servers, status }
POST /api/mcp/servers 请求体为 { rev?, servers: [...] },整体替换并触发重挂载

rev 与当前修订不符时,返回 409 并提示刷新。

保存与热生效

保存后,配置写入 settings.yamlmcp 命名空间,并触发宿主侧重新挂载。

删除、关闭某台服务器后,对应实例停止,工具移除;开启后重新挂载。

适用场景与注意

适合需要在 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

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

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

小夜