labmimors/dsh-mcp-lens

labmimors/dsh-mcp-lens

渐进披露 MCP 网关:用 `mcp_search` 检索大型远程工具目录,再由 `mcp_call` 按精确 schema 调用,并采用惰性连接与有界缓存。

‍ 开发与运行时agent-harnesscontext-engineeringcontext-optimization

DeepSeek Harness 的 MCP Lens

English | 简体中文

1,000 个 MCP 工具,两个入口。需要时再加载准确的 Schema。

MCP Lens 通过搜索和调用连接 1,000 个工具;组件测试中常驻 MCP 工具定义仅占 1,114 字节

安装 · 试算 1,000 个工具 · 查看产品测试

大型工具库会在模型开始处理任务前就占用上下文。MCP Lens 缩小常驻 MCP 工具定义,跨服务器查找相关工具,并保留下一步调用需要的返回数据。

MCP Lens 为 DeepSeek Harness 提供两个模型可见工具:

  1. mcp_search 搜索相关工具,返回它们的准确输入 Schema。
  2. mcp_call 按明确的 server/tool 调用工具,返回结果及其中的结构化数据。

这两个工具定义的 JSON 合计 1,114 字节,不会随工具库增大。在 1,000 个工具的组件测试中,直接客户端的工具定义占 647,962 字节。远端工具的 Schema 随搜索结果进入对话。连接按需建立,重复搜索会复用目录索引。

新版也修复了多步流程:客户 ID 与文字摘要一起返回时,模型仍能读到 ID,并继续查询订单。测试中的数据流程从 10/12 提升至 12/12。查看 9 月 10 日测试结果。

它适合分布在多个 MCP Server 上的几十到几千个工具。搜索会多一步;如果只有几个工具,而且几乎每次请求都要用,官方直接客户端更简单。

安装

使用 Node.js ^22.19.0 || >=24.0.0 和 Harness 0.1.2-rc.1。截至 2026 年 9 月 10 日,Harness 的 npm latest 和 next 都指向这个版本。

按以下步骤从主分支构建 Lens rc.10。npm 上已发布的仍是适用于 Harness 0.1.0-rc.6 的 rc.9。

npm install -g @deepseek-ai/dsh@0.1.2-rc.1
git clone https://github.com/labmimors/dsh-mcp-lens.git
cd dsh-mcp-lens
npm ci --ignore-scripts
npm run build
npm pack --ignore-scripts
dsh plugin --profile web add ./dsh-mcp-lens-0.1.0-rc.10.tgz

dsh plugin 使用 pnpm 安装。如果 PATH 中没有 pnpm,将最后一条命令替换为:

npm exec --yes --package=pnpm@10.20.0 -- dsh plugin --profile web add ./dsh-mcp-lens-0.1.0-rc.10.tgz

如果继续使用已有的 Harness 0.1.0-rc.6,请运行 dsh plugin --profile web add dsh-mcp-lens@0.1.0-rc.9。

连接第一个 MCP Server

插件初始没有配置 Server。打开 ~/.dsh/profiles/web/cordis.patch.yml;如果设置了 DSH_HOME,则打开 $DSH_HOME/profiles/web/cordis.patch.yml。

文件内容为空数组 [] 时,用下面的配置替换。有其他配置项时,将它追加为顶层列表项;已有 mcp-lens 项时,替换该项的 config。

- id: mcp-lens
  config:
    servers:
      - name: mcp-docs
        transport: streamable-http
        url: https://modelcontextprotocol.io/mcp

    cachePath: !!js dshHomePath('mcp-lens/catalog.json')
    allowTools:
      - mcp-docs/search_model_context_protocol
      - mcp-docs/query_docs_filesystem_model_context_protocol
    denyTools: ['mcp-docs/submit_feedback']

这会连接官方 MCP 文档 Server,开放其中两个只读查询工具。这个 Server 不需要 API Key;Harness 使用你已配置的模型服务。

检查配置,然后启动 Harness:

dsh --profile web --dump-config
dsh --profile web

接着提问:

使用官方 MCP 文档 Server,解释 MCP Client 应该在什么情况下使用 Streamable HTTP。

正常提问即可,模型会按需使用 mcp_search 和 mcp_call。

配置

设置 servers、cachePath,并把需要的工具放入 allowTools。模式匹配 server/tool,用 * 表示通配符。denyTools 优先于 allowTools;允许列表为空时,不开放工具。

每条 Cordis Patch 都会替换该项的整个 config,因此需要保留的自定义设置应一起写入。

本地 stdio Server
- id: mcp-lens
  config:
    servers:
      - name: local
        transport: stdio
        command: node
        args: ['/absolute/path/to/mcp-server.mjs']
        cwd: /absolute/path/to/project

    cachePath: !!js dshHomePath('mcp-lens/catalog.json')
    allowTools: ['local/search_*', 'local/read_*']
    denyTools: ['local/delete_*']

将命令、路径和工具匹配模式替换为你的 MCP Server 对应设置。

需要身份验证的 HTTP Server
- id: mcp-lens
  config:
    servers:
      - name: knowledge
        transport: streamable-http
        url: https://mcp.example.com/rpc
        headers:
          Authorization: !!js '`Bearer ${process.env.MCP_TOKEN}`'
        cacheNamespace: knowledge-acme-readonly

    cachePath: !!js dshHomePath('mcp-lens/catalog.json')
    allowTools: ['knowledge/read_*', 'knowledge/search_*']
    denyTools: ['*/delete_*', '*/destroy_*']

cacheNamespace 用于标识账户和权限范围,不包含凭据本身。切换账户或权限时一起修改。未设置这个字段时,带身份验证的 Server 目录只保存在内存中,重启后会重新获取。

超时、搜索数量和目录设置
字段默认值用途
catalogTtlMs8640000024 小时后刷新目录
idleDisconnectMs300000空闲 5 分钟后关闭连接
connectTimeoutMs30000连接超时
callTimeoutMs60000工具调用超时
discoveryTimeoutMs30000完整目录发现超时
maxDiscoveryPages1000每次发现的最大页数
maxToolsPerServer10000每个 Server 的最大工具数
maxBytesPerTool1048576每个工具的元数据字节上限
maxTotalCatalogBytes67108864目录与缓存总字节上限
maxHttpResponseBytes16777216HTTP 响应字节上限
maxCursorBytes4096分页游标字节上限
searchLimitDefault5默认搜索结果数
searchLimitMax10最大搜索结果数

默认值也可查看 cordis.patch.yml。

刷新失败时保留上一份可用目录,单个 Server 不可用也不会隐藏其他 Server 的结果。Lens 支持通过 stdio 和 Streamable HTTP 使用 MCP Tools。目前尚未实现 OAuth、Resources、Prompts、Elicitation 和基于 Task 的执行。

最新测试

最新改动让模型能看到结构化结果,包括后续调用需要的标识符。

测试结果
自动化测试178 项通过
16 个合成工具上的三项 Codex 模型任务Lens 3/3;官方直接客户端 2/3
16 和 1,000 工具目录上的数据流程修复后 12/12;修复前 10/12
Lens 工具定义2 个 Schema,1,114 B

模型任务在 Codex 中运行,通过真实 Harness ToolRuntime 和 MCP Server 调用工具。任务、结果和复现命令见产品测试。

早期实验:2026 年 8 月 14 日 DeepSeek V4 Flash 实测。

用你的工具库试一试

打开工具 Schema 计算器,加载 1,000 个工具的示例,或粘贴你导出的工具定义,对比常驻 Schema 大小。用 Copy share link、Copy Markdown 或 Download card 把测量结果分享给同事。计算在浏览器内完成,分享链接包含数值结果。

遇到搜不到正确工具的查询?提交一个最小搜索示例,便于我们复现。也可以在 DSH Directory 浏览项目。

开发

在源码目录中运行:

npm ci
npm run verify
npm run bench -- --output benchmark.json
npm run verify:dsh-install
npm run verify:dsh-profile

verify 包含类型检查、测试和构建。安装检查使用本地 MCP 测试 Server 和临时 Harness Profile。如果没有 Corepack,可通过 npm exec --yes --package=corepack@0.35.0 -- npm run verify:dsh-profile 运行 Profile 检查。

准确的 Harness 版本、测试命令和 Schema 大小 GitHub Action 见贡献指南。

Schema 计算器 · 支持 · 安全 · MIT 许可证