按需连接 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🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
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: <这个目录的绝对路径>预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
yoyococo1234/dsh-plugin-mcp-switch
按需连接 MCP 服务器,默认断开不占上下文
相关插件 · 开发 / 工程
隐私简历生成器reactive-resume/reactive-resume
Reactive Resume 已迁至 GitHub 上的…
★ 45,125已汉化MCP
71.7
AI 架构文档生成器sopaco/deepwiki-rs
🚀 Litho 已进化为 Terrain —— 给你的 AI 智能体一张会呼吸的代码库地图。
★ 3,157已汉化DSH
70.8
长时任务执行闭环AMAP-ML/LongHorizon-Harness
面向 Computer-Use Agent 的 Loop Engineering
★ 1,764已汉化DSH
70.5
AI 编程纪律方法包GanyuanRan/Aegis
让 AI 编程 agent 变得可信:少返工、更安全、说“完成”前先给证据。
★ 1,384已汉化DSH
69.6
多代理编排运行时Enderfga/claw-orchestrator
面向编程智能体的运行时。把 Claude Code、Codex、Antigravity、Grok…
★ 586已汉化MCP
69.4
记忆进化插件csyangwen/dsh-memory-evolve
dsh-memory-evolve 使用场景指南
★ 461已汉化DSH
67.9