dsh-mcp-manager:在 DSH Web 界面裏管理 MCP 服務器

前言

在 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.restrict deny),本會話也不再注入對應 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:

  1. 將本插件目錄 clone 或複製到穩定路徑(本地目錄安裝是鏈接而非複製,需保留該文件夾)。
  2. 在 DSH 中:Plugins → Add plugin → local directory,或使用插件管理工具的 install_bundle,傳入該文件夾的絕對路徑。

典型用法

  1. 安裝並啓用插件後,打開 Settings → MCP servers,新增一條 stdio 或 streamable-http 配置,填好 Name、Transport 及對應字段,先 Test 確認工具列表,再 Save。
  2. 在 Composer + → MCP servers 中,對不需要本輪使用的 server 關掉開關,再開始對話;需要時在同一面板重新打開。
  3. 若 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 目錄頁。

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

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

小夜