dsh-mcp-scope
Verified@coolmentha/dsh-mcp-scope · v1.0.0 · MIT · Web UI
按 DSH 工作区分项目的 MCP 管理:连接增删改 + 每个连接绑定「全局」或指定工作区 / Per-project MCP management for DeepSeek Harness.
Install
dsh plugin add @coolmentha/dsh-mcp-scope Confirm the layer applied with dsh --profile default --dump-config — see the install guide.
Source
Published to npm without a public repository. Inspect the package contents before installing.
Tags
Creators
Readme
@coolmentha/dsh-mcp-scope(MCP 分项目)
给 DeepSeek Harness(DSH) 加一层「按项目管 MCP」的能力:每个 MCP 服务器要么 全局(所有工作区可见),要么绑定到一个或多个 DSH 工作区。
DSH 自带的 MCP 加载器(@deepseek-ai/dsh-mcp-client)是 profile 全局的:在它那里配一条连接,
每个会话都会注入,官方没有「这个服务器只属于 A 项目」的表达方式。本插件补上这一层,
并在 Harness 设置里提供一个管理页。
- 主机端机制:全局连接挂在插件根 ctx 上,项目限定连接挂在
agent.ctx上,因此工具、 资源提供者、MCP 资源工具、以及系统提示词里的## MCP resource servers段落,全部 按该 agent 的作用域解析。 - 数据存储:
~/.dsh/storages/mcp_scope.json(storage domainmcp_scope,表connections与bindings)。 - 管理页:设置 → 内置插件 →
MCP标签。
安装
让 Harness 里的 agent 用插件管理器安装(它会完成包安装与 bundle 选择,作用于当前 profile):
plugin_manager action: install_bundle target: @coolmentha/dsh-mcp-scope
本地开发时把 target 换成包目录的绝对路径即可。替换已安装的包后需要重启应用才会加载
新的 JavaScript 模块代(只做 disable/enable 会复用缓存里的旧模块)。
快速上手
- 打开 设置 → 内置插件 → MCP。
- 新增连接:填
serverName(模型看到的命名空间,例如grafana-k8s-log);传输方式选streamable-http(填 URL)或stdio(填 command/args);headers/env需要时填 JSON 对象。 - 为每条连接选作用域:
- 全局(所有项目):任何工作区都能用;
- 指定项目:可搜索的多选下拉框,勾选哪些 DSH 工作区,就只有这些工作区的会话能看到。
- 已选项目在下方以 chip 展示,点
×可单个移除;连接可用开关停用,用「删除」移除。 - 重新应用 会立刻重跑挂载协调(不必重启)。
MCP 工具是在会话创建时注入的,所以改动后请新开一个会话验证;「重新应用」也会顺带 给还活着的会话重新挂载。
作用域行为
| 作用域 | 工具 / 资源可见性 | 连接 |
|---|---|---|
| 全局 | 所有工作区、所有会话 | 插件根一条挂载 |
| 指定项目 | 只有勾选工作区的会话 | 每个会话(agent)各自一条挂载 |
| 未绑定 | 该工作区看不到工具、看不到服务器名、也不会建立任何连接 | 无 |
几个需要知道的后果:
- 项目限定的服务器是按会话连的:那个项目开着 3 个会话,就是 3 条到该 MCP 端点的连接; 子代理也会各自挂载。
- 未绑定的工作区会完全失去访问权(连系统提示词里的服务器名都没有)。这正是本功能的目的, 但也意味着工作区勾错了会静默地少掉访问权。
- 如果插件本身被停用(例如 profile 被重置后所有第三方 bundle 变成 disabled),就没有任何 作用域在生效,项目限定的服务器在所有项目里都不可用。
从 dsh-mcp-panel 迁移
已退役的 dsh-mcp-panel 把连接与项目绑定存在 ~/.dsh/storages/mcp_connector.json,并为每条连接
注入一条全局的 mcp-json-* 运行期条目。本插件首次启动时:
- 把这些连接及其绑定导入
mcp_scope.json(只做一次,用adoptedLegacy标记守卫;旧文件 不会被修改); - 清掉遗留的全局
mcp-json-*运行期条目,让迁移过来的绑定真正生效。
兼容性
- 开发与验证环境:DSH Desktop 0.2.0-rc.2(用到的主机端 API:
loader.import+ctx.plugin、ctx.storageDomain、ctx.connection.rpc.handle、agent/created)。 - 主机端通过
loader.import从 DSH 安装里取@deepseek-ai/dsh-mcp-client,因此本包不把它声明为 依赖;缺少该包的 DSH 构建无法挂载 MCP 服务器。 - 客户端是纯浏览器模块(无构建步骤):React 来自 Harness 的模块表,所有界面只用
--dsw-alias-*主题 token 着色。
仓库结构
| 路径 | 作用 |
|---|---|
index.js |
主机端:存储、工作区解析、挂载协调、RPC 端点 |
client.js |
客户端:设置页(连接增删改、作用域选择器) |
cordis.patch.yml |
本 bundle 插入的 loader 行 |
locale/*.json |
插件清单显示的标题/描述 |
许可
MIT