DeepSeek Harness 插件

labmimors/dsh-mcp-lens

Star 数 ★ 9 下载量(近 30 天) 903 分类 开发与运行时 收录于 2026-08-15 npm dsh-mcp-lens

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

安装

# npm 包(预构建)

dsh plugin --profile web add dsh-mcp-lens

# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)

dsh plugin --profile web add github:labmimors/dsh-mcp-lens

装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。

README

English | 简体中文

verify

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,因此需要保留的自定义设置应一起写入。

- 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 对应设置。

- 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 目录只保存在内存中,重启后会重新获取。

字段 默认值 用途
catalogTtlMs 86400000 24 小时后刷新目录
idleDisconnectMs 300000 空闲 5 分钟后关闭连接
connectTimeoutMs 30000 连接超时
callTimeoutMs 60000 工具调用超时
discoveryTimeoutMs 30000 完整目录发现超时
maxDiscoveryPages 1000 每次发现的最大页数
maxToolsPerServer 10000 每个 Server 的最大工具数
maxBytesPerTool 1048576 每个工具的元数据字节上限
maxTotalCatalogBytes 67108864 目录与缓存总字节上限
maxHttpResponseBytes 16777216 HTTP 响应字节上限
maxCursorBytes 4096 分页游标字节上限
searchLimitDefault 5 默认搜索结果数
searchLimitMax 10 最大搜索结果数

默认值也可查看 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 许可证

内容来自项目 README(GitHub)↗

链接

同类插件

查看整个分类 →

社区评论

评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。