前言¶
在 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 为准。