@dong-victor/dsh-mcphub:将 MCPHub 工具桥接进 DSH

前言

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 能够直接在会话中调用。

核心功能

  1. 工具桥接与注册
    插件连接 MCPHub 端点,把工具注册为 agent 原生工具。工具命名遵循 mcp__mcphub__<server名>-<工具名> 的规范(例如 mcp__mcphub__cassiopeia-ap-mysql-execute_sql)。参数 schema 与 MCPHub 发布的一致,调用结果按 MCP 文本块投影回模型上下文。

  2. Agent 工具
    插件额外提供了两个 agent 工具:
    * mcphub_status:查看连接状态、端点地址、server 及工具清单(含 DSH 可调用名)、MCPHub /health 状态。
    * mcphub_resync:强制重新同步工具集。当 MCPHub 侧增删改 server 或工具后,调用此工具可刷新本地注册的工具列表。

  3. 侧边栏与状态面板
    在侧边栏底部(footArea,即“设置”按钮上方)提供一个“MCPHub”入口。点击可打开状态面板,显示连接徽章、端点、健康状态、上次同步时间、server 分组工具清单(支持展开)、打开 MCPHub Dashboard 的外链以及手动刷新按钮。

  4. 健壮性与热同步
    * 断线自动指数退避重连,工具在中断期保持注册,恢复后自动重同步。
    * 监听 notifications/tools/list_changed 事件,支持工具集热同步。
    * MCPHub 不可达时插件照常激活,状态面板如实显示错误。

  5. 宿主路由
    插件提供了一个环回路由 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,配合热同步机制保证了工具集的实时性。相关目录与源码位于下方。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜