Back to home@xlin20021

dsh-mcp-hub

dsh-mcp-hub

Stars
0
Language
JavaScript
Created
Aug 29, 2026
Updated
Aug 29, 2026
GitHub repo

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. 使用

  1. 打开会话,在视图环(conversation view ring)找到 「MCP」标签页(order 20,位于「用量」之后)
  2. 面板展示三块:
    • 当前进程已连接的 MCP:点击 ▸ 展开看该服务器暴露的工具
    • MCP 配置(cordis.patch.yml):可编辑的服务器卡片,保存后写回 profile
    • 来自 bundle(只读):各插件 bundle 里自带的最小化 MCP 补丁
  3. 常用操作:
    • 新增:点「+ 添加服务器」填配置 → 保存
    • :直接改卡片 → 保存
    • :点卡片内「删除」 → 保存
    • 改是否生效:新增的通常立即热连接;已存在服务器的修改需重启 dsh

4. 配置字段

字段说明示例
serverName服务器标识(字母/数字/点/下划线/中划线)stock
transport传输方式streamable-http / sse / stdio
url非 stdio 时的服务地址http://192.168.1.108:8038/mcp
commandstdio 时的启动命令npx
argsstdio 参数(空格分隔)-y @modelcontextprotocol/server-foo
env环境变量(每行 KEY=VALUEKEY=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-hub RPC 路由(list / save),直接读写 node:fs(部署归属代码,不沙箱)
  • 浏览器 dsh/client.js:Lazy-CJS bundle(window.__ModuleLoader__.load),零构建,复用宿主 react
  • 同源同壳(client-request / server-response envelope),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/)。