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

MCP 管理器 JokerAn/dsh-mcp-manager

MCP
JokerAn26 天前有提交已提供中文文档扫描:含敏感能力兼容 / 相关生态

DSHDeepSeek Harness的 MCP 总管理器:一个页面装好、找到、开关、改配所有 MCP 服务器 ——…

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

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

相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/JokerAn/dsh-mcp-manager.git

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
生态应用
桌面端 / Web 外壳,不以 dsh plugin add 安装
装得上吗
本站已在 dsh 0.2.1-rc.5 下真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 26 天前
档位由哪些信号合成

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装

仓库 package.json 标记 private,未发布到 npm,需从源码安装

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包@local/dsh-mcp-manager(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/14 16:19:02

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

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

读写/删除本地文件发起外部网络请求
查看扫描证据(共 14 处,展示前 14 条)
  • 写入本地文件
    index.js:529
    await mkdir(dir, { recursive: true, mode: 0o700 })
  • 写入本地文件
    index.js:530
    await writeFile(join(dir, 'cordis.patch.yml'), patch, { mode: 0o600 })
  • 写入本地文件
    index.js:531
    await writeFile(join(dir, 'package.json'), manifest, { mode: 0o600 })
  • 读取本地文件
    index.js:596
    document = JSON.parse(await readFile(join(serverDir(serverId), 'cordis.patch.yml'), 'utf8'))
  • 读取本地文件
    index.js:634
    parsed = JSON.parse(await readFile(managerMetadataPath(serverId), 'utf8'))
  • 写入本地文件
    index.js:684
    await mkdir(serverDir(serverId), { recursive: true, mode: 0o700 })
  • 写入本地文件
    index.js:685
    await writeFile(managerMetadataPath(serverId), `${JSON.stringify(record, null, 2)}\n`, { mode: 0o600 })
  • 删除本地文件递归
    index.js:704
    await rm(dir, { recursive: true, force: true })
  • 读取本地文件
    index.js:966
    return { exists: true, text: await readFile(file, 'utf8') }
  • 写入本地文件
    index.js:976
    if (snapshot.exists) await writeFile(file, snapshot.text, { mode: 0o600 })
  • 删除本地文件
    index.js:977
    else await rm(file, { force: true })
  • 读取本地文件
    index.js:1744
    raw = await readFile(file, 'utf8')
  • 发起网络请求
    client/client.js:2181
    function fetch(sessionId) {
  • 发起网络请求
    client/client.js:2208
    const pending = fetch(sessionId).then((names) => {
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 GitHub 仓库

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

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

功能亮点

  • 集中管理所有MCP服务器
  • 卡片式一键安装
  • 自定义stdio接入

README

由 DeepSeek 最新模型翻译生成
dsh-mcp-manager DeepSeek Harness(DSH)的 MCP 总管理器 —— 一个页面管好你所有的 MCP 服务器。 dshfind dshfind 装 MCP、找 MCP、开关 MCP、改 MCP 参数,全在 设置 → 内置插件 → MCP 一个标签页里完成,不用再手写 cordis.patch.yml。 | 你想做的事 | 在这里怎么做 | | 装一个 MCP | 公共目录里搜一下,点卡片上的「安装」 | | 装 npm 上的 MCP | 输入 @scope/包名,卡片会从包的 bin 自动推导启动命令 | | 找 MCP | 直接搜官方 MCP Registry 与 npm,可翻页、可刷新 | | 开关 / 改参数 / 删除 | 卡片上的开关、齿轮、垃圾桶;改完保存即生效 | | 接自己的私有 MCP | 「+ 添加」,填 stdio 或 流式 HTTP 即可 | 装好的服务器,其工具会立刻以 mcp__<名称>__<工具> 注册给模型,无需重启。
展开完整文档(README 剩余 1 节)
dsh-mcp-manager

DeepSeek Harness(DSH)的 MCP 总管理器 —— 一个页面管好你所有的 MCP 服务器。
dshfind
dshfind
装 MCP、找 MCP、开关 MCP、改 MCP 参数,全在 设置 → 内置插件 → MCP 一个标签页里完成,不用再手写 cordis.patch.yml。

| 你想做的事 | 在这里怎么做 |
| 装一个 MCP | 公共目录里搜一下,点卡片上的「安装」 |
| 装 npm 上的 MCP | 输入 @scope/包名,卡片会从包的 bin 自动推导启动命令 |
| 找 MCP | 直接搜官方 MCP Registry 与 npm,可翻页、可刷新 |
| 开关 / 改参数 / 删除 | 卡片上的开关、齿轮、垃圾桶;改完保存即生效 |
| 接自己的私有 MCP | 「+ 添加」,填 stdio 或 流式 HTTP 即可 |

装好的服务器,其工具会立刻以 mcp__<名称>__<工具> 注册给模型,无需重启。

目录 · 30 秒安装 · 为什么需要它 · 特性 · 安装 · 使用 · 工作原理 · 开发 · 已知限制

30 秒安装

在 DSH 的 插件 页面点 + 添加插件,粘贴这一行,点安装:

https://github.com/JokerAn/dsh-mcp-manager

装完完全退出并重新打开 DSH,即可在 设置 → 内置插件 → MCP 看到它。详见 安装。

公共目录与我的服务器

为什么需要它

DeepSeek Harness 原生已经能读写文件、跑 bash、抓网页、搜网络 —— 所以那些「文件系统 MCP」「fetch MCP」装了没意义。

MCP 真正的价值是接外部服务:GitHub、Slack、Postgres、Notion、各类数据库与 SaaS。而这些只有从活的注册表才找得到,手写一份精选清单永远追不上。

所以本插件不内置推荐清单,而是直接查上游:

| 数据源 | 作用 | 能力 |
| 官方 MCP Registry | 默认源 | search + cursor 翻页;条目含 remotes[](托管 HTTP)或 packages[](npm / pypi) |
| npm registry | 补充源 | 覆盖尚未进入官方注册表的包;带月下载量与质量分 |

活体目录浏览

两个源都可搜索、可翻页、可刷新,卡片上直接给出来源、包名、月下载量、评分、传输方式,让你在点安装前就能判断值不值得装。

特性

活体目录浏览

- 搜索:输入即查(350ms 防抖),显示结果总数
- 分页:跟随上游 cursor「加载更多」,跨页按 id 去重,不会出现同一服务器两张卡
- 刷新:重拉当前查询;顶部还有全局刷新
- 双源切换:Registry / npm 分段切换,保留搜索词
- 离线降级:两个源都不可达时回退内置零配置种子,并明确标注「目录服务不可用,显示离线种子」,绝不伪装成实时结果

按包名直查(搜索搜不到也能装)

有些 MCP server 的作者没有标注任何 MCP 关键词,description 里也不含 "MCP" —— 靠关键词搜索永远找不到它们。

例如 @jokeran/frontend-code-skimmer:它是真实的 MCP server(README 标题就是 "Frontend-Code-Skimmer MCP",持续依赖 @modelcontextprotocol/sdk),但 keywords 为 null、描述里没有 MCP 字样,在 npm 搜索里排名第 22 位、在 keywords:mcp 前 250 条里查无此包。

因此插件支持直接按包名查询:输入 @scope/name 会直接查 npm registry,并从该包最新版本的 bin 字段自动推导启动命令:
| 包形态 | 推导结果 |
| 单一 bin(字符串或单键对象) | npx -y <pkg> |
| 多个 bin | npx -y -p <pkg> <bin>,优先选命中 /mcp\|skimmer\|server/i 的键 |
| 没有 bin | 不出卡(宁可不显示,也不给你一张点下去必然失败的卡片) |

服务器管理

- 卡片列表:状态点(已连接 / 错误 / 停用)、传输方式徽标、开关、齿轮、删除
- 就地编辑:改参数、环境变量、显示名,保存即生效(走 bundle 重载,不需要重启)
- 显示名可中文:serverName 受 [A-Za-z0-9_-]{1,32} 限制装不下中文,所以显示名单独持久化在 bundle 旁的 manager.json,不会写进服务器配置
- 失败回滚:保存失败时磁盘文件逐字节回滚,不留半成品状态
- 只读保护:你自己手写在 cordis.patch.yml 里的服务器(如 obscura)会标为「外部配置」,只读,不会被本插件误改

自定义接入

- STDIO:启动命令 + 参数 + 环境变量 + 工作目录 + 环境变量传递
- Streamable HTTP:URL + 请求头
- 手动添加时若只填了包名,表单会给出「填入 -y <pkg>」一键按钮,省得你猜 npx 参数

斜杠唤起

- 装完即出现在 / 列表:每台服务器一行,无需为每个 MCP 写 skill
- /名称 任务 一次回车:自动组成一条指定该 MCP 工具前缀的指令并发出
- 三种写法都认:/name、//name、/@scope/name
- 不抢已有命令:回车前查宿主命令目录,与内置命令同名时让位

安装

前提:已安装 DeepSeek Harness 桌面端。

不需要克隆仓库,直接在 GUI 里安装:

1. 打开 插件 页面(左侧边栏)
2. 点右上角 + 添加插件
3. 在输入框里粘贴本仓库地址:

https://github.com/JokerAn/dsh-mcp-manager

4. 点 安装

添加插件:粘贴仓库地址即可

安装成功后:

1. 完全退出并重新打开 DeepSeek Harness(Host 侧代码变更需要重启进程才会载入)
2. 打开 设置 → 内置插件 → MCP 标签页

MCP 标签页

桌面端当前托管的 MCP 目录是 ~/.dsh/mcp-servers/,每安装一个服务器就会在其中生成一个独立的小 bundle。

其他安装方式

如果你已经把仓库克隆到了本地,也可以让智能体用 plugin_manager 工具直接装本地目录:

plugin_manager install_bundle
target: /绝对路径/dsh-mcp-manager

使用

从公共目录安装

1. 在「公共 MCP 目录」里搜索,或直接浏览
2. 零凭据的服务器点「一键安装」即可
3. 需要令牌的(如 GitHub、Slack)点安装后会弹出表单,令牌字段以密码框输入

安装任意 npm 包

1. 切到 npm 源,或直接输入 @scope/name
2. 出现「直接安装」卡片,点一下即可(命令由包的 bin 自动推导)

自定义服务器

点 + 添加,选 STDIO 或 流式 HTTP,填好保存。

使用装好的工具

装完无需重启即可使用:服务器的工具会以 mcp__<serverName>__<toolName> 注册给模型。

例如装好 everything 后直接说「用 echo 工具回个话」,模型就能调用 mcp__everything__echo。

斜杠唤起:/服务器名 任务

每装一个 MCP,输入框的 / 列表里就自动多一行同名命令,不需要为每个 MCP 手写 skill:

/frontend-code-skimmer 用 skimmer 分析 vue2click 这个项目的提交按钮

回车后,这一轮会被替换成一条明确指定该 MCP 的指令(含它的工具名前缀 mcp__frontend-code-skimmer__),然后正常发给模型。也可以只打 /frontend-code-skimmer:光标停在命令后面,补上任务再回车。

三种写法都认:

| 写法 | 说明 |
| /frontend-code-skimmer | 推荐,与服务器名一致 |
| //frontend-code-skimmer | 触发器的 URL 豁免规则让第二个斜杠保留在查询里 |
| /@jokeran/frontend-code-skimmer | npm 包名写法,@scope/ 会被自动剥掉 |

列表行会显示自定义的显示名称作为标题、服务器名作为别名,右侧是「传输方式 · 状态」。行数上限 20。

不会抢内置命令:菜单里内置命令与 skill 排在前面;回车时还会查一次宿主命令目录,若服务器名与 /plan、/model 这类已有命令同名,该行会让给原命令(否则一个叫 plan 的服务器会悄悄废掉 /plan)。
坏了会自己说:万一 / 里没出现 MCP 服务器,设置 → 内置插件 → MCP 顶部会直接写明原因(注册被拒 / 拉取服务器列表失败 + 具体错误),控制台另有一行 [dsh-mcp-manager] … 可直接复制。

工作原理

关键约束:DSH 的 Loader 用 Node 的 ESM 解析器、以每个 patch 层的 baseUrl 为锚点导入插件行,而 @deepseek-ai/dsh-mcp-client 与 @modelcontextprotocol/client 都位于 app.asar 内 —— 插件解析不到它们。

因此本插件不自己实现 MCP,而是驱动真正的 Plugin Manager:

graph LR
UI[Client 半边settings.plugins.tab] -->|Connection RPC/dsh-mcp-rpc| HOST[Host 半边index.js]
HOST -->|作者文件| FS[~/.dsh/mcp-servers/<id>/]
HOST -->|installBundle / setBundleEnabled / removeBundle| PM[真实 Plugin Manager]
REC[官方 MCP Registry] -.->|搜索活体注册表| HOST
NPM[npm registry] -.->|搜索 / 直查| HOST
PM --> REACT[DSH Loader]
REACT --> MC[官方 dsh-mcp-client]
MC -->|mcp__name__tool| TOOLS[ctx.tools]

- 一个受管服务器 = 一个生成的纯配置 bundle(package.json + cordis.patch.yml),其唯一行指向官方 @deepseek-ai/dsh-mcp-client
- 安装/重载/卸载分别走 installBundle / setBundleEnabled / removeBundle(已安装的包绝不重复 install,否则管理器会以 ambiguous-install 拒绝)
- 编辑保存前先快照文件,失败即回滚

本地路径安装实测约 370ms、离线可完成,因此「每服务器一个 bundle」在交互上完全可行。

开发

node --check index.js
node --check client/client.js
node test/host.test.mjs # 98 个用例
node test/client.test.mjs # 渲染 / 交互 / 错误映射

文件结构

| 路径 | 作用 |
| index.js | Host 半边:/dsh-mcp-rpc 频道、注册表抓取、bundle 作者与装载 |
| client/client.js | Client 半边:settings.plugins.tab 的 MCP 标签页 |
| client/catalog.json | 离线降级种子(仅零配置服务器) |
| locale/{zh,en}.json | 插件在插件列表里的显示元数据 |
| cordis.patch.yml | 装载行 |

客户端硬约束

浏览器半边在一个受限模块环境里运行,改动时请遵守:

- 只能 require('react') / require('react/jsx-runtime'),不要 require 任何 @deepseek-ai/ 包
- 样式只用 --dsw- 主题 token,不要写死颜色;class 前缀 dshmcp
- 所有可见文本走 ctx.locale.bind('dshMcpManager'),zh / en 字典 key 必须一致
- 组件渲染不得抛错(已有 ErrorBoundary 兜底)

已知限制

- 活体握手由人工确认,不是自动化验收。 安装链路本身有自动化证据(真实 Plugin Manager 下的 installBundle、生成的配置文件、listBundles 记录、推导命令 npx -y <pkg> 实测 exit 0 启动);但「安装后真实 Loader 观察到该行 active,且工具进入模型工具表」这一步,是在真实桌面上手工安装并确认的(即截图中的「已连接」与 mcp__frontend-code-skimmer__* 工具),未由自动化用例覆盖 —— 自动化环境中的 phase 是从磁盘推导的投影,不构成握手证据。
- Host 侧改动必须重启应用才生效。 插件代码由 Node ESM 按 URL 缓存;remove + install、disable → enable 都不会重新导入源码。Client 侧改动刷新页面即可。
- 自建 harness 请显式设定 DSH_HOME。 未设置时它会回退到真实 ~/.dsh,从而在 ~/.dsh/mcp-servers/ 下留下没有对应插件行的孤儿目录。插件自身按 $DSH_HOME 正确解析路径,这属于 harness 的卫生问题。

给你的 DSH 插件打上 dsh-plugin topic

DSH 的插件发现机制走 GitHub topic:任何公开仓库只要打上 dsh-plugin,就会出现在插件画廊里。

给你自己的插件加上它,别人就能搜到你:

gh repo edit <你的用户名>/<仓库名> --add-topic dsh-plugin

本仓库同时打了这些 topic,便于按关键词被检索到: dsh-plugin · deepseek-harness · dsh · mcp · mcp-server · mcp-client · model-context-protocol · cordis · deepseek · plugin

许可证

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

DSHDeepSeek Harness的 MCP 总管理器:一个页面装好、找到、开关、改配所有 MCP 服务器 ——…

这是你的仓库?认领条目

回到顶部