@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,配合熱同步機制保證了工具集的實時性。相關目錄與源碼位於下方。

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

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

小夜