前言¶
在使用 DeepSeek Harness(DSH)时,接入多个 MCP(Model Context Protocol)服务器会导致工具列表膨胀。全量注入这些工具会消耗大量 token,同时工具列表的反复更新会破坏缓存。dsh-mcp 是一个客户端插件,旨在解决这些问题:它提供可视化管理界面,支持按需检索(tool search)热注入工具,并确保工具列表稳定,最大化缓存命中率。
核心功能¶
该插件包含以下核心能力:
- 可视化管理:在 Settings → MCP 中管理服务器列表,支持新建、编辑、删除、测试连接、启停及刷新。
- 工具级精细控制:展开每个服务器查看工具列表,默认全选,可取消勾选仅加载需要的部分。
- 进程级环境变量:支持全局 KV 配置。对于
streamable-http服务器,可在请求头中使用${变量名}语法,连接时自动替换为配置值(例如Authorization: Bearer ${TOKEN})。 - 双注入模式:提供
search(按需检索,省 token)与full(全量注入)两种模式。 - 图片结果透传:MCP 工具返回的图片经附件服务投影为引用进入模型上下文,带预检与降级文案。
- 零 npm 依赖:直接对接 DSH 内部能力。
- OAuth 认证支持:支持授权码 + PKCE 流程,token 自动刷新(24 小时内活跃自动续期)。
- 系统证书校验:HTTPS 连接默认按系统证书校验,无需额外配置。
安装与启用¶
安装命令如下:
dsh plugin --profile web add github:ArvinQi/dsh-mcp
该插件支持版本:dsh 0.2.0-rc.2。
安装后,插件会自动注册为 profile 的 bundle 层。重启 dsh web 后,通过 Settings → MCP 即可进入可视化管理页面。
配置与用法¶
在 Settings → MCP 页面中,你可以进行以下操作:
-
声明式服务器接管:
DSH 原生支持在cordis.patch.yml中声明 MCP 服务器。插件会读取这些声明。- 声明优先:如果
cordis.patch.yml中已存在同名声明的服务器(且未 disabled),插件将不会挂载同名行,以避免工具注册表冲突。 - 接管/释放:点击“接管”后,插件会在受管块内写入
disabled: true,让出serverName并由插件行接管挂载,从而启用 OAuth、凭据托管等功能。点击“释放”则交还控制权。
- 声明优先:如果
-
OAuth 认证:
OAuth 是显式开关。只有在设置页勾选“使用 OAuth 授权”时,才会挂载 OAuth provider。- 未勾选时不会自动挂载。
- 授权前只显示“授权中”,授权失败会写明原因。
- 授权由设置页按钮发起,宿主打开系统浏览器完成,本页每 5 秒轮询状态。
-
Tool Search 模式:
使用search模式时,模型通过mcp_tool_search热注入所需工具,大幅节省 token。工具列表稳定化机制确保未变化的工具保留原注册,最大化缓存命中。
适用场景与注意¶
- 适用场景:需要精细控制多个 MCP 服务器、希望节省 token 消耗、需要处理复杂认证(OAuth)或内网 HTTPS 证书校验的场景。
- 注意:
- 插件以当前 dsh 进程权限运行,安装前请检查源码与许可证(MIT)。
- 升级时,插件会按已有 OAuth 凭据自动迁移。
- 对于使用静态 token 的服务器,不要勾选 OAuth 选项,否则会被误判为 OAuth 挑战。