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

MCP 服务管家 gainaixiaobing/dsh-mcp-manager

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

集中查看、启停并导入本机 MCP 服务配置

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

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

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

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么[目录]—
dsh 原生插件 · market
暂无时间戳·判据 →
装得上吗[实装验证]✓
本站已在 dsh 0.2.1-rc.5 下真实安装成功
非静态推断
L4 · 真实安装等级说明 →
数据截至 2026/11/03·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/03·判据 →
还在维护吗[仓库]✓
活跃:最近一次提交在 17 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

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

验证判据与等级说明 →

可信度证据

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

可执行外部命令读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 16 处,展示前 16 条)
  • 写入剪贴板
    client.js:311
    await navigator.clipboard.writeText(lines.join('\n'));
  • 发起网络请求
    client.js:318
    const response = await fetch(url, {
  • 写入剪贴板
    client.js:746
    await navigator.clipboard.writeText(result?.content ?? '');
  • 读取本地文件
    lib/store.js:86
    const text = await readFile(this.path, 'utf8');
  • 写入本地文件
    lib/store.js:142
    await mkdir(dir, { recursive: true, mode: 0o700 });
  • 写入本地文件
    lib/store.js:144
    await copyFile(this.#path, `${this.#path}.bak`);
  • 写入本地文件
    lib/store.js:145
    await chmod(`${this.#path}.bak`, 0o600).catch(() => {});
  • 写入本地文件
    lib/store.js:151
    await writeFile(temp, body, { mode: 0o600 });
  • 写入本地文件
    lib/store.js:152
    await rename(temp, this.#path);
  • 写入本地文件
    lib/store.js:154
    await chmod(this.#path, 0o600);
  • 发起网络请求
    lib/probe.js:106
    const response = await fetch(record.url, {
  • 执行外部命令来自配置/变量
    lib/probe.js:217
    child = spawn(record.command, record.args ?? [], {
  • 读取本地文件
    lib/importers.js:238
    info = await stat(file);
  • 读取本地文件
    lib/importers.js:244
    const text = await readFile(file, 'utf8');
  • 读取本地文件
    lib/importers.js:303
    info = await stat(input.file);
  • 读取本地文件
    lib/importers.js:308
    const text = await readFile(input.file, 'utf8');
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

社区实装还没有人打卡 · 装过的第一个就是你
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

轻量级 DeepSeek Harness MCP 服务管理器:查看/启停/增删/导出本机已接入的 MCP 服务,零依赖,含设置页 UI。

README

由 DeepSeek 最新模型翻译生成
dsh-mcp-manager 轻量版 MCP 服务管理器:管理本机已经接入 DeepSeek Harness 的 MCP 服务,还能从 Claude Desktop / Cursor / VS Code 等客户端扫描、导入配置。 不做插件市场、不做远程目录、不做 OAuth 授权流——只把「本机 MCP」管好。 一个轻量版 MCP 服务管理器,面向 DeepSeek Harness(DSH):查看、启用/停用、新增、编辑、移除、探测,并按通用的 mcpServers JSON 约定导入导出。零 npm 依赖。 它做什么 | 能力 | 入口 | 说明 | | 列出 MCP 服务 | mcp_manager_list / 设置页 | 来源(profile / 受管)、状态、传输、端点(脱敏)、工具数;支持关键词/状态过滤 | | 查看详情与工具 | mcp_manager_inspect / 设置页展开 | 工具名 + 说明;状态区分「已连接 / 已停用 / 无工具 / 加载失败 / 未生效」 | | 启用 / 停用 | mcp_manager_set_enabled / 开关 | 受管服务持久化;profile 静态行只改本次运行 |
展开完整文档(README 剩余 1 节)
dsh-mcp-manager

轻量版 MCP 服务管理器:管理本机已经接入 DeepSeek Harness 的 MCP 服务,还能从 Claude Desktop / Cursor / VS Code 等客户端扫描、导入配置。
不做插件市场、不做远程目录、不做 OAuth 授权流——只把「本机 MCP」管好。

一个轻量版 MCP 服务管理器,面向 DeepSeek Harness(DSH):查看、启用/停用、新增、编辑、移除、探测,并按通用的 mcpServers JSON 约定导入导出。零 npm 依赖。

它做什么

| 能力 | 入口 | 说明 |
| 列出 MCP 服务 | mcp_manager_list / 设置页 | 来源(profile / 受管)、状态、传输、端点(脱敏)、工具数;支持关键词/状态过滤 |
| 查看详情与工具 | mcp_manager_inspect / 设置页展开 | 工具名 + 说明;状态区分「已连接 / 已停用 / 无工具 / 加载失败 / 未生效」 |
| 启用 / 停用 | mcp_manager_set_enabled / 开关 | 受管服务持久化;profile 静态行只改本次运行 |
| 接入新服务 | mcp_manager_add / 新增表单 | streamable-http 或 stdio;默认写入受管存储,重启自动恢复 |
| 编辑已有服务 | mcp_manager_update / 编辑表单 | URL / headers / command / args / env / cwd / 超时;密钥三态(保留/覆盖/删除) |
| 移除服务 | mcp_manager_remove / 删除按钮 | 受管:删记录+条目;profile:仅本次运行 |
| 握手探针 | mcp_manager_probe / 探针按钮 | 真实 initialize + tools/list:延迟、协议版本、工具数、结构化错误码、stderr(已脱敏) |
| 扫描本机配置 | mcp_manager_scan / 导入向导 | Claude Desktop / Claude Code / Cursor / Windsurf / VS Code / Cline / Zed / Continue |
| 导入 mcpServers JSON | mcp_manager_import / 粘贴 JSON | 先预览(新增/冲突)再写;冲突支持跳过/覆盖受管/自动改名;可导入为停用 |
| 导出 | mcp_manager_export / 导出面板 | patch(cordis.patch.yml,!!js process.env.)/ json(mcpServers,${ENV})/ markdown 清单 |

持久化怎么工作

- profile 静态声明(cordis.patch.yml 里的 @deepseek-ai/dsh-mcp-client 行)保持只读:启停/编辑只影响本次运行,重启恢复;需要持久化就导出 patch。
- 本插件受管的连接写入: <DSH_HOME>/mcp-manager/connections-<profile>.json(默认 ~/.dsh/mcp-manager/)。
启动时由插件自动 ctx.loader.create/update 成 dsh-mcp-client 条目,因此重启后仍在。
- 文件权限 0600、目录 0700;原子写(tmp + rename);每次覆盖前留一份 .bak;
- 写操作串行化(同一进程内),JSON 损坏时不覆盖原文件、只在 UI/工具里报错。

安装

方式一:DSH 面板

设置 → 插件 → 安装,spec 填:

github:gainaixiaobing/dsh-mcp-manager

方式二:CLI

dsh plugin --profile <profile> add github:gainaixiaobing/dsh-mcp-manager

方式三:从源码手动安装(离线)

git clone https://github.com/gainaixiaobing/dsh-mcp-manager.git
cd dsh-mcp-manager
./install.sh # 默认桌面 profile ./install.sh ~/.dsh/profiles/web

装好后重启 DeepSeek Harness。Host 半区需要重启;Client 半区在有 dsh-client-hmr 的发行版里会热替换。

使用

- 设置 → MCP 服务:搜索/状态筛选,逐行启停、探针、编辑、删除;顶部「新增 / 导入 / 导出」;
- 对话里也可以直接说:「列出我的 MCP 服务」「探测 qcc-company 通的吗」「把 Cursor 里的 MCP 配置导入进来」「把当前配置导出成 patch」。

架构

┌──────────────────────── Harness 运行时 ────────────────────────┐ │ ctx.loader.entries() ──► mcp-client 条目(profile 行 + 受管行) │ │ ctx.tools.schemas() ──► mcp__<server>__ 工具,决定「已连接/工具数」 │ │ ctx.loader.update/create/remove ──► 启停 / 增删 / 编辑(运行时) │ └────────────────────────────────────────────────────────────────┘ ▲ 10 个对话工具 mcp_manager_* ▲ 同源 HTTP:/mcp-manager/api/state、/mcp-manager/api/action(回环 + 同源 fence) │ ┌───────┴──────── Web UI(设置页 settings.section)──────────────┐ │ 列表 / 状态 chips / 搜索 / 探针 / 编辑 / 导入 / 导出 / 启停 │ └────────────────────────────────────────────────────────────────┘

代码结构(零 npm 依赖,只用 node 内建模块):

| 文件 | 职责 |
| lib/index.js | 插件入口 + manager 门面(list/add/update/remove/setEnabled/probe/scan/import/export) |
| lib/store.js | 受管连接存储(0600 / 原子写 / .bak / 串行 mutate) |
| lib/config.js | record 规范化、mcpServers JSON 互转 |
| lib/inventory.js | loader 条目 + 工具注册表 → 服务清单、状态判定 |
| lib/provision.js | 受管 record → dsh-mcp-client 条目(create/update/remove) |
| lib/probe.js | MCP 握手探针(streamable-http / stdio、错误分类) |
| lib/importers.js | 8 类客户端配置扫描、JSONC 解析、mcpServers 解析 |
| lib/export.js | patch / mcpServers JSON / Markdown 导出 |
| lib/sanitize.js | 统一脱敏出口(Bearer/JWT/URL/query/KEY=value/x-api-key…) |
| lib/tools.js / lib/web.js | 对话工具与同源 HTTP API |

状态语义

| 状态 | 判定 |
| 已连接 | 条目已启用、已有 fiber、命名空间下有工具 |
| 无工具 | 已启用且有 fiber,但工具数为 0(服务本身不提供,或连接失败被 mcp-client 吞掉) |
| 加载失败 | 已启用但没有 fiber(apply 抛错,常见于 serverName 重复声明) |
| 未生效 | 受管记录存在,但本次启动没有成功创建 loader 条目 |
| 已停用 | 条目 disabled: true |

同名重复(profile 行 + 受管记录共用一个 serverName)会在列表里打「同名」标记;解析时拒绝猜测,要求传条目 id;导入时按冲突策略处理。

安全边界

- 凭据只进受管存储(0600)或由用户自己放在 ~/.dsh/.env 里,导出/扫描/列表不回显值;
- 所有对外文本(探针 error/stderr、异常)统一过 sanitize.js;
- HTTP API 只接受本机回环 Host、校验 Origin 同源;
- 探针 stdio 子进程会清洗父进程环境中的凭据名(KEY/PASSWORD/SECRET/TOKEN、DSH_*);
- 扫描只读其它客户端配置,不写回、不修改。

设计参考(GitHub 调研)

实现前调研了 DSH 生态 10 个 MCP 面板与 8 个通用 MCP 管理器,取其长:

| 借鉴点 | 来源项目 |
| 自管存储 + loader.create/update 运行时挂载(不碰用户配置文件) | hyqhyq3/dsh-mcp-manager、null119/dsh-mcp-manage、ArvinQi/dsh-mcp |
| 受管连接持久化、编辑/删除闭环 | 同上 + functy23/dsh-mcp-studio |
| 导入前 plan(新增/冲突)+ 冲突策略 | modelcontextprotocol/inspector(planImport) |
| mcpServers 多形态解析、JSONC、跨客户端互操作 | milisp/mcp-linker、ravitemer/mcphub.nvim |
| 探针结构化诊断(延迟/协议/错误码/stderr) | PerryLink/dsh-mcp-panel、milisp/mcp-linker |
| 密钥三态语义(缺省=保留 / null=删除 / 值=覆盖) | Fishquito7/dsh-skill-mcp-panel |
| 统一脱敏出口 | PerryLink/dsh-mcp-panel |
| 状态 chips、工具名搜索、诊断复制 | Js2Hou/dsh-mcp-manager、hyqhyq3/dsh-mcp-manager |

只借鉴设计思路,未复制代码;所有实现为本仓库独立编写。

开发与测试

node --check index.js && node --check client.js
node --test test/host.test.mjs # 22 个:存储/清单/导入导出/探针/脱敏/schema
node --test test/client.test.mjs # 7 个:模块注册、槽位、渲染、启停、探针、面板
npm test # 两套一起跑

端到端验证方式见 test/README.md。GitHub Actions 在 Node 20/22/24 上跑同一套测试。

卸载

./uninstall.sh # 桌面 profile ./uninstall.sh ~/.dsh/profiles/web

通过面板/CLI 安装的,直接在面板里停用/卸载。受管存储文件不会被自动删除(如需清理由你手动删)。

限制

- 状态里的「已连接」= 工具已注册,不代表服务端业务可用;探针才是真实握手(但不会调用业务工具);
- 探针 tools/list 只取第一页(不翻 cursor),工具数特别多的服务可能少算;
- 不做 OAuth 授权流:需要 OAuth 的服务请自行获取 token 后用 headers/env 传入;
- 受管存储是明文 JSON(0600 权限),与 ~/.dsh/.env 同级信任模型;不要把它提交进 git;
- 不做 profile 文件写入器:持久化统一走「导出 patch + 手动合并」,避免插件替用户改配置。

License

MIT
预览分享卡片长什么样 ↓gainaixiaobing/dsh-mcp-manager
分享 · DeepSeek Harness Hub
gainaixiaobing/dsh-mcp-manager

集中查看、启停并导入本机 MCP 服务配置

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部