前言¶
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 按你的实际情况替换。
方式一:本地源码(link:)¶
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 路由并分发 actionstatus.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