🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

MCP 开关 yoyococo1234/dsh-plugin-mcp-switch

DeepSeek Harness
yoyococo12349 天前有提交已提供中文文档扫描:含敏感能力

按需连接 MCP 服务器,默认断开不占上下文

29.9/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/24 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add yoyococo1234/dsh-plugin-mcp-switch
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
dsh 原生插件 · dev
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 9 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件发起外部网络请求
查看扫描证据(共 8 处,展示前 8 条)
  • 读取本地文件
    index.js:65
    try { return JSON.parse(readFileSync(path, 'utf8')) } catch { return null }
  • 写入本地文件
    index.js:70
    mkdirSync(dirname(STATE_PATH), { recursive: true })
  • 写入本地文件
    index.js:73
    writeFileSync(tmp, text)
  • 读取本地文件
    index.js:75
    if (existsSync(STATE_PATH)) copyFileSync(STATE_PATH, BACKUP_PATH)
  • 写入本地文件
    index.js:75
    if (existsSync(STATE_PATH)) copyFileSync(STATE_PATH, BACKUP_PATH)
  • 写入本地文件
    index.js:77
    renameSync(tmp, STATE_PATH)
  • 读取本地文件
    index.js:604
    if ((/^[A-Za-z]:[ /]/.test(cmd) || cmd.startsWith('/')) && !existsSync(cmd)) {
  • 发起网络请求
    client.js:41
    const resp = await fetch(API + path, {
扫描于 2026/10/31(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

DeepSeek Harness 的 MCP 开关插件:MCP 服务器默认不连接(不占上下文),你可以用智能体工具(mcp_switch_*)或一个小设置面板来开关它们。

README

由 DeepSeek 最新模型翻译生成
dsh-plugin-mcp-switch 按需开关 MCP 服务器的 DSH 插件:默认全部断开,不加载工具、不占用上下文;需要时再打开。 设置 → MCP 开关 上图就是设置页:顶部选启动策略、勾选会话结束回收;每行显示状态、自启、上下文成本(工具数 / 约多少 tokens),右侧一键连接/断开。 七个智能体工具 | 工具 | 作用 | | mcp_switch_list | 列出服务器、状态、上下文成本(工具数 / 约多少 tokens)、启动策略、分组 | | mcp_switch_on | 打开(连接);name: "all" 全开;重服务器需 confirm: true | | mcp_switch_off | 断开;name: "all" 全断 | | mcp_switch_add | 新增(stdio / streamable-http),env 与 headers 支持 ${VAR},token 不落盘 | | mcp_switch_remove | 删除(先断开再移出配置) | | mcp_switch_policy | 读/写 mode 与 reclaimOnSessionEnd | | mcp_switch_group | 分组预设:list / save / apply / delete | 设置页
展开完整文档(README 剩余 1 节)
dsh-plugin-mcp-switch

按需开关 MCP 服务器的 DSH 插件:默认全部断开,不加载工具、不占用上下文;需要时再打开。

设置 → MCP 开关

上图就是设置页:顶部选启动策略、勾选会话结束回收;每行显示状态、自启、上下文成本(工具数 / 约多少 tokens),右侧一键连接/断开。

七个智能体工具

| 工具 | 作用 |
| mcp_switch_list | 列出服务器、状态、上下文成本(工具数 / 约多少 tokens)、启动策略、分组 |
| mcp_switch_on | 打开(连接);name: "all" 全开;重服务器需 confirm: true |
| mcp_switch_off | 断开;name: "all" 全断 |
| mcp_switch_add | 新增(stdio / streamable-http),env 与 headers 支持 ${VAR},token 不落盘 |
| mcp_switch_remove | 删除(先断开再移出配置) |
| mcp_switch_policy | 读/写 mode 与 reclaimOnSessionEnd |
| mcp_switch_group | 分组预设:list / save / apply / delete |

设置页

左下角齿轮 → MCP 开关(settings.section,order 55,列表末尾):启动策略下拉 + 「会话结束自动回收」勾选 + 分组按钮 + 每行(状态 / 成本 / 连接·断开)。

启动策略

| startupMode | 重启后 | 切换时 |
| always-off(默认) | 一律断开 | 立即断开全部 |
| remember | 恢复上次状态 | 不动当前运行时 |
| auto-start | 只连 autoStart: true 的 | 连上自启的、断开其余 |

上下文成本

连接成功后统计 mcp__<名称>__ 的模型可见 schema 体积,估算 tokens 并写回状态文件,断开后仍可显示。
实测(本机):rea 约 86 万 tokens、windows-mcp 6.5k、open-design 6.0k、cad 0.3k。

重服务器保护:已知成本 ≥ 10 万 tokens 的服务器(如 rea),mcp_switch_on / 分组 apply / 设置页「连接」都会先拒绝,要求 confirm: true(设置页会提示改用智能体工具确认)。

会话结束自动回收

每个被打开的服务器记住是哪个会话打开的(openedBy)。该会话的智能体被 dispose 时(agent/disposed 事件),自动断开并落盘。子代理开的 MCP 随子代理结束回收。可用 mcp_switch_policy { reclaimOnSessionEnd: false } 关闭。

分组预设

mcp_switch_group { action: "save", name: "逆向", servers: ["rea"] }
mcp_switch_group { action: "apply", name: "逆向" } // 组内连上、组外断开
mcp_switch_group { action: "list" }

状态文件

~/.dsh/mcp-switch.json,原子写(写 .tmp → rename),每次保存前把上一版复制到 .bak。

{
"startupMode": "always-off",
"reclaimOnSessionEnd": true,
"groups": { "逆向": ["rea"] },
"servers": [
{ "id": "…", "name": "rea", "transport": "stdio", "enabled": false, "autoStart": false,
"cost": { "tools": 207, "bytes": 3087942, "tokens": 857762 },
"config": { "command": "…", "args": [], "env": {}, "cwd": "" } }
]
}

首次启动若该文件不存在,会从 ~/.dsh/mcp-console.json 迁移(全部置为断开)。

实现要点

- @deepseek-ai/dsh-mcp-client 在 dsh 安装目录的 app.asar 内,profile 安装的插件不能用裸包名静态 import(开机加载会 failed to import)。这里用 process.resourcesPath + pathToFileURL 按绝对路径动态导入。
- 每个 MCP 通过 ctx.plugin(mcpClient, config) 动态挂载,断开时 fiber.dispose();同一服务器的启停串行化,避免 serverName already in use。
- env / headers 的 ${VAR} 在启动时从进程环境解析,密钥不写进状态文件。
- /mcp-switch/api/ 挂在宿主 webServer 上但不受宿主鉴权保护,因此自带同源 + sec-fetch-site + 回环 + Host 校验(防跨站开关 MCP、防 DNS rebinding),请求体上限 64KB。

安装

plugin_manager install_bundle target: <这个目录的绝对路径>
预览分享卡片长什么样 ↓yoyococo1234/dsh-plugin-mcp-switch
分享 · DeepSeek Harness Hub
yoyococo1234/dsh-plugin-mcp-switch

按需连接 MCP 服务器,默认断开不占上下文

回到顶部