在设置页启停和编辑本机 MCP 服务器配置
29.9/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/1 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add fanyongbing/dsh-mcp-native该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:需留意
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 启停本机MCP服务器
- 编辑服务器配置
- 搜索服务器卡片
DeepSeek Harness 的 MCP 服务器管理器——把本机 MCP 服务器当作原生 Loader 行来管理,设置页带卡片、搜索、启停和完整配置编辑器。零依赖,零构建。
README
由 DeepSeek 最新模型翻译生成dsh-mcp-native
DSH 本机 MCP 管理器 — 把 MCP 服务器当原生 Loader 行来管。
在 设置 → MCP 服务 里管理本机全部 MCP 服务器:卡片列表、搜索、启动/停用/重启、MCP 说明、配置编辑、从本机其他客户端导入。
零依赖 · 零构建 · 手写纯 JS,clone 下来直接能跑。
English · 中文
为什么叫 "native"
这个插件不引入第二份配置存储。每个 MCP 服务器就是 profile 里的一行原生 Loader 行(@deepseek-ai/dsh-mcp-client),和手写 cordis.yml 得到的完全一样:
| 你点的操作 | 实际发生的事 | 落在哪个文件 |
| 启动 / 停用 | ctx.pluginManager.setPluginEnabled(entryId, enabled);行不可寻址时回退到 entry.update({ disabled }) + tree.write() | <profile>/cordis.patch.yml(前者)或 cordis.yml(后者) |
| 重启 | 先停后启 —— 这是重连配额用尽后唯一能恢复该服务器的办法 | 同上 |
展开完整文档(README 剩余 1 节)
dsh-mcp-native
DSH 本机 MCP 管理器 — 把 MCP 服务器当原生 Loader 行来管。
在 设置 → MCP 服务 里管理本机全部 MCP 服务器:卡片列表、搜索、启动/停用/重启、MCP 说明、配置编辑、从本机其他客户端导入。
零依赖 · 零构建 · 手写纯 JS,clone 下来直接能跑。
English · 中文
为什么叫 "native"
这个插件不引入第二份配置存储。每个 MCP 服务器就是 profile 里的一行原生 Loader 行(@deepseek-ai/dsh-mcp-client),和手写 cordis.yml 得到的完全一样:
| 你点的操作 | 实际发生的事 | 落在哪个文件 |
| 启动 / 停用 | ctx.pluginManager.setPluginEnabled(entryId, enabled);行不可寻址时回退到 entry.update({ disabled }) + tree.write() | <profile>/cordis.patch.yml(前者)或 cordis.yml(后者) |
| 重启 | 先停后启 —— 这是重连配额用尽后唯一能恢复该服务器的办法 | 同上 |
| 保存配置 | ctx.configEditor.edit(entry, change);无该服务时回退到 entry.update({ config }) + tree.write() | <profile>/cordis.patch.yml 或 cordis.yml |
| 新增 / 删除 | 文件型 Include 树的 tree.create() / tree.remove() | <profile>/cordis.yml |
| 列出 / 读状态 | ctx.loader.entries() 过滤 options.name === '@deepseek-ai/dsh-mcp-client' | 只读 |
| 工具清单 | ctx.tools.schemas() 过滤 mcp__<serverName>__ 前缀 | 只读 |
停用是真的停用:插件实例被销毁 —— 连接关闭、stdio 子进程结束、工具从注册表注销、mcpResources provider 移除。没有「假停用」。
零构建:lib/index.js(宿主半边)和 lib/client.js(浏览器半边)都是手写可读的纯 JS。没有 TypeScript、没有 tsdown、没有 prepare 脚本,因此从 git 安装时也不需要跑构建。
功能
| 能力 | 说明 |
| 卡片列表 | 状态点、服务名、传输方式徽章、说明摘要、命令/地址、环境变量名、工具数量、工具清单 |
| 搜索 | 按服务名、loader id、命令、地址、说明、参数、环境变量名实时过滤 |
| 状态筛选 | 全部 / 运行中 / 已停用 / 异常 |
| 启动 · 停用 · 重启 | 见上表;重启用于从「重连次数用尽」状态恢复 |
| MCP 说明 | 内置 18 个常见 MCP 服务器的说明库 + 从配置推导的兜底说明;「说明」页列出全部生效设置、官方文档链接、已注册工具及各自描述 |
| 配置编辑 | 表单模式(基本信息 / stdio / HTTP / 高级 / 重连策略)+ JSON 原始模式,支持 !!js 表达式双向转换 |
| 字段说明 | 官方 @deepseek-ai/dsh-mcp-client 全部 16 个配置字段的含义与默认值 |
| 新增 / 删除 | 直接增删 profile 中的 Loader 行 |
| 从本机导入 | 扫描 Claude Desktop、Claude Code、Cursor、Windsurf、VS Code 以及项目 .mcp.json / .claude/settings.json,勾选后写入当前 profile |
安装
从 GitHub(推荐)
dsh plugin --profile desktop add github:fanyongbing/dsh-mcp-native
需要本机有 git。不需要跑 pnpm build —— 这个仓库没有构建步骤。
从本地源码(开发用)
git clone https://github.com/fanyongbing/dsh-mcp-native.git
dsh plugin --profile desktop add link:/absolute/path/to/dsh-mcp-native
link: 安装后改 lib/client.js 刷新页面即生效;改 lib/index.js 需要重启 dsh(见「开发」)。
从 npm
包名 dsh-mcp-native 目前未被占用,可自行 npm publish 后用:
dsh plugin --profile desktop add dsh-mcp-native
也可以在 设置 → Plugins 里通过插件管理器 / 插件市场安装。
安装后设置导航里会出现 MCP 服务(settings.section 的 mcp 条目,order 45)。
它是怎么工作的
插件是一个「双半边」DSH 包:
dsh-mcp-native/
├── package.json # dsh.bundle.patch + dsh.client 双半边声明 ├── cordis.patch.yml # 把宿主行 dsh-mcp-native 插入 profile ├── lib/ │ ├── index.js # 宿主半边:/mcp-native 路由 + Loader 操作 │ ├── client.js # 浏览器半边:设置页(window.__ModuleLoader__ 手写包) │ ├── catalog.js # 配置字段说明 + 常见 MCP 服务器说明库 │ └── discover.js # 本机其他客户端 MCP 配置扫描 └── test/ # 零依赖测试,CI 直接跑
- 宿主半边用 ctx.webServer.register({ kind: 'prefix', path: '/mcp-native' }) 暴露一组 JSON 路由。
- 浏览器半边用 ctx.slots.register 往 settings.section 注册一个设置区块,通过 fetch 调用那些路由。
- 这条 HTTP 通道是第三方 DSH 插件唯一可用、不依赖 typert 代码生成的宿主↔浏览器通路;自定义 Remote 命名空间需要 monorepo 内部的生成器,第三方拿不到。
关于「运行中」的诚实说明
@deepseek-ai/dsh-mcp-client 没有发布任何连接状态 API —— client、connectedAt、failedAttempts 都是 startConnection 里的闭包变量,外部拿不到。并且默认 failOnStartupError: false 时,即使首次连接失败,插件 fiber 仍然是 ACTIVE。
所以本插件明确区分两件事:
- 运行中 = Loader 行已挂载、MCP 客户端已拿到连接机会。不等于连接成功。
- 工具列表 = 连接成功唯一的直接证据。
界面在「说明」页把这一点写出来了,不用状态点冒充连接状态。指向一个不存在的地址时,你会看到「运行中 + 0 个工具」,这是正确且诚实的显示。
配置字段
配置写在 profile 的 Loader 行里,一行一个服务器:
- id: mcp-github
name: '@deepseek-ai/dsh-mcp-client'
config:
serverName: github
transport: stdio
command: npx
args: ['-y', '@modelcontextprotocol/server-github']
env:
GITHUB_TOKEN: !!js process.env.GITHUB_TOKEN
| 字段 | 默认 | 说明 |
| transport | 必填 | stdio 或 streamable-http(没有 SSE) |
| serverName | 必填 | 工具名前缀:模型看到 mcp__<serverName>__<tool>,[A-Za-z0-9_-]{1,32} |
| command / args / env / cwd | — | stdio:可执行文件、参数、追加环境变量、工作目录 |
| url / headers | — | streamable-http:端点地址与附加请求头 |
| toolCallTimeoutMs | 60000 | 单次工具调用/资源请求超时 |
| maxInstructionBytes | 32768 | 服务器说明的最大字节数,超限拒绝连接 |
| failOnStartupError | false | 为 true 时首次连接失败会让插件加载失败 |
| reconnect. | 见界面 | enabled / initialDelayMs / maxDelayMs / maxAttempts |
两个容易踩的坑:
1. transport 在 schema 里不是必填,但缺了它 createTransport 会返回 undefined,连接静默失败。本插件保存时总是显式写入。
2. 环境变量会被擦除:名称匹配 /KEY|PASSWORD|SECRET|TOKEN/i 以及全部 DSH_ 的父进程变量不会传给子进程,只有行里显式声明的才会 —— 所以密钥写在 env 里是安全的。
开发
git clone https://github.com/fanyongbing/dsh-mcp-native.git
cd dsh-mcp-native
npm test # 71 项检查,零依赖,无需 npm install
- test/host.test.mjs —— 50 项宿主半边集成测试。起真实 HTTP server 打真实路由,用忠实复刻的 Cordis 替身(文件型 Include 树 / Loader 内存树 / configEditor / pluginManager / tools),覆盖增删改查、!!js 往返、可寻址与不可寻址两条路径、以及各类非法输入拒绝。
- test/client.test.mjs —— 21 项浏览器半边契约测试。扮演宿主的模块加载器,跑插件工厂与 apply,断言设置区块注册的形状与双语文案的完整性。
改动生效规则(重要)
| 改了 | 生效方式 |
| lib/client.js | client-modules 按文件修订号重新提供 bundle —— 刷新页面即可 |
| lib/index.js | 需要重启 dsh。Loader 会缓存插件模块,实测 pluginManager 摘下再挂上、直接 touch 文件都不会让它重新导入 |
限制
这些都是上游约束,不是本插件的实现选择:
- 无法枚举「已连接」的服务器集合,也读不到单台服务器的连接状态 —— 上游没有这个 API。
- 无法在不切换 Loader 行的情况下启动/停止单台服务器 —— 没有更轻的操作。
- 重连次数用尽后无法强制重连,只能「重启」该行或重启 dsh。
- 只支持 stdio 与 streamable-http,SSE 服务器无法直接配置。
- 宿主半边是本地回环 HTTP 路由,读到的是 profile 的真实配置(含 env 值),请在可信环境下使用。
兼容性
- DSH >= 0.2.0-rc.1(dsh.engines.dsh)
- Node >= 20
- 需要 settings.section 插槽存在(@deepseek-ai/dsh-client-ui-settings-general 提供)。用 ctx.slots.inject 等声明,因此会话在完全没装设置壳的部署里也不会报错。
License
MIT
dsh-mcp-native —— 在设置页面里,把本机的 MCP 服务器当作 DSH Loader 原生行来管理。
每个 MCP 服务器就是你配置档里的一条 @deepseek-ai/dsh-mcp-client Loader 条目 —— 不存在第二份私有配置存储。启动/停止驱动该行的 disabled 标志(harness 用的也是这套机制),改配置走 configEditor,增删则用文件型 include 树自带的 create/remove。停止服务器就是真的停掉:插件实例被销毁,socket 关闭,stdio 子进程被杀,它的工具全部注销。
卡片 · 搜索 · 启动/停止/重启 · 文档 · 配置编辑器 · 从其他本地客户端导入。
零依赖,零构建。 lib/index.js 和 lib/client.js 都是手写的、可读的 JavaScript —— 没有 TypeScript,没有打包器,没有 prepare 脚本。git clone 下来就能跑。
dsh plugin --profile desktop add github:fanyongbing/dsh-mcp-native
npm test # 71 checks, no install needed
如实上报状态: @deepseek-ai/dsh-mcp-client 没有公开任何连接状态 API,而在默认的 failOnStartupError: false 下,一个从未连上的服务器,它的 fiber 依然是 ACTIVE。所以界面从不声称某个状态点代表「已连接」—— 工具列表才是连接存活的唯一直接证据。
MIT 协议。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
fanyongbing/dsh-mcp-native
在设置页启停和编辑本机 MCP 服务器配置
相关插件 · 市场 / 管理
插件精选列表awesome-dsh-plugin/awesome-dsh-plugin
DeepSeek Harness(dsh)插件精选列表
★ 22,399未汉化DSH
73.6
新词雷达zhuyansen/new-term-radar
new-term-radar新词雷达
★ 2,049已汉化MCP
72.8
插件生态导航0xsline/awesome-deepseek-harness
安装 贡献指南 DeepSeek Docs 公开插件目录 Issues
★ 1,188已汉化DSH
72.6
技能注册中心iflytek/skillhub
企业级开源智能体技能注册中心——发布、发现并管理组织内可复用的技能包。
★ 5,384已汉化DSH
71.9
插件市场目录imsai-sh/awesome-deepseek-harness-plugins
面向 DeepSeek Harnessdsh生态的社区插件目录,共收录 13950 个插件含 PR 收录与…
★ 360已汉化DSH
71.9
插件精选清单Anil-matcha/awesome-dsh-plugin
DeepSeek Harnessdsh精选指南——DeepSeek…
★ 1,013已汉化DSH
71.7
这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。