dsh-mcp-manager-web:DeepSeek Harness 的 MCP 可视化管理器

前言

DeepSeek Harness(DSH)采用「一切皆插件」的理念,MCP(Model Context Protocol)服务器需要通过配置挂载到 cordis.patch.yml,但当前没有可视化界面。增删改启停、查看工具 schema、提示和资源,需要在配置文件或命令行中手动维护,容易出错且效率低。

下面介绍 zengshuaishuai/dsh-mcp-manager-web,这是一个在设置 → MCP 页签提供可视化管理器的插件,支持列表查看、详情展开、增删启停与连接测试。

插件简介

这是 DeepSeek Harness 的 MCP 可视化管理器,由维护者 zengshuaishuai 在 MIT 许可的开源项目 dsh-mcp-manager 基础上二次开发,重做了列表与详情界面,并新增工具目录、提示/资源读取等能力。

插件只做一件事:让 MCP 服务器的配置与状态可视化。所有修改写入 profile 的 cordis.patch.yml,由 harness 的 HMR 热应用,无需重启宿主。

核心功能

服务器列表

列表以紧凑行式展示,每一行包含:

  • 状态圆点:已连接 / 告警 / 失败 / 停用
  • 名称
  • 服务版本(连接成功后显示)
  • 传输方式徽章:流式 / stdio
  • 工具数
  • 启停开关

顶部工具条提供:

  • 刷新
  • 只看已连接
  • 搜索服务器
  • 添加服务器

点击任意一行进入详情页。

详情页

详情页分为多个标签:

通用

  • 连接状态
  • 条目 ID
  • 传输方式
  • 目标地址 / 命令
  • serverName
  • 工具数
  • 服务版本
  • 超时
  • 补丁文件路径
  • 操作按钮:测试 / 编辑 / 停用 / 删除

工具

列出该服务注册到工具表里的全部工具(mcp__<serverName>__*),支持搜索。展开后可见描述与输入参数表:

  • 参数名
  • 类型
  • 必填标记
  • 说明
  • 默认值

提示

按需建立一条独立 MCP 连接读取 prompts/list。服务端未实现时显示为空。

资源

同上,读取 resources/list,展示名称 / URI / MIME 类型。

日志

本页的操作流水(打开详情、探测结果、读取提示/资源的结果),带时间戳。

添加 / 编辑 / 删除

支持两种传输方式:

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

添加或编辑时会校验 id、serverName、URL 等字段。

连接测试

独立连接跑一次 initialize + tools/list,报告耗时与工具数。

其他特性

  • 中英双语:界面文案跟随 DSH 当前语言
  • 深浅主题自适应:颜色全部取自 DSH 的 --dsw-* token
  • 即改即生效:所有修改写入 cordis.patch.yml,由 harness 的 HMR 热应用
  • MCP 图标:设置导航里把未知插件默认的齿轮换成了 MCP 插头图标

安装与启用

前置条件:DSH 已经能正常启动(dsh web 或 DSH Desktop)。

桌面版的 profile 名是 desktop,Web 版通常是 web。下面的命令中的 --profile desktop 按你的实际情况替换。

git clone https://github.com/zengshuaishuai/dsh-mcp-manager-web.git dsh-mcp-manager-web
cd dsh-mcp-manager-web
# 仓库已包含构建产物 lib/,只有改过 src/ 才需要重新构建:
node scripts/build.mjs

dsh plugin --profile desktop add "link:$PWD"

方式二:npm 包

dsh plugin --profile desktop add @zengshuaishuai/dsh-mcp-manager-web

如果安装时报 minimum release age,可以在 profile 的 pnpm-workspace.yaml 里加 minimumReleaseAgeExclude: ["@zengshuaishuai/dsh-mcp-manager-web"] 后重试。

方式三:直接装 GitHub 源

dsh plugin --profile desktop add github:zengshuaishuai/dsh-mcp-manager-web

lib/ 已入库,GitHub 源安装不需要本地构建。

生效

安装后硬刷新浏览器(Cmd/Ctrl + Shift + R),打开 设置 → MCP。如果没看到 MCP 页签,重启一次 DSH(宿主端首次挂载需要)。

配置

插件自身只有一项可选配置 —— 它要编辑哪个补丁文件:

- id: mcp-manager
  name: "@zengshuaishuai/dsh-mcp-manager-web"
  config:
    patchFile: /Users/you/.dsh/profiles/desktop/cordis.patch.yml

patchFile 默认是 $DSH_HOME/profiles/web/cordis.patch.yml。桌面版必须显式指向 profiles/desktop/,否则增删的 MCP 服务器会写进 Web 版 profile、不生效。

架构

插件采用客户端 + 宿主端的分离架构:

宿主端入口

  • index.ts:注册 /api/mcp-manager 的 Fetch 路由并分发 action
  • status.ts:遍历 loader 里的 mcp-client 条目,投影状态与工具目录
  • probe.ts:独立 MCP 连接:probe(计数)/ inspect(工具+提示+资源+版本)
  • patch.ts:读写 profile 的 cordis.patch.yml(insert / 覆盖 / disabled)
  • validate.ts:表单校验(与 dsh-mcp-client 的 schema 对齐)
  • shared.ts:两端共享的类型与常量

浏览器端

  • client/:设置页、详情页、文案、样式、图标、RPC 封装

RPC 端点

走 harness 自带的 /api 通道,复用浏览器鉴权:

action 说明
list 所有 mcp-client 条目 + 状态 + 工具目录
add / update / remove 增改删补丁行
setEnabled 启停(写 disabled 标记)
probe 连通性探测(工具数、版本)
inspect 读取工具(含 schema)、提示、资源、服务版本
patchInfo 当前补丁文件路径与是否存在

已知限制

  • 不支持按工具启用 / 自动批准:@deepseek-ai/dsh-mcp-client 会把服务端工具全量注册,插件无法单独开关某个工具,也无法为单个工具设置自动批准,所以工具行是只读展示。
  • 提示 / 资源不是实时数据:它们由 inspect 单独建连读取,点开时拉一次,不会持续同步。
  • 日志是本页操作流水,不是 mcp-client 进程日志(插件拿不到宿主插件实例的日志)。
  • 服务版本只有在成功连接(打开详情或点测试)之后才有。
  • 只能管理用户补丁层的条目:由 bundle 定义的 MCP 条目不能删除或停用。
  • 启停沿用 loader 的 disabled 标记:部分 DSH 版本上重新启用后可能长时间停在「加载中」,此时重启一次 DSH 可恢复。

兼容性

在 DSH Desktop 0.2.1-rc.2(macOS arm64)上开发与验证;MCP 协议侧兼容 stdio 与 streamable-http。

总结

dsh-mcp-manager-web 用可视化的方式管理 MCP 服务器的配置与状态,省去了在 cordis.patch.yml 中手动增删改的繁琐,同时提供了工具 schema、提示与资源的查看入口。适合需要频繁调试或维护多个 MCP 服务的 DSH 用户。

更多细节与源码,可在 GitHub 查看:https://github.com/zengshuaishuai/dsh-mcp-manager-web

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

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

Xiaoye