DeepSeek Harness 插件:mikotomywife/dsh-mcp-loader - MCP 工具懒加载与按会话遮罩

前言

DeepSeek Harness (DSH) 通过插件机制扩展能力,其中 dsh-mcp-client 会将安装的 MCP 服务器工具在部署范围内全局注册。当安装大量 MCP 服务器时,每个请求都需要处理所有工具的模式定义,这产生了固定的开销,且会让工具列表变得庞大,导致模型难以在众多工具中选择正确的那个。

dsh-mcp-loader 旨在解决这一问题。它为每个多工具 MCP 服务器引入一个加载器工具,真实工具仅在调用加载器时进入模型上下文。这移除了工具模式在每次请求中的固定成本,并保持了可见的工具列表精简。

插件简介

  • 名称:mikotomywife/dsh-mcp-loader
  • 维护者:MikotoMyWife
  • 定位:DSH 的 MCP 工具懒加载插件,支持按会话遮罩和描述工程。
  • 许可证:MIT
  • 核心价值:减少 Token 消耗,优化工具列表,提升模型在多 MCP 服务器场景下的选择效率。

核心功能

插件提供以下能力:

  1. 按服务器加载器开关
    每个多工具服务器由一个加载器工具(默认命名 mcp_<server>)代表。调用加载器可加载、隐藏或重新加载真实工具。加载状态是按会话隔离的:一个会话的加载对其他会话不可见。

  2. 工作模式

    • auto:启动时探测一次服务器工具数量,工具数小于阈值(singleToolThreshold)的服务器直接常驻,否则注册加载器。
    • lazy:服务器始终隐藏在加载器后,仅在调用时加载,启动时不探测。
    • eager:服务器常驻,不使用加载器。
  3. 按代理工具遮罩 (hiddenTools)
    在服务器加载后,可对特定工具进行遮罩。遮罩使用 restrict({ deny }) 实现,支持精确名称、公开名称(如 mcp__notes__*)和通配符(如 e*, ?)。遮罩仅影响可见性,工具仍全局注册。

  4. 全局禁用工具 (disabledTools)
    在注册轴层面直接丢弃匹配的工具,使其对任何代理都不可见。同样支持通配符规则。

  5. 描述工程
    支持按服务器或按工具的描述覆盖,以及参数描述截断(maxParameterDescriptionChars)。服务器发送的 instructions 会在加载结果中作为归属文本展示,而非长期占用加载器描述的 Token。

  6. 环境清理与资源桥接

    • 子进程环境会移除凭证类键值(如 /KEY|PASSWORD|SECRET|TOKEN)和 DSH_* 事实,同时保留 PATH 和 NPM_CONFIG_* 等环境变量。
    • 支持可选的 Resource Bridge,将已加载服务器的资源暴露给 Harness 资源服务。
  7. 容错与边界

    • 原子注册:失败时回滚到零工具。
    • 硬限制:限制 maxToolListPages、maxToolsPerServer 和 discoveryTimeoutMs,超时或超出限制的加载会失败并保持加载器可用。
    • 有序重新同步:防止并发加载导致旧数据覆盖新数据。

安装与构建

插件依赖 Node.js 环境和 @modelcontextprotocol/client 2.0.0。

  1. 克隆仓库并安装依赖:
npm install
  1. 编译代码:
npm run build
  1. 配置插件:
    根据 package.json 中的配置,插件通过 cordis.patch.yml 进行挂载。

典型用法

工作流程如下:

  1. 初始状态:工具列表仅显示加载器工具(例如 mcp_notes、mcp_browser)。
  2. 第一次调用:模型调用 mcp_notes({})。系统返回 ok,并在当前会话及其子代理中暴露真实工具(例如 mcp__notes__search)。
  3. 第二次调用:模型再次调用 mcp_notes({})。系统返回 ok (N tool(s) hidden),隐藏真实工具。
  4. 第三次调用:模型调用 mcp_notes({})。系统重新加载并暴露真实工具。

对于单工具服务器(数量小于阈值),启动时直接常驻,不经过上述加载器流程。

注意事项

  • Node 版本:插件要求 Node.js 版本 >=20。
  • 注册范围:工具注册是部署范围(全局)的,与官方 dsh-mcp-client 一致。hiddenTools 是在全局注册的基础上,按会话进行过滤。
  • 会话隔离:可见性是按会话的。一个会话的加载状态不会影响其他会话。
  • 单工具阈值:配置 singleToolThreshold: 0 可强制所有服务器使用按会话的加载器模式。
  • 权限安全:插件以当前 DSH 进程的权限运行。安装前应检查源码与许可证。

结语

dsh-mcp-loader 通过懒加载和按会话遮罩机制,解决了 DSH 在集成大量 MCP 工具时的上下文膨胀问题。它保留了工具的全局注册能力,同时通过精细的可见性控制优化了模型的使用体验。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜