前言¶
在 DeepSeek Harness(DSH)里接多个 MCP 服务器时,工具数量很容易涨到上百个。若每轮对话都把全部工具写进系统提示词,token 开销会明显放大;同时 MCP 侧 tools/list_changed 通知会导致工具反复注销与重注册,缓存命中率下降。另一方面,服务器启停、环境变量、凭据和工具勾选若全靠手改配置文件,运维成本也高。
下面介绍社区插件 dsh-destinywind-mcp(维护者 rickwindman,分类 admin-security)。它在 DSH Web 设置里提供 MCP 管理界面,并延续自 dsh-mcp 的能力思路:可视化托管服务器、精细控制工具加载,以及 search / full 两种注入模式。插件基于 dsh-mcp 1.12.0(MIT)二次修改,npm 包名为 dsh-destinywind-mcp,当前版本 1.0.0。
这是什么¶
dsh-destinywind-mcp 是 DSH 的 Web 端插件:在 Settings → MCP(入口在「技能」下方)集中管理 MCP 服务器注册表,对接 Harness 内部的 MCP 客户端、存储域与凭据服务。
它主要解决三类问题:
- 缺少可视化管理入口时,新建/编辑/删除、测试连接、启停与刷新都可在 UI 完成;
- 多服务器场景下,通过按需检索(
mcp_tool_search热注入)或全量注入,控制工具进入上下文的规模; - 进程级环境变量与密钥分离:普通 KV 可列表维护,敏感值走凭据托管;请求头支持
变量名或${变量名}在连接时替换。
DSH 生态采用「一切皆插件」;SkillHub 目录页 为社区收录站点,与 DeepSeek / 幻方无官方从属关系。安装与运行前请自行查看 GitHub 仓库 源码与 MIT 许可证。插件以当前 dsh web 进程权限运行,接入的 MCP 命令与网络访问范围与此一致。
核心功能¶
以下能力均来自仓库 README 与 package.json 说明,可按需在设置页逐项使用。
可视化管理与配置方式¶
- 服务器生命周期:列表展示,支持新建、编辑、删除、测试连接、启停、刷新;新增服务器可走弹窗,并内置 GitHub 相关预设(package.json 描述)。
- JSON 全量维护:「JSON 维护配置」面板以 JSON 数组查看/编辑全部服务器,应用即保存。
- 工具级开关:展开各服务器工具列表,默认全选,可取消勾选以只加载需要的工具。
- 双注入模式:
search按需检索以节省 token;full全量注入,便于排查「工具是否注册成功」。 - 图片结果透传:MCP 返回的图片经附件服务进入模型上下文,带预检与降级处理(上游 dsh-mcp 实现说明)。
环境变量、凭据与 OAuth¶
- 进程级环境变量:全局 KV 配置支持批量添加;服务器请求头 value 写变量名或
${变量名}即可在连接时替换(例如Authorization: Bearer ${TOKEN})。 - 密钥托管:敏感信息经 DSH 凭据服务存储,不写死在明文配置里(package.json 描述)。
- OAuth:对
streamable-http且需 MCP OAuth(授权码 + PKCE)的服务器,可在配置中显式开启(设置页「使用 OAuth 授权」,oauth: true);连接时打开浏览器授权,token 持久化并由 SDK 刷新。若服务器使用静态Authorization头,不应误开 OAuth,否则 401 可能被当成 OAuth 挑战而反复弹授权。
与 cordis 声明式 MCP 的协作¶
DSH 可在 cordis.patch.yml 里用 @deepseek-ai/dsh-mcp-client 声明 MCP 服务器。插件会读取这些声明并在设置页只读展示(标记「cordis 声明」)。同名 serverName 时声明优先;可通过「接管 / 释放」在声明行与插件托管行之间切换,以启用 OAuth、凭据、${VAR} 头替换等仅插件侧支持的能力。规则与限制(如缺少显式 id、含 !!js 的声明不可接管等)以 README 为准。
宿主架构要点¶
插件分 host 与 client:lib/index.js 注册 mcpManager 服务并持久化 mcp_servers 存储域;client 在 apply() 中自行挂载 remote 命名空间,设置页通过内部 API 操作。运行时依赖 @deepseek-ai/* 等 peer 依赖,由 DSH profile 的模块解析提供,插件本身零 npm 依赖打包。
仓库 README 写明在 dsh 0.1.6-alpha.2 上开发与验证;DSH 与插件声明版本不一致时,设置页会给出排查提示(检查注册行、重启 dsh web、硬刷新、同步升级)。使用前请对照本机 DSH 版本与 package.json 中的 dsh 字段。
安装与启用¶
本插件声明了 dsh.bundle.patch,通过 profile 安装 bundle 即可写入依赖并自动追加注册行,无需手工改配置文件。
方式一:plugin_manager
plugin_manager { action: "install_bundle", target: "<本仓库绝对路径>" }
方式二:命令行 link 安装(包装进 profile,由 bundle 补丁自动注册):
dsh plugin --profile web add link:<本仓库绝对路径>
本地 link: 安装时,插件目录需包含指向 $DSH_HOME/profiles/node_modules 的 node_modules symlink(开发用,不入库),否则 symlink 被 realpath 后可能无法解析 @deepseek-ai/*(README 说明)。
生效步骤(两步缺一不可):
- 重启
dsh web——宿主半部与 client roster 在进程启动时装载,仅刷新浏览器不够。 - 硬刷新浏览器(
Ctrl + Shift + R)——避免加载缓存的旧 client bundle。
若只改客户端打包产物 lib/client.js,刷新页面即可;改 lib/index.js 等宿主代码仍需重启 dsh web。
典型用法¶
打开管理页¶
重启并硬刷新后,在 DSH Web 打开 设置(Settings)→ MCP,即可看到服务器列表与全局选项(含注入模式等)。
添加 MCP 服务器(示例)¶
在 cordis.patch.yml 中声明 stdio 型 GitHub MCP 的写法(只读展示或自行维护声明时使用):
- insert:
- id: mcp-github
name: '@deepseek-ai/dsh-mcp-client'
config:
transport: stdio
serverName: github
command: npx
args: ['-y', '@modelcontextprotocol/server-github']
在设置页中则可通过「添加服务器」表单或 JSON 面板维护同等信息;需要 OAuth、凭据或头占位符时,优先使用插件托管行而非纯声明行(README「声明式服务器」一节)。
确认工具进入会话¶
- 确认对应服务器状态为已连接,且所需工具已勾选(默认全选)。
- 注入模式为「按需检索」时,模型通过
mcp_tool_search检索后才会热注入工具,未检索到的工具不在系统提示词中属正常现象;可临时切到「全量注入」验证注册是否成功。
常见问题(节选)¶
- 看不到 MCP 菜单:按顺序检查是否重启
dsh web、是否硬刷新、是否装到当前 profile(如web)、peer 依赖是否声明完整(可运行node tests/check-peers.mjs)。 - 列表空或 API 404:多为宿主
mcpManager未注册或未重启;升级插件后需重启并硬刷新,避免 client 与 host 版本混用。 - 内网 HTTPS 证书错误:可用
NODE_OPTIONS=--use-system-ca启动dsh web,或配置NODE_EXTRA_CA_CERTS后重启。
完整 Q&A 见仓库 README「安装使用」与「常见问题排查」章节。
适用场景与注意¶
适合谁
- 在 DSH Web profile 下频繁增减 MCP 服务器、需要 UI 启停与测试连接的开发者;
- 接入多个 MCP、希望用
search模式控制工具 token 开销的智能体场景; - 需要把密钥放进凭据服务、在请求头用
${VAR}引用环境变量的部署方式; - 已用
cordis.patch.yml声明 MCP,又希望在同一界面查看声明来源并选择性「接管」以启用 OAuth 等能力的用户。
使用前注意
- 插件逻辑与 MCP 子进程、远程 HTTP 访问均在 DSH 进程权限下执行,安装前请审阅源码与 NOTICE(含 vendored 来源说明)。
- 声明式服务器与插件存储行同名时会冲突,页面会提示;OAuth 需显式开启,静态 Bearer 服务器勿误开。
- 社区目录当前星标为 0,功能以仓库文档与本地验证为准,勿假设与上游 dsh-mcp 行为完全一致(本仓库为修改版)。
结尾¶
dsh-destinywind-mcp 把 MCP 服务器注册、工具勾选、环境变量与凭据、OAuth 和注入模式收敛到 DSH Web 的 Settings → MCP,并兼容 cordis 声明式配置。若你已在 Harness 里堆叠多个 MCP,又希望少改文件、可控 token,可按 README 用 link: 或 install_bundle 装入当前 profile,重启 dsh web 并硬刷新后从设置页开始配置。
- 目录页:https://www.skillhub.cn/plugins/rickwindman/dsh-destinywind-mcp
- GitHub:https://github.com/rickwindman/dsh-destinywind-mcp