前言¶
在 DeepSeek Harness(DSH)里接 Model Context Protocol(MCP)时,常见做法是手写配置、自己维护连接与工具注册。远程 MCP 服务往往还要处理传输方式(HTTP 与 SSE)、鉴权头、超时和工具白名单,改一处就要动多处文件,也不方便在界面里试连、列工具、手工调一次。
dsh-mcp-hub 是社区维护的 DSH 客户端插件,把「设置页 + 连接管理 + 工具注册」收进一个包:宿主侧与浏览器侧同一 loader 行安装,在 Settings 里出现 MCP 入口,远程服务发现到的工具会以 mcp__<serverName>__<toolName> 的形式注册,模型可直接调用。下面介绍它做什么、如何安装配置,以及使用时的边界。
这是什么¶
- 名称与归属:GitHub 仓库 Jing494/dsh-mcp-hub,维护者 Jing494;在 SkillHub 社区目录中归类为客户端插件(目录页与 DeepSeek / 幻方无官方从属关系)。
- 一句话定位:为 DSH 提供远程 MCP 服务的设置页、连接管理与
mcp__<server>__<tool>工具注册(host 半部 + browser 半部,单包单 loader)。 - 许可证:MIT(见仓库 LICENSE)。
核心功能¶
Settings → MCP¶
在带 Web 配置的 DSH 环境中,安装并重启后,Settings 中会出现 MCP(位于 Agent presets 与 Undo 之间)。在该页可以:
- 新增、编辑、启用/禁用、删除 MCP 服务器;
- 测试连接;
- 列出该服务器暴露的工具;
- 在 JSON 参数框中手工执行一次工具调用。
传输与连接¶
支持三种传输模式:streamable-http、旧版 sse,以及 auto。auto 会先尝试 streamable,失败再回退到 SSE,并记录实际生效的传输方式。
连接失败时,界面会展示原始错误文本,并附带三类常见原因的提示(路径错误、缺少鉴权头、传输方式不匹配)。
工具注册与白名单¶
每个被发现的服务器工具注册为 mcp__<serverName>__<toolName>。可按服务器配置 toolAllow:为空表示暴露全部工具;非空则仅允许列表中的工具。
若工具名发生冲突,插件会自动重命名(_2、_3 等)并在面板中展示;无法消解的冲突会报错而不是静默丢弃。
运行要求¶
- 使用带 Web 配置能力的 DeepSeek Harness(插件需要渲染 Settings 页)。
- Harness 自带的 MCP 客户端 SDK:
@modelcontextprotocol/sdk1.30+(在package.json中声明为 peer dependency)。 - Node:
^22.19.0 || >=24.0.0;DSH:>=0.2.1-rc.2 <0.3.0(以仓库当前package.json为准)。
安装与启用¶
该包尚未发布到 npm,需从本地 checkout 安装(仓库根目录即插件包,也可从 GitHub 拉取后指向该目录)。
在 Harness 插件管理器中,使用绝对路径指向包目录:
# 插件管理器
plugin_manager install_bundle /path/to/dsh-mcp-hub
# 或使用 CLI
dsh plugin add /path/to/dsh-mcp-hub
安装完成后重启 DSH 一次,Settings 里才会出现 MCP 入口。
说明:package.json 将 @deepseek-ai/* 与 @modelcontextprotocol/sdk 写在 peerDependencies 是有意为之——以 workspace link 安装时,只有声明过的包名才会正确解析宿主侧依赖。
典型配置与用法¶
服务器列表由 Settings 服务写入插件自身的 volatile 配置,形态如下(字段名与含义以 README 为准):
- id: mcp-hub
name: dsh-mcp-hub
config:
servers:
- id: weather
name: weather # 工具命名空间:mcp__weather__<tool>
enabled: true
transport: auto # auto | http | sse
url: https://example.com/mcp
headers: {} # 例如 { Authorization: "Bearer ..." }
timeoutMs: 15000 # 握手 / tools/list 预算
toolCallTimeoutMs: 60000 # 单次工具调用
toolAllow: [] # 空数组 = 暴露全部工具
典型流程:
- 在 Settings → MCP 中添加服务器 URL、传输方式与可选 headers;
- 使用「测试连接」确认可达,并查看工具列表;
- 需要时在 JSON 框中试调单个工具;
- 在对话中由模型调用已注册的
mcp__<server>__<tool>。
鉴权目前仅支持通过 headers 传 token,不支持 OAuth。Header 值默认以明文写在 profile patch 中(与上游行为一致)。若需从环境变量读取,可手写 Loader 表达式,例如:
Authorization: !!js `Bearer ${process.env.MCP_TOKEN}`
面板在编辑时会从 user layer 重新挂上这类表达式,但不能在 UI 里替你创建表达式。
适用场景与注意¶
适合谁:已在 DSH 中使用 Web 配置、需要对接远程 MCP(HTTP/SSE)服务,并希望在一个设置页里完成连接、试调与工具暴露的开发者。
能力边界(README Limitations):
- 仅远程:不支持
stdio,不拉起本地子进程。 - 无 OAuth:仅 header token;密钥默认明文存储,生产环境请自行用 Loader 表达式或外部 secret 方案。
- 宿主代码变更需重启 DSH:HMR 只监视配置文件,不监视插件模块;仅 client 侧改动可只刷新页面。
- 卸载:
remove_bundle或dsh plugin remove会清依赖与 bundle 选择,但可能留下- id: mcp-hub配置行与link:符号链接。需在插件已移除后运行node tools/uninstall.mjs清理残留(支持--dry-run、--keep-config、--run-cli);插件仍安装时该脚本会拒绝执行。
安全与信任:插件在当前 DSH 进程权限下运行,配置的 URL 与 headers 会用于对外建连。安装前请阅读源码与 MIT 许可证,只添加你信任的服务端点。
结尾¶
dsh-mcp-hub 把远程 MCP 的连接、传输回退、工具投影和设置 UI 收敛到一个 DSH 插件里,适合不想手写整套 MCP 客户端胶水、又需要 mcp__server__tool 命名约定与面板调试的场景。当前仓库版本为 0.3.1(以 package.json 为准);星标与发布节奏以 GitHub 为准。