前言¶
在 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(
dsh0.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
典型用法¶
在設置頁添加工作區與服務器¶
- Add workspace:桌面端用原生目錄選擇器;純瀏覽器
dsh web頁可在對話框粘貼絕對路徑,或從側欄已註冊工作區選取。 - Add server,例如:
- 名稱idea,傳輸streamable-http,URLhttp://127.0.0.1:64343/stream,關閉 fail on startup error(IDE 未必常駐);
- 名稱github,傳輸stdio,commandnpx,args-y @modelcontextprotocol/server-github,env 設GITHUB_TOKEN=${env:GITHUB_TOKEN}。 - 保存後,該工作區的在線會話立即生效;新會話在第一步之前即就緒。
用 .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 爲準。