dsh-lazy-mcp:DSH 的按需 MCP 网关

前言

DeepSeek Harness(DSH)官方的 @deepseek-ai/dsh-mcp-client 插件会在激活时就连接所有配置的 MCP 服务器,等待工具发现完成。这会导致启动变慢,且服务器会一直驻留,直到 Harness 重启。dsh-lazy-mcp 是一个懒加载 MCP 网关插件,它不会在启动时启动任何服务器,只在第一次调用需要时才建立连接,并在空闲一定时间后断开。

插件定位

dsh-lazy-mcp 是 DeepSeek Harness 的工作流类插件,由维护者 zhe97396-tech 开发。它是一个按需连接的 MCP 网关,支持三种服务器生命周期:lazy(默认,空闲断开)、lazy-keep-alive(空闲保持连接)和 eager / keep-alive(始终连接)。工具定义缓存在磁盘,子进程环境会自动脱敏敏感变量。

核心功能

按需启动与空闲断开

插件不会在 Harness 启动时启动任何 MCP 服务器。每个服务器在第一次被模型调用时才连接,并在空闲超过 idleDisconnectMs 配置后自动断开。对比官方 dsh-mcp-client,官方插件在激活时就等待所有服务器连接和工具发现完成,而本插件只在需要时才建立连接。

工具缓存与元数据

工具列表缓存在磁盘(默认路径为 <DSH_PROFILE_DIR>/lazy-mcp/tool-cache.json),即使服务器处于断开状态,也可以从缓存中获取工具描述。这使得模型即使在与不活跃的服务器交互时也能获得正确的工具列表。

环境脱敏

对于 stdio 类型的服务器,子进程环境会自动移除所有匹配 KEY|PASSWORD|SECRET|TOKEN(不区分大小写)的变量,以及所有 DSH_* 开头的变量,然后与服务器显式配置的 env 合并。环境变量值不会被记录或写入缓存,只有键名会被记录用于检测配置变更。

现有配置导入

插件支持通过 configPaths 配置项引用现有的 MCP 配置文件,包括 Pi(pi-mcp-adapter)、Claude Code、Cursor 或 .mcp.json 格式的配置。这些配置中的标准字段会被翻译为插件所需的格式,无需手动复制命令。

安装与启用

插件需要 Node.js 20 或更高版本,并使用一个 DSH profile(Web profile 是常用选择)。

安装

从 GitHub 安装:

dsh plugin --profile web add github:zhe97396-tech/dsh-lazy-mcp

安装后需要重启 dsh web。插件通过 profile 中的 - id: lazy-mcp 行启用。配置变更通常支持热重载,但如果通过包替换方式安装,可能需要重启。

配置示例

插件默认 servers: [],需要手动添加服务器配置:

- id: lazy-mcp
  config:
    idleDisconnectMs: 600000        # 10 分钟空闲后断开
    connectTimeoutMs: 30000         # 连接+工具发现的截止时间
    callTimeoutMs: 60000            # 单次工具调用的截止时间
    servers:
      - name: docs
        transport: stdio
        lifecycle: lazy
        description: Documentation lookup
        command: npx
        args: ['-y', 'some-mcp-server']
        # env: { SOME_TOKEN: '...' }   # 需要的密钥通过 env 传递
        # idleDisconnectMs: 120000     # 可选的每服务器空闲超时覆盖

      - name: knowledge
        transport: streamable-http
        lifecycle: lazy
        description: Internal knowledge base
        url: https://mcp.example.com/rpc

服务器配置中,name、transport 和对应的目标(command 或 url)是必填项。

环境脱敏说明

对于 stdio 服务器,子进程环境会自动移除敏感变量和 DSH 系统变量,避免模型凭证泄露。服务器如需密钥,必须通过自己的 env 映射提供。

导入现有配置

- id: lazy-mcp
  config:
    configPaths:
      - '~/.config/mcp/mcp.json'
      - '~/.pi/agent/mcp-adapter.json'

适用场景

适合需要连接多个 MCP 服务器但不想在 Harness 启动时全部激活的场景,特别是当某些服务器启动较慢或容易失败时。通过按需连接和空闲断开,可以减少资源占用和启动延迟。

注意事项

插件以当前 DSH 进程的权限运行,安装前应检查源码与许可证。插件依赖 @modelcontextprotocol/client 2.0.0,与官方桥接使用相同的 SDK,但不依赖任何 @deepseek-ai/* 包,因此 Harness 的 peer 范围变更不会影响它。

价值总结

dsh-lazy-mcp 通过按需连接和空闲断开机制,解决了官方 MCP 客户端在启动时连接所有服务器导致的延迟问题。工具缓存和环境脱敏提供了更完善的运行时管理,同时支持从现有配置导入,降低了迁移成本。插件在 Web UI 中提供实时的服务器状态面板,可查看每个服务器的生命周期、工具数量和可调的空闲窗口。

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

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

小夜