前言¶
用 DeepSeek Harness(DSH)做智能体开发时,接入一个 MCP server 的常规动作大致是:找到包名或 URL、打开 profile 的配置文件、手写一段 YAML、重启、再验证工具是否出现在模型面前。包名拼错,或者包已经从 npm 下架,往往要到运行时报错才发现。
DSH 的理念是「一切皆插件」,这套流程同样可以交给插件来做。下面介绍的 dsh-mcp-market 做的就是这件事:把「发现 MCP server → 填配置 → 激活」搬进 Web 界面,装完不重启,模型立刻能用上新工具。
这是什么¶
dsh-mcp-market 是一个面向 DeepSeek Harness 的插件,定位是 MCP server 市场:内置一份经过筛选的目录(15 个 server,每个都验证过可用,提供中英文描述),浏览、搜索、筛选之后一键安装进正在运行的 profile,底层依赖官方的 @deepseek-ai/dsh-mcp-client。
它由 LKMeng2001 维护,采用 MIT 许可证,代码在 GitHub 开源。它解决的问题很具体:让 MCP server 的安装从手工改配置文件变成界面里的几次点击,并且热激活、不用重启。
核心功能¶
目录与 npm 存活校验¶
插件内置一份目录,包含 15 个 MCP server,描述提供中英文两份。加载时会逐条把 stdio 类型的包名拿到 registry.npmjs.org 上做存在性校验:已从 npm 下架的包会被置灰并禁止安装。按 README 的说明,这一步一方面挡住死条目,另一方面防止包名被仿冒(typosquat)的条目混进目录。
两种传输方式的一键安装¶
安装界面支持两类 server:
- stdio:本地进程型,安装前填写 command、args、env;
- streamable-http:远程 URL 型,安装前填写 url、headers。
点击安装后,插件通过 ctx.loader.create() 在当前运行中的 profile 里直接创建服务,不需要重启 dsh;配置会持久化,重启后依然生效。
已安装列表的管理¶
Settings → MCP Market 的已安装列表支持:
- 启用 / 停用某个 server;
- 编辑配置,改完通过 HMR 重连,不用重启;
- 卸载。
目录里没有的 server,可以用手动「添加 server」表单自行录入,参数项与目录安装一致。
目录来源与离线回退¶
目录数据有三层来源:
- 优先拉取 GitHub Pages 上的远端目录 JSON:
https://LKMeng2001.github.io/dsh-mcp-market/servers.json,其规范来源是仓库里的docs/servers.json,编辑推送后全局更新,不需要发版; - 拉取结果有内存缓存;
- 拉取失败时回退到插件内置的快照
data/registry-snapshot.json(由docs/servers.json通过npm run sync:catalog生成)。
仓库里有一条 CI workflow,每天检查目录里的每个 npm 包是否仍然存在。如果想在某个 profile 里换目录源,通过插件配置项 registryUrl 覆盖即可。条目 schema 与 HTTP 路由、loader 的设计在仓库的 README.zh.md 里有文档。
干净的持久化方式¶
所有安装动作只写 profile 配置文件 cordis.patch.yml 里一个 # --- dsh-mcp-market managed --- 标记块,块外用户自己写的配置原样保留,不会被插件改写。
安装与启用¶
从 npm 安装(推荐):
dsh plugin --profile web add dsh-mcp-market
本地检出安装(仅供开发调试,把路径换成你自己的):
dsh plugin --profile web add "D:\path\to\dsh-mcp-market"
后续更新与卸载:
# update
dsh plugin --profile web update dsh-mcp-market
# remove
dsh plugin --profile web remove dsh-mcp-market
安装或更新插件后需要重启 dsh web(涉及宿主端变更),然后打开 Settings → MCP Market 就能看到目录。
典型用法¶
装好插件后,接入一个 MCP server 的完整流程是:
- 重启
dsh web,打开 Settings → MCP Market; - 在目录里搜索目标 server,点击安装;
- 按传输类型填参数:stdio 填 command / args / env,streamable-http 填 url / headers;
- 确认安装。插件通过
ctx.loader.create()热激活该 server,模型立刻看到mcp__<serverName>__<tool>形态的工具,无需重启。
目录之外的 server 走手动添加表单,流程相同。
想参与开发的话,克隆仓库后执行:
npm install
npm run build # tsc host → lib/, esbuild client → client/client.js
npm run typecheck
改动后先 npm run build 再重启 dsh web(宿主端变更;客户端变更可以用 dev watcher 观察)。
适用场景与注意事项¶
适合谁:
- 不想手写
cordis.patch.yml的 DSH 使用者,尤其是需要反复试装不同 MCP server 的时候; - 需要一份固定、经过存活校验的 server 清单的团队,可以用
registryUrl指向自己的目录 JSON。
注意事项:
- 插件以当前 dsh 进程的权限运行,安装前建议先读一遍它的源码与许可证(MIT);
- MCP server 本身是第三方代码/服务:stdio 类型会在本机拉起子进程,只安装你信任的来源;
- server 的配置(包括 env)以明文存进
cordis.patch.yml,不要把密钥直接写进去,需要时先加密; - 安全面上,插件的所有变更类路由都是同源 POST,并做 Origin 校验。
结尾¶
dsh-mcp-market 把 MCP server 的「找、装、管」收进 DSH 的设置页:目录带 npm 存活校验,安装热激活,配置只写托管块、不碰用户手写内容。对经常折腾 MCP 工具的 DSH 用户来说,它省掉的是每次手改配置、重启、排错的时间。
- 社区目录页:https://www.skillhub.cn/plugins/LKMeng2001/dsh-mcp-market
- GitHub 仓库:https://github.com/LKMeng2001/dsh-mcp-market
两个链接均为社区维护的独立站点,与 DeepSeek、幻方无官方从属关系。