前言¶
在 DeepSeek Harness(DSH)裏,MCP 與 Skills 往往按 profile 全局生效:同一份 mcp: 配置會作用到所有工作區和會話。日常開發裏這會帶來幾類具體摩擦——例如 codebase 在兩個項目裏各自對應不同的 .codebase/codebase.db,全局只能指向其一;註冊了多個 MCP 時,當前工作區其實只需要其中一個,其餘進程仍佔用資源並把工具列表撐大,模型更容易選錯工具;~/.claude/skills 下的技能也會在每個會話裏出現,而多數工作區只需要其中少數幾個。
下面介紹社區插件 dsh-mcp-manager(維護者 gyp8735abc,npm 包 @gyp8735abc/dsh-mcp-manager,MIT 許可證)。它把開關粒度下沉到工作區:每一行工作區左側多一個插頭圖標,點開彈窗即可分別啓用或關閉該工作區下的項目 MCP、全局 MCP、手動 MCP 以及各類 Skills,且互不牽連。
這是什麼¶
dsh-mcp-manager 是面向 DSH Web 客戶端的插件(分類:客戶端)。一句話定位:Per-workspace MCP and skill switches for DeepSeek Harness — one popup per workspace row。
它不修改 DSH 核心安裝目錄,安裝或卸載隻影響 profile 與 $DSH_HOME(默認 ~/.dsh)。界面語言跟隨 DSH(英文 / 簡體中文)。
與全局配置的差異¶
DSH 自帶的 MCP 配置是 profile 級別的;本插件把可切換對象按來源拆開,並在工作區路徑上保存狀態:
| 對象 | 來源 | 切換粒度 |
|---|---|---|
| Global MCP | ~/.claude.json 中的 mcpServers |
按工作區 |
| Project MCP | 工作區內的 .mcp.json |
按工作區 |
| Manual MCP | profile 裏手寫的 dsh-mcp-client 行 |
按工作區 |
| Skills | .dsh/skills、.claude/skills、.agents/skills 及用戶目錄下對應路徑 |
按工作區 |
在 A 工作區關掉的 MCP,在 B 工作區仍可保持開啓。
核心功能¶
一行工作區一個彈窗¶
彈窗內按組展示:Project MCP / Global MCP / Manual MCP / Project skills / Global skills。每一行一個開關,並 inline 顯示 Enabled/Disabled 以及 MCP 的 Connected/Not connected。空組會隱藏;若該工作區沒有任何可配置項,會顯示空狀態提示。
真正的按工作區隔離與聯合掛載¶
狀態鍵是絕對工作區路徑。多個工作區若同時有活躍會話,各自 MCP 以 (工作區, 服務) 爲單位獨立進程掛載,帶各自的配置與 cwd;切換或聚焦會話不會停掉其它工作區的服務;某工作區最後一個會話結束時,該工作區的服務纔會卸載。
項目級 MCP 在運行時會帶工作區前綴:例如工作區 A 裏的 codebase 變爲 a__codebase,模型側工具名爲 mcp__a__codebase__search_code 這類形式,同名服務在不同工作區可並存,不會互相覆蓋。
會話級工具與技能過濾¶
當前會話只能看到本工作區的 mcp__<workspace>__* 工具,以及全局/手動 MCP 工具,其它仍在線工作區的工具不會泄漏進來。被關閉的 Skill 會從模型目錄和 /name 注入中消失;若直接調用 skill 工具會被拒絕並給出明確原因。
其它已文檔化的能力¶
- 兼容 Claude Code 技能佈局,會掃描項目
.claude/skills與用戶~/.claude/skills,包括無 YAML frontmatter 的SKILL.md。 - 每次打開彈窗會重新讀取工作區列表與各工作區
.mcp.json,新工作區或改過的配置無需重啓 DSH 即可反映。 - 彈窗通過同源 HTTP API 拉取清單與切換狀態(例如
GET /api/dsh-mcp-manager/inventory?active=<workspace path>);需要自動化時可查閱倉庫 README 中的 API 表。
安裝與啓用¶
DSH 沒有中心化應用商店;通過「插件市場」添加的是你信任的 index URL,索引內容未經 DSH 簽名,安裝前請在確認對話框中核對來源爲 @gyp8735abc/dsh-mcp-manager。
方式一:插件市場(三步,只需做一次實驗性開關)¶
- 打開 Plugins → Experimental plugins,啓用 Custom plugin markets(Discover 標籤在該 bundle 啓用後才存在)。
- 在 Discover → Add index source 填入:
https://gyp8735abc.github.io/dsh-mcp-manager/index.json
也可額外添加社區目錄 https://cdn.jsdelivr.net/npm/dsh-plugin-catalog/index.json(Awesome DSH Plugin catalog),再搜索 MCP manager、mcp、workspace 或 gyp8735abc 安裝。
- 打開條目並點擊 Install。
方式二:一條命令¶
適用於已配置 web profile 的環境:
dsh plugin --profile web add @gyp8735abc/dsh-mcp-manager
包內帶 dsh.bundle.patch,profile 組合會自動插入插件行,無需手寫 cordis.patch.yml。
方式三:從源碼目錄安裝¶
在已 clone 的倉庫根目錄執行(資料中的官方寫法):
dsh plugin --profile web add .
驗證與生效¶
dsh --profile web --dump-config | grep -A 3 dsh-mcp-manager
輸出中出現 id: dsh-mcp-manager 表示已進入組合樹。隨後重啓 dsh web,並在瀏覽器硬刷新(Ctrl+Shift+R)——客戶端 bundle 僅在啓動時注入。之後每個工作區行左側會出現插頭圖標。
運行環境要求(來自 package.json):dsh 爲 >=0.2.0-rc.2 <0.3.0,Node >=22。
典型用法¶
- 在 Web UI 工作區列表中,點擊目標行左側插頭圖標,打開 MCP & skills 彈窗。
- 彈窗頂部會標註當前 Active 工作區路徑:
- 若正是當前聚焦的工作區,切換開關會立即連接或斷開 MCP,並註冊/卸載工具。
- 若不是當前活躍工作區,開關只寫入狀態;該工作區下次有會話時再按狀態掛載。 - 按需關閉本工作區不需要的全局 MCP 或 Skills,保留項目
.mcp.json裏真正要用的條目。
彈窗佈局示意(來自 README):
┌ MCP & skills ───────────────────────────────┐
│ Workspace D:\ai-workspace Active │
│ │
│ Project MCP (.mcp.json) │
│ ● codebase stdio Enabled Connected │
│ ○ e2e-runner stdio Disabled — │
│ │
│ Global MCP (~/.claude.json) │
│ ● everything-search http Enabled Connected│
│ │
│ Manual MCP (profile) │
│ ○ codegraph stdio Disabled — │
│ │
│ Project skills (this workspace) │
│ ● officecli .dsh Enabled │
│ ○ probe .claude Disabled │
│ │
│ Global skills (all workspaces) │
│ ● diagnose-windows-sandbox-acl ~/.dsh │
└──────────────────────────────────────────────┘
狀態持久化¶
開關狀態寫在 $DSH_HOME/mcp-manager/state.json,例如:
{
"projects": [
{
"path": "D:\\ai-workspace",
"disabled": ["dsh-mcp-manager__codebase"],
"disabledSkills": ["office"]
}
]
}
| 字段 | 含義 |
|---|---|
path |
工作區絕對路徑(身份鍵) |
disabled |
在該工作區禁用的 MCP 運行時名;項目 MCP 爲 <slug>__<name>,全局/手動 MCP 爲 plain name |
disabledSkills |
在該工作區禁用的 skill 名 |
首次啓動時會一次性從 $DSH_HOME/settings.yaml 裏舊的 mcp: 段導入;disabled 同時認 qualified 名與 legacy 的 plain 名(如 codebase)。手改文件後,在重啓 DSH 或下次打開彈窗時生效。
適用場景與注意¶
適合誰: 同一 DSH profile 下並行維護多個代碼倉庫或工作區,且各工作區需要的 MCP 進程、Skills 集合差異很大;希望減少無關工具進入當前會話、降低誤調用概率的開發者。
權限與安全: 插件與當前 dsh 進程同權限運行,MCP 子進程也繼承該環境。安裝前請閱讀 GitHub 倉庫 源碼與 MIT 許可證;從市場安裝時只添加你信任的 index 源,並在安裝確認裏覈對包名。
生態說明: DSH 主張「一切皆插件」;SkillHub 目錄頁與社區 catalog 是獨立索引,與 DeepSeek / 幻方無官方從屬關係。
結尾¶
經過上面的步驟,你可以在不拆 profile、不改 DSH 核心的前提下,把 MCP 與 Skills 的啓用範圍精確到每一個工作區行。更多細節與 API 說明見項目 README。
- 目錄頁:https://www.skillhub.cn/plugins/gyp8735abc/dsh-mcp-manager
- GitHub:https://github.com/gyp8735abc/dsh-mcp-manager