Skip to content

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 domain mcp_scope,表 connections 与 bindings)。
  • 管理页:设置 → 内置插件 → MCP 标签。

安装

让 Harness 里的 agent 用插件管理器安装(它会完成包安装与 bundle 选择,作用于当前 profile):

plugin_manager  action: install_bundle  target: @coolmentha/dsh-mcp-scope

本地开发时把 target 换成包目录的绝对路径即可。替换已安装的包后需要重启应用才会加载 新的 JavaScript 模块代(只做 disable/enable 会复用缓存里的旧模块)。

快速上手

  1. 打开 设置 → 内置插件 → MCP。
  2. 新增连接:填 serverName(模型看到的命名空间,例如 grafana-k8s-log);传输方式选 streamable-http(填 URL)或 stdio(填 command/args);headers/env 需要时填 JSON 对象。
  3. 为每条连接选作用域:
    • 全局(所有项目):任何工作区都能用;
    • 指定项目:可搜索的多选下拉框,勾选哪些 DSH 工作区,就只有这些工作区的会话能看到。
  4. 已选项目在下方以 chip 展示,点 × 可单个移除;连接可用开关停用,用「删除」移除。
  5. 重新应用 会立刻重跑挂载协调(不必重启)。

MCP 工具是在会话创建时注入的,所以改动后请新开一个会话验证;「重新应用」也会顺带 给还活着的会话重新挂载。

作用域行为

作用域 工具 / 资源可见性 连接
全局 所有工作区、所有会话 插件根一条挂载
指定项目 只有勾选工作区的会话 每个会话(agent)各自一条挂载
未绑定 该工作区看不到工具、看不到服务器名、也不会建立任何连接 无

几个需要知道的后果:

  • 项目限定的服务器是按会话连的:那个项目开着 3 个会话,就是 3 条到该 MCP 端点的连接; 子代理也会各自挂载。
  • 未绑定的工作区会完全失去访问权(连系统提示词里的服务器名都没有)。这正是本功能的目的, 但也意味着工作区勾错了会静默地少掉访问权。
  • 如果插件本身被停用(例如 profile 被重置后所有第三方 bundle 变成 disabled),就没有任何 作用域在生效,项目限定的服务器在所有项目里都不可用。

从 dsh-mcp-panel 迁移

已退役的 dsh-mcp-panel 把连接与项目绑定存在 ~/.dsh/storages/mcp_connector.json,并为每条连接 注入一条全局的 mcp-json-* 运行期条目。本插件首次启动时:

  1. 把这些连接及其绑定导入 mcp_scope.json(只做一次,用 adoptedLegacy 标记守卫;旧文件 不会被修改);
  2. 清掉遗留的全局 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