前言¶
在使用 DeepSeek Harness(DSH)時,接入多個 MCP(Model Context Protocol)服務器會導致工具列表膨脹。全量注入這些工具會消耗大量 token,同時工具列表的反覆更新會破壞緩存。dsh-mcp 是一個客戶端插件,旨在解決這些問題:它提供可視化管理界面,支持按需檢索(tool search)熱注入工具,並確保工具列表穩定,最大化緩存命中率。
核心功能¶
該插件包含以下核心能力:
- 可視化管理:在 Settings → MCP 中管理服務器列表,支持新建、編輯、刪除、測試連接、啓停及刷新。
- 工具級精細控制:展開每個服務器查看工具列表,默認全選,可取消勾選僅加載需要的部分。
- 進程級環境變量:支持全局 KV 配置。對於
streamable-http服務器,可在請求頭中使用${變量名}語法,連接時自動替換爲配置值(例如Authorization: Bearer ${TOKEN})。 - 雙注入模式:提供
search(按需檢索,省 token)與full(全量注入)兩種模式。 - 圖片結果透傳:MCP 工具返回的圖片經附件服務投影爲引用進入模型上下文,帶預檢與降級文案。
- 零 npm 依賴:直接對接 DSH 內部能力。
- OAuth 認證支持:支持授權碼 + PKCE 流程,token 自動刷新(24 小時內活躍自動續期)。
- 系統證書校驗:HTTPS 連接默認按系統證書校驗,無需額外配置。
安裝與啓用¶
安裝命令如下:
dsh plugin --profile web add github:ArvinQi/dsh-mcp
該插件支持版本:dsh 0.2.0-rc.2。
安裝後,插件會自動註冊爲 profile 的 bundle 層。重啓 dsh web 後,通過 Settings → MCP 即可進入可視化管理頁面。
配置與用法¶
在 Settings → MCP 頁面中,你可以進行以下操作:
-
聲明式服務器接管:
DSH 原生支持在cordis.patch.yml中聲明 MCP 服務器。插件會讀取這些聲明。- 聲明優先:如果
cordis.patch.yml中已存在同名聲明的服務器(且未 disabled),插件將不會掛載同名行,以避免工具註冊表衝突。 - 接管/釋放:點擊“接管”後,插件會在受管塊內寫入
disabled: true,讓出serverName並由插件行接管掛載,從而啓用 OAuth、憑據託管等功能。點擊“釋放”則交還控制權。
- 聲明優先:如果
-
OAuth 認證:
OAuth 是顯式開關。只有在設置頁勾選“使用 OAuth 授權”時,纔會掛載 OAuth provider。- 未勾選時不會自動掛載。
- 授權前只顯示“授權中”,授權失敗會寫明原因。
- 授權由設置頁按鈕發起,宿主打開系統瀏覽器完成,本頁每 5 秒輪詢狀態。
-
Tool Search 模式:
使用search模式時,模型通過mcp_tool_search熱注入所需工具,大幅節省 token。工具列表穩定化機制確保未變化的工具保留原註冊,最大化緩存命中。
適用場景與注意¶
- 適用場景:需要精細控制多個 MCP 服務器、希望節省 token 消耗、需要處理複雜認證(OAuth)或內網 HTTPS 證書校驗的場景。
- 注意:
- 插件以當前 dsh 進程權限運行,安裝前請檢查源碼與許可證(MIT)。
- 升級時,插件會按已有 OAuth 憑據自動遷移。
- 對於使用靜態 token 的服務器,不要勾選 OAuth 選項,否則會被誤判爲 OAuth 挑戰。