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