前言¶
DeepSeek Harness 中使用 MCP 时,模型需要知道有哪些工具可以调用。已有做法通常会把每个 MCP 服务器的完整工具集注册进提示上下文;当服务器和工具变多时,这部分开销会随可用工具数量一起增加。
ben7am1n/dsh-mcp-proxy 提供了一个替代形态:只注册 mcp_discover 与 mcp_call 两个代理工具,用懒连接和磁盘工具目录缓存承载后续的发现与调用。
插件定位¶
dsh-mcp-proxy 是 ben7am1n 发布的 DSH 插件,许可证为 MIT。
它解决的核心问题是:在配置多个 MCP 服务器时,避免把所有工具的完整 schema 都放进每次请求的上下文中。
核心功能¶
两个代理工具¶
插件向模型暴露两个工具:
mcp_discover:按关键字搜索工具目录,获得服务器、工具名、描述和参数名。mcp_call:指定服务器和工具名称,并原样传递参数调用工具。
这意味着它不会把每个 MCP 服务器的完整工具集注册到提示中。
懒连接与磁盘缓存¶
插件启动时不连接 MCP 服务器,首次发现或首次调用时才连接。
它使用磁盘上的工具目录缓存。冷启动时也能回答;当某个服务器暂时不可用时,仍可提供已经连接的发现结果。
服务器声明¶
插件支持通过配置声明 stdio 或 streamable-http 类型的 MCP 服务器。
servers 默认是空列表。
安装与启用¶
package.json 声明的 Node 要求为:
^22.19.0 || >=24.0.0
先安装插件:
dsh plugin --profile web add dsh-mcp-proxy
启用具体 MCP 服务器时,需要在配置中覆盖默认 row,并声明 servers 列表。由于 servers 默认是空列表,插件不会默认替用户启用 MCP 服务器。
典型用法¶
1、使用 mcp_discover 查找工具:
mcp_discover
它会按关键字搜索工具目录,返回命中条目的服务器、工具名、描述和参数名。
2、使用 mcp_call 调用工具:
mcp_call
它会按你指定的服务器和工具名称执行调用,并原样传递参数。
信任边界与控制¶
插件以当前 dsh 进程权限运行;每个 MCP 服务器命令都是运行在 agent 沙箱外的可信可执行代码。
插件本身不添加审批门。如果需要对 mcp_call 做限制,建议复用 DSH 中的工具控制点:
tools/pre-execute
ctx.tools.guard()
也可以结合权限预设,把安全策略放在统一位置。
适用场景与注意¶
适合配置了较多 MCP 服务器、但单次任务只会用到其中一部分工具的场景。
需要注意代理形态的成本:
- 如果模型不知道工具名,会增加一次工具发现往返。
- 工具调用前看到的是参数名,而不是完整 JSON schema。
安装前建议检查源码、许可证、Node 版本要求,以及你准备写入 servers 的 MCP 服务器命令。
结尾¶
dsh-mcp-proxy 的价值,是在保留按需发现和调用能力的前提下,把 MCP 工具的常驻提示成本压缩到两个代理工具。
GitHub:
- https://github.com/ben7am1n/dsh-mcp-proxy