前言¶
DSH Web GUI 的设计理念是“一切皆插件”。在实际开发中,本机运行的一个聚合 MCP 服务器(如 MCPHub)往往包含多个 agent 需要的工具,而 DSH 默认无法直接访问这些工具。这通常需要开发者手动将工具逐个配置进 DSH,维护成本较高。
这是什么¶
@dong-victor/dsh-mcphub 是一个 DSH Web GUI 插件。它利用官方 MCP SDK 作为客户端,连接本地 MCPHub 服务(默认 http://localhost:3000)的聚合端点(/mcp 或 /mcp/<group>),将发现到的所有工具注册为 DSH agent 的原生工具,使 agent 能够直接在会话中调用。
核心功能¶
-
工具桥接与注册
插件连接 MCPHub 端点,把工具注册为 agent 原生工具。工具命名遵循mcp__mcphub__<server名>-<工具名>的规范(例如mcp__mcphub__cassiopeia-ap-mysql-execute_sql)。参数 schema 与 MCPHub 发布的一致,调用结果按 MCP 文本块投影回模型上下文。 -
Agent 工具
插件额外提供了两个 agent 工具:
*mcphub_status:查看连接状态、端点地址、server 及工具清单(含 DSH 可调用名)、MCPHub/health状态。
*mcphub_resync:强制重新同步工具集。当 MCPHub 侧增删改 server 或工具后,调用此工具可刷新本地注册的工具列表。 -
侧边栏与状态面板
在侧边栏底部(footArea,即“设置”按钮上方)提供一个“MCPHub”入口。点击可打开状态面板,显示连接徽章、端点、健康状态、上次同步时间、server 分组工具清单(支持展开)、打开 MCPHub Dashboard 的外链以及手动刷新按钮。 -
健壮性与热同步
* 断线自动指数退避重连,工具在中断期保持注册,恢复后自动重同步。
* 监听notifications/tools/list_changed事件,支持工具集热同步。
* MCPHub 不可达时插件照常激活,状态面板如实显示错误。 -
宿主路由
插件提供了一个环回路由GET /api/dsh-mcphub/status,支持?refresh=1参数绕过 TTL 缓存。
安装与启用¶
前置条件:本机已运行 MCPHub 服务(@samanhappy/mcphub,默认端口 3000),且其中已启用至少一个 server。
安装命令:
dsh plugin --profile web add link:C:\Users\dongz\.dsh\workspace\dsh-mcphub
安装完成后,需重启 dsh web 宿主进程以加载新的 bundle。
配置¶
插件支持通过 cordis.patch.yml 覆盖配置。默认连接全局聚合端点 /mcp,可修改为特定分组:
- id: mcphub
name: '@dong-victor/dsh-mcphub'
config:
baseUrl: http://localhost:3000 # MCPHub 地址
group: '' # 留空=全局聚合 /mcp;填分组名= /mcp/<group>
serverName: mcphub # 工具命名空间(mcp__<serverName>__…)
headers: {} # 附加 HTTP 头,如 { Authorization: 'Bearer xxx' }
announceToAgent: true # 是否向 agent 公告本插件
toolCallTimeoutMs: 60000 # 单次 tools/call 超时
reconnect:
enabled: true
initialDelayMs: 500
maxDelayMs: 30000
maxAttempts: 10
典型用法¶
调用 MCPHub 中的工具时,使用指定的命名格式:
mcp__mcphub__<server名>-<工具名>
例如:
mcp__mcphub__cassiopeia-ap-mysql-execute_sql
在配置中启用 announceToAgent 后,agent 会自动识别这些工具。若 MCPHub 端工具发生变更,可手动调用 mcphub_resync 刷新。
适用场景与注意¶
- 依赖环境:必须依赖 MCPHub 服务在线运行。
- 范围限制:当前仅桥接 MCP 的 Tool 能力,MCP 的 Resources / Prompts 暂不暴露(与
dsh-mcp-client行为一致)。 - 工具名逻辑:工具名中的
<server名>前缀来自 MCPHub 的配置,在 MCPHub 中改名会导致工具名变化。 - 面板展示:侧边栏面板中的 server 分组基于工具名前缀启发式推断,仅用于展示,不影响实际调用。
- 权限与安全:插件以当前 DSH 进程的权限运行,请确保信任安装的源码。
结语¶
该插件解决了本地多 MCP Server 聚合后的接入问题,通过标准化接口将工具能力注入 DSH agent,配合热同步机制保证了工具集的实时性。相关目录与源码位于下方。