dsh-mcp-management:按工作區掛載 MCP 工具

前言

在 DeepSeek Harness(DSH)裏跑 Agent 時,MCP(Model Context Protocol)服務器往往是在應用層一次性配好的:數據庫、GitHub、IDE 橋接等工具會在每一次對話裏都出現在工具列表裏。多項目並行時,你在文檔倉庫裏不需要 JetBrains 工具,在 API 倉庫裏也不一定需要同一套 GitHub 配置,但全局配置很難按目錄切分。

下面介紹社區插件 @inkyi/dsh-mcp-management(維護者 inkyi,分類:工作流)。它把 MCP 服務器的可見範圍綁定到工作區(會話的工作目錄):在 ~/work/api 裏開的會話只看到爲該目錄配置的服務器,在 ~/work/docs 裏則是另一套,或爲空。

這是什麼

一句話:dsh-mcp-management 是 DSH 的工作流類插件,爲每個項目目錄單獨維護 MCP 服務器列表,並通過官方 @deepseek-ai/dsh-mcp-client 橋接,把工具掛載到當前 Agent 會話的作用域上。

插件在 dsh-plugin.org 有 listing(Verified,2026-10-29);源碼與說明見 GitHub:inkyi/dsh-mcp-management。許可證 MIT,當前 package 版本 1.0.1。

核心功能

按工作區隔離服務器列表

每個工作區有自己的服務器定義;會話只收到「包含該會話工作目錄」的那份工作區配置裏的服務器。工具名形如 mcp__<serverName>__<tool>,僅在該會話內存在。

全局默認與合併優先級

可選的 defaultServers 會被所有工作區繼承,適合「始終要用的工具」。最終列表按以下順序合併,同名服務器後者覆蓋前者:

defaultServers  <  workspaces[].servers(最長路徑匹配,由外到內)  <  <workspace>/.dsh/mcp.json

倉庫內 .dsh/mcp.json

項目可在 <workspace>/.dsh/mcp.json 裏提交 MCP 配置,格式與常見的 { "mcpServers": { ... } } 一致。文件配置優先於 GUI 管理列表;url 表示 streamable-http,command 表示 stdio,也可顯式寫 transport。disabled: true 表示已配置但不連接。

設置頁與 Agent 工具

Web 設置裏提供 Settings → MCP Management,可編輯工作區與服務器(stdio 的 command/args/env/cwd,streamable-http 的 URL/headers,啓用/禁用)。

Agent 側提供 mcp_management 工具,動作爲 status、list、setServer、removeServer、setEnabled、setWorkspace 等,便於模型在會話內查看或調整映射。

熱更新與密鑰引用

服務器掛在各 Agent 自己的註冊作用域(agent.ctx)上,配置變更後當前會話的工具會隨之增減,無需重啓整個 Harness。配置中的 command、args、url、env、headers 支持 ${env:NAME},從 Host 環境展開,密鑰不必寫進配置文件。

工作原理(簡要)

session 工作於 /repo/app
        │
        ▼
  解析服務器集合:defaultServers + workspaces[path=/repo/app] + /repo/app/.dsh/mcp.json
        │
        ▼
  在本 Agent 作用域掛載:agent.ctx.plugin('@deepseek-ai/dsh-mcp-client', …)
        │
        ▼
  工具僅對本會話可見

GUI 管理的值寫入當前 profile 的用戶 patch 層(~/.dsh/profiles/<profile>/cordis.patch.yml 中 mcp-management 行的 volatile 字段 defaultServers、workspaces);變更會對在線 Agent 重新綁定。普通字段如 fileConfigEnabled、fileConfigPath、matchSubdirectories 需插件重載後生效。

環境與依賴

  • 已安裝 DeepSeek Harness(dsh 0.2.x),profile 組合需具備 tools、loader、agents、configEditor 與 Web 設置面(標準 dsh-base + dsh-web-app 即可)。
  • Node.js 22+(Harness 自帶)。
  • 插件爲純 ESM,無構建步驟、無 npm 依賴(schema 依賴 vendored 在 vendor/)。

安裝與啓用

社區 hub 推薦命令(與 DSH Plugin Center 一致):

dsh plugin --profile web add @inkyi/dsh-mcp-management

在 npm 包未發佈或需跟蹤倉庫時,可從 GitHub 安裝:

dsh plugin --profile web add github:inkyi/dsh-mcp-management

命令會把包裝入 profile、寫入 dsh.profile.bundles 並應用 cordis.patch.yml 中的 bundle patch。若 dsh web 已在運行,需重啓一次。桌面應用在側欄 Plugins 中管理 reserved 的 desktop profile;會話內也可用 plugin_manager action=install_bundle target=... 達到同樣效果。

安裝後打開 Settings → MCP Management。若導航項未出現,刷新頁面一次(客戶端半部隨頁加載)。

卸載:

dsh plugin --profile web remove @inkyi/dsh-mcp-management

典型用法

在設置頁添加工作區與服務器

  1. Add workspace:桌面端用原生目錄選擇器;純瀏覽器 dsh web 頁可在對話框粘貼絕對路徑,或從側欄已註冊工作區選取。
  2. Add server,例如:
    - 名稱 idea,傳輸 streamable-http,URL http://127.0.0.1:64343/stream,關閉 fail on startup error(IDE 未必常駐);
    - 名稱 github,傳輸 stdio,command npx,args -y @modelcontextprotocol/server-github,env 設 GITHUB_TOKEN=${env:GITHUB_TOKEN}。
  3. 保存後,該工作區的在線會話立即生效;新會話在第一步之前即就緒。

用 .dsh/mcp.json 固化到倉庫

在倉庫根目錄創建 .dsh/mcp.json(路徑可通過 fileConfigPath 調整,默認 .dsh/mcp.json):

{
  "mcpServers": {
    "idea": {
      "url": "http://127.0.0.1:64343/stream",
      "failOnStartupError": false
    },
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": { "GITHUB_TOKEN": "${env:GITHUB_TOKEN}" }
    },
    "disabled-example": {
      "command": "node",
      "args": ["server.mjs"],
      "disabled": true
    }
  }
}

無效條目會被跳過並記日誌,不影響其他服務器。

通過 Agent 工具查詢與管理

mcp_management { "action": "status" }
mcp_management { "action": "list" }
mcp_management { "action": "setServer", "server": { … } }
mcp_management { "action": "setEnabled", "serverName": "idea", "enabled": false }
mcp_management { "action": "setWorkspace", "workspacePath": "/path", "servers": [ … ] }

適用場景與注意

適合誰: 同時在多個代碼庫或文檔目錄上使用 DSH,且希望 MCP 工具集隨目錄變化——例如 API 項目配數據庫 MCP,文檔項目只配檢索類工具;團隊還可用 .dsh/mcp.json 把期望的服務器列表跟倉庫一起走。

安全與權限: 插件與 MCP 子進程以當前 dsh 進程的用戶權限運行;stdio 服務器會執行你配置的 command,${env:...} 讀取的是 Host 環境變量。安裝前建議閱讀源碼與 MIT 許可證,確認服務器命令與 URL 來源可信。

生態說明: DSH 採用「一切皆插件」的組合方式;dsh-plugin.org 與 skillhub.cn 等目錄頁 是社區索引,與 DeepSeek / 幻方無官方從屬關係,並非官方應用商店。

結尾

經過上面的步驟,你可以把 MCP 從「全局一鍋燉」改成「按工作區一份清單」,並在設置頁、倉庫文件或 Agent 工具三條路徑上維護配置。需要進一步瞭解參數與 YAML 字段時,以倉庫 README 與 README.zh.md 爲準。

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

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

小夜