前言¶
DSH 強調“一切皆插件”。在 DSH 中接入 MCP 服務器時,手工維護配置、判斷掛載狀態、管理啓停和密鑰引用會比較繁瑣。@fishlikewater/dsh-mcp-manager 在 DSH 設置頁提供「MCP 服務器」入口,宿主側按配置熱掛載或卸載 @deepseek-ai/dsh-mcp-client 實例。下面介紹它的功能、安裝方式和注意點。
這是什麼¶
- 包名:
@fishlikewater/dsh-mcp-manager - 維護者:
fishlikewater - 許可證:MIT
- Node 要求:
>=18
定位:MCP 服務器管理器。
它在 DSH 設置頁列出、新增、編輯、刪除 MCP 服務器,並把配置持久化到 settings.yaml 的 mcp 命名空間(mcp.servers)。宿主側再按這些配置動態掛載 @deepseek-ai/dsh-mcp-client 實例。
運行時由宿主側提供:
@deepseek-ai/cordis ^4.0.1@deepseek-ai/dsh-mcp-client ^0.1.0-rc.6
插件依賴:
@deepseek-ai/schemastery ^3.18.1
核心功能¶
設置頁管理¶
設置頁可以列出、新增、編輯、刪除 MCP 服務器,並顯示掛載狀態。
每臺服務器有 enabled 開關:
- 關閉:立即停止對應實例並移除工具
- 開啓:重新掛載並註冊工具
開關狀態隨配置持久化,重啓 DSH 後保持。
傳輸方式¶
支持:
stdio:本地命令streamable-http:遠程 URL
真實掛載狀態¶
連接失敗、重連中、重連成功、放棄重連等異步事件會即時反映到設置頁,而不是隻顯示“已掛載”。
併發保存保護¶
GET/POST 攜帶 rev 修訂號,作爲樂觀鎖。
如果配置被其他窗口改過,保存會返回 409 並提示刷新,避免靜默覆蓋。
服務器選項¶
每臺服務器可配置:
toolCallTimeoutMs:工具調用超時failOnStartupError:啓動失敗即報錯
密鑰引用¶
env / headers 的值支持:
env:NAMEcred:NAME
掛載時解析,settings.yaml 中只保存引用文本。
headless profile¶
在沒有 webServer 服務的 headless profile 中,插件會跳過 HTTP 接口,只做實例管理。
安裝與啓用¶
先確認已安裝 dsh CLI 和 pnpm;dsh plugin 命令會轉發給 pnpm。
從 npm 安裝:
dsh plugin --profile web add @fishlikewater/dsh-mcp-manager
從本地 checkout 安裝:
dsh plugin --profile web add ./path/to/dsh-mcp-manager
驗證組合樹:
dsh --profile web --dump-config
如果配置正確,輸出中應能看到 mcp-manager 行。
重啓 dsh 進程後生效。隨後刷新瀏覽器頁面,打開「設置 → MCP 服務器」。
卸載:
dsh plugin --profile web remove @fishlikewater/dsh-mcp-manager
典型用法¶
初始示例¶
examples/mcp-servers.example.yaml 給出 settings.yaml 中 mcp 命名空間的示例。可將其合併進:
$DSH_HOME/settings.yaml
再從設置頁調整。
HTTP 接口¶
設置頁使用以下接口:
| 方法 | 路徑 | 說明 |
|---|---|---|
| GET | /api/mcp/servers |
返回 { rev, servers, status } |
| POST | /api/mcp/servers |
請求體爲 { rev?, servers: [...] },整體替換並觸發重掛載 |
當 rev 與當前修訂不符時,返回 409 並提示刷新。
保存與熱生效¶
保存後,配置寫入 settings.yaml 的 mcp 命名空間,並觸發宿主側重新掛載。
刪除、關閉某臺服務器後,對應實例停止,工具移除;開啓後重新掛載。
適用場景與注意¶
適合需要在 DSH 中維護多個 stdio 或 streamable-http MCP 服務器,且希望從設置頁啓停、查看狀態、使用密鑰引用、避免多窗口相互覆蓋的場景。
注意:
- 插件以當前
dsh進程權限運行。安裝前應檢查源碼、依賴和許可證。 - 許可證爲 MIT。
- 安裝或插件代碼改動後需要重啓
dsh進程;保存配置本身可以熱生效。 - 包名使用 scope 版
@fishlikewater/dsh-mcp-manager;無 scope 的dsh-mcp-manager已被他人佔用。 - 設置頁導航圖標依賴外殼的類名哈希。DSH 升級後如果選擇器失效,會退回默認齒輪圖標,不影響功能。
結尾¶
@fishlikewater/dsh-mcp-manager 把 MCP 服務器配置、啓停、狀態和密鑰引用集中到 DSH 設置頁中處理,減少手工維護成本。
GitHub:
https://github.com/fishlikewater/dsh-mcp-manager