前言¶
在 DeepSeek Harness(DSH)裏接 Model Context Protocol(MCP)服務器,常見做法是在 profile 裏手寫 mcp-* 配置行:改命令、改環境變量、臨時關掉某個 server,往往要動文本配置並重啓或重載理解成本不低。會話裏若只想「這一輪不用某個 MCP 的工具」,也沒有統一的 UI 開關。
dsh-mcp-manager 是維護者 097794 發佈的 DSH 插件(分類:工作流),目標是在 Harness 的 Web UI 裏完成 MCP 的列表、增刪改、啓用/禁用、連接測試,並在 Composer 裏按會話單獨開關各 server。每個經插件配置的服務器都會掛載爲真實的 @deepseek-ai/dsh-mcp-client 實例,工具命名空間 mcp__<name>__<tool>、資源與 server 指令的行爲與 profile 裏手寫 MCP 行一致。
這是什麼¶
插件包名 dsh-mcp-manager,當前版本 0.1.0,MIT 許可證。一句話定位:在 DSH 內通過界面管理 MCP 服務器,並支持按會話啓用或隱藏工具。
倉庫與目錄頁:
- GitHub:https://github.com/097794/dsh-mcp-manager
- SkillHub 目錄:https://www.skillhub.cn/plugins/097794/dsh-mcp-manager
核心功能¶
Settings 裏的 MCP 服務器管理¶
路徑:Settings → MCP servers。可列出、添加、編輯、刪除 server,啓用或禁用,並對單個 server 做 Test。
配置字段(保存前爲草稿,點 Save 後宿主立即協調:刪除或改過的 server 會斷開,新建的會連接):
| 字段 | 說明 |
|---|---|
| Name | 成爲工具命名空間 mcp__<name>__<tool>;字母、數字、_、-,最長 32 |
| Transport | stdio 本地進程,或 streamable-http 遠程服務 |
| Command / arguments / working directory | 僅 stdio;參數一行一個 |
| Environment | 僅 stdio;KEY=VALUE 一行一個,值可用 ${ENV_VAR} |
| URL / headers | 僅 streamable-http;請求頭 Name: Value 一行一個,可用 ${ENV_VAR} |
| Enabled | 關閉時不連接、不提供工具 |
Test 在隔離作用域掛載 server,報告工具數量與名稱,不改動當前 live 工具列表。${ENV_VAR} 從 harness 進程環境展開;變量缺失時該 server 會失敗並給出明確提示。
已在 profile 裏以 MCP 行存在的 server(例如 mcp-anysearch)會在 From the profile 下只讀列出;其工具仍參與會話級開關。
Composer 裏按會話開關¶
打開 Composer 的 + 菜單(與 / 命令同一菜單),選擇 MCP servers。原菜單區域會顯示 server 列表、各 server 工具數量,以及逐項開關:
- 關:該 server 的工具對智能體隱藏(
tools.restrictdeny),本會話也不再注入對應mcp:<name>的 system prompt 段落; - 開:上述限制與段落恢復。
點擊外部或按 Escape 關閉,行爲與命令菜單一致。狀態保存在 durable 的 per-session 插件記錄 plugin:mcp-manager/toggles 中,刷新後仍有效,且不會泄漏到其他會話。子智能體啓動時默認所有 server 均爲啓用。
實現要點(便於排查)¶
宿主側用 volatile 的 servers 配置;apply 時爲每個啓用的 server 通過 ctx.plugin(...) 掛載子插件 @deepseek-ai/dsh-mcp-client。system-prompt/assemble 會去掉本會話已關 server 的 mcp:<name> 段;agent/created、agent/disposed 與 tools/change 同步 per-agent 工具限制。
瀏覽器側通過同源 JSON API(/dsh-mcp-manager/api/...)讀寫狀態、測試與會話開關,Settings 頁註冊爲 settings.section,並提供 /mcp 命令在 conversation.input.overlay 打開面板。與 loopback Web 上其它路由一樣未做鑑權,不要將 DSH 宿主暴露到 loopback 之外。
安裝與啓用¶
需要帶插件系統的 DSH 構建,README 舉例爲 DSH 0.2.1-rc.2 desktop。package.json 中 engines.dsh 爲 >=0.2.1-rc.1 <0.3.0-0,Node >=22.19.0。
官方 README 未提供 dsh plugin add github:... 一類命令,安裝方式爲本地目錄 bundle:
- 將本插件目錄 clone 或複製到穩定路徑(本地目錄安裝是鏈接而非複製,需保留該文件夾)。
- 在 DSH 中:Plugins → Add plugin → local directory,或使用插件管理工具的
install_bundle,傳入該文件夾的絕對路徑。
典型用法¶
- 安裝並啓用插件後,打開 Settings → MCP servers,新增一條 stdio 或 streamable-http 配置,填好 Name、Transport 及對應字段,先 Test 確認工具列表,再 Save。
- 在 Composer + → MCP servers 中,對不需要本輪使用的 server 關掉開關,再開始對話;需要時在同一面板重新打開。
- 若 profile 裏已有 MCP 行,在 Settings 頁只讀區可見;會話開關仍作用於其工具與 prompt 段。
開發側可運行 README 中的單元測試(純邏輯在 lib/model.js):
node --test test/model.test.mjs
適用場景與注意¶
適合:經常在 DSH 裏增減或調試 MCP、希望在 UI 裏測試連接、或按會話臨時隱藏部分 MCP 工具的工作流場景。
務必瞭解 README Compatibility and risk 中的說明:
- 針對 DSH 0.2.1-rc.2 開發,依賴
ctx.plugin、tools.restrict、system-prompt/assemble、appendPluginRecord等面向插件的 API,不構成公開兼容承諾。 - stdio server 的命令在 harness 進程環境與權限下運行,只添加可信 server。
- 按會話隱藏工具不是安全邊界,模型仍可能通過其它 provider 調用工具。
- 刪除 server 不會刪除其已寫入的數據,僅斷開連接。
安裝前建議閱讀倉庫源碼與 MIT 許可證;社區目錄 SkillHub 爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。
結尾¶
dsh-mcp-manager 把 MCP 的配置、測試與會話級開關收進 DSH Web UI,並與手寫 profile MCP 行共用同一套 @deepseek-ai/dsh-mcp-client 掛載語義。進一步細節見 GitHub 倉庫 與 SkillHub 目錄頁。