dsh-mcp-hub
dsh-mcp-hub
- Stars
- 0
- Language
- JavaScript
- Created
- Aug 29, 2026
- Updated
- Aug 29, 2026
Introduction
dsh-mcp-hub
dsh(DeepSeek Harness)内置 MCP 服务器管理面板 —— 在会话视图环中提供「MCP」标签页,集中查看和配置当前 profile 的所有 MCP 服务器。
- 读取展示
cordis.patch.yml(profile 层)+ 各 bundle 层的 MCP 配置 - 实时工具注册表:当前进程已连接的
mcp__*工具 - 增删改 MCP 服务器,保存即重写
cordis.patch.yml - 原生 Harness 风格、无构建步骤、零运行时依赖
1. 特性
- MCP 配置一览:解析并展示 profile 的
cordis.patch.yml/cordis.yml,以及package.json.bundles里各 bundle 自带的最小化补丁文件(只读) - 实时连接状态:从当前进程的工具注册表反查出每个已连接的 MCP 服务器(
mcp__<server>__<tool>前缀),显示工具数量;标注「已配置但当前进程未连接」的服务器 - 可视化配置:每台服务器一张卡片,可编辑
serverName/transport/url(或command+args)/env/toolCallTimeoutMs;支持新增、删除、保存 - 保存即生效:保存时重写
cordis.patch.yml;新增的 MCP 通常立即热连接,已有项修改需重启 dsh 应用 - 本机安全:RPC 路由仅接受
127.0.0.1/localhost请求,endpoint 白名单校验
2. 安装
在 web profile 的 package.json 加:
"dependencies": { "dsh-mcp-hub": "file:E:/dsh/dsh-mcp-hub" }
dsh.profile.bundles 加 "dsh-mcp-hub",然后重启 dsh web。
3. 使用
- 打开会话,在视图环(conversation view ring)找到 「MCP」标签页(order 20,位于「用量」之后)
- 面板展示三块:
- 当前进程已连接的 MCP:点击 ▸ 展开看该服务器暴露的工具
- MCP 配置(cordis.patch.yml):可编辑的服务器卡片,保存后写回 profile
- 来自 bundle(只读):各插件 bundle 里自带的最小化 MCP 补丁
- 常用操作:
- 新增:点「+ 添加服务器」填配置 → 保存
- 改:直接改卡片 → 保存
- 删:点卡片内「删除」 → 保存
- 改是否生效:新增的通常立即热连接;已存在服务器的修改需重启 dsh
4. 配置字段
| 字段 | 说明 | 示例 |
|---|---|---|
| serverName | 服务器标识(字母/数字/点/下划线/中划线) | stock |
| transport | 传输方式 | streamable-http / sse / stdio |
| url | 非 stdio 时的服务地址 | http://192.168.1.108:8038/mcp |
| command | stdio 时的启动命令 | npx |
| args | stdio 参数(空格分隔) | -y @modelcontextprotocol/server-foo |
| env | 环境变量(每行 KEY=VALUE) | KEY=xxx |
| toolCallTimeoutMs | 单次工具调用超时(毫秒,可选) | 300000 |
保存后 cordis.patch.yml 中每个服务器为 mcp-<serverName> 块的 @deepseek-ai/dsh-mcp-client 配置。
5. 架构
浏览器 (client.js) 宿主 (index.js)
MCP 标签页 (React) 读取 cordis.patch.yml / bundle 补丁
│ POST /api/mcp-hub/list 解析 mcp-* 块 → 卡片
│ POST /api/mcp-hub/save ←─────────────── 校验 → 重写 cordis.patch.yml
└─────────(RPC envelope)─────────┐ 实时工具注册表 (ctx.tools.schemas)
└────────> mcp__server__tool 前缀反查
- 宿主
dsh/index.js:/api/mcp-hubRPC 路由(list/save),直接读写node:fs(部署归属代码,不沙箱) - 浏览器
dsh/client.js:Lazy-CJS bundle(window.__ModuleLoader__.load),零构建,复用宿主react - 同源同壳(
client-request/server-responseenvelope),hostname 仅限本机
6. 目录结构
dsh-mcp-hub/
├── dsh/
│ ├── index.js # 宿主:RPC 路由、配置解析/重写、实时工具注册表
│ └── client.js # 浏览器:MCP 标签页(React)
├── cordis.patch.yml # bundle 补丁
├── package.json
├── LICENSE # MIT
├── NOTICE # 三方依赖声明
└── README.md
7. 许可证 / 三方依赖
- 插件本体:MIT(见
LICENSE) - 零运行时依赖(
dependencies: {});React 由宿主提供,无内置第三方库(详见NOTICE)
8. 回滚
:: 1) 从 web profile 的 dsh.profile.bundles 移除 "dsh-mcp-hub"
:: (及 package.json dependencies 里的 dsh-mcp-hub)
:: 2) 重启 dsh web
:: 3) (可选)手动编辑 cordis.patch.yml 撤销 mcp-hub 写入的块
9. 常见问题
- 保存后不生效:新增服务器通常立即热连接;已存在项的修改需重启 dsh(页面有提示)。
- 显示"已配置但当前进程未连接":服务地址不可达或 MCP 服务器未随 dsh 启动,检查地址或重启。
- stdio 服务器连不上:确认
command在 PATH 中、args正确、env无多余行(每行必须KEY=VALUE且=前为键名)。 - 保存报"无法读取 cordis.patch.yml":profile 下没有该文件,先确认 dsh 版本/位置(
$DSH_HOME/profiles/web/)。