渐进披露 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 | 简体中文
1,000 个 MCP 工具,两个入口。需要时再加载准确的 Schema。
安装 · 试算 1,000 个工具 · 查看产品测试
大型工具库会在模型开始处理任务前就占用上下文。MCP Lens 缩小常驻 MCP 工具定义,跨服务器查找相关工具,并保留下一步调用需要的返回数据。
MCP Lens 为 DeepSeek Harness 提供两个模型可见工具:
mcp_search搜索相关工具,返回它们的准确输入 Schema。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 许可证
链接
同类插件
yjh051108/dsh-routing-suite★ 7003
一个仓库三件套:DSH 插件包的运行时注入器(注入、热重载、卸载、开发侧挂区一键转正、路由自愈,外带设置页插件管理:列出、卸载、拖入文件夹内化)、任务感知的思维模式路由 agent 预设(router-standard / router-spec / router-react)、以及分级两级任务协议(commit_star / lock_stage / revise_do / edit_plan / mark_task / redteam_verdict 六个工具,任务状态落盘)。注入器实现直接在库内,安装的是它自己的行为而不是一份依赖清单。
strukto-ai/mirage#dsh★ 3666
把文件系统与 bash 提供者换成 mirage 虚拟工作区:文件工具与 shell 命令作用于挂载的资源(RAM、S3、Redis、Slack、Gmail、Notion、Postgres)而非宿主磁盘,支持按挂载点设置读/写/执行模式、按命令选择沙箱(进程内 monty、pyodide、quickjs;远程 docker、e2b、daytona),并可在虚拟终端中安装 CLI(git、gh、slack、linear、ntn、gws,或自行注册的程序树)作为命令头词。
hust-open-atom-club/oh-dsh★ 325
社区发行版:TUI、桌面端与 Web UI 统一体验,分层安装、一步到位。
weijiafu14/pi2dsh★ 206
Pi Host ABI 兼容引擎:装一次之后,npm 上的 Pi 扩展原包经 `dsh plugin add <pi-package>` 直接作为 DSH 原生插件挂载。已在官方 DSH 上端到端验证 pi-mcp-adapter(完整 MCP 管理面:OAuth、resources、prompts、MCP Apps、elicitation、sampling)、@tintinweb/pi-subagents、pi-code、pi-hermes-memory、pi-background-tasks;`pi2dsh inspect` 在安装前报告一个包的兼容情况。
lire1131/dsh-undo-savepoint★ 166
DSH 撤销/回退系统:配置变更自动存档,一键撤销/恢复/回退到任意版本,支持 WebUI 与离线 CLI/GUI 工具(DSH 启动失败也能救)。
Fishquito7/dsh-skill-mcp-panel★ 155
在 DSH Web 设置中管理技能与 MCP 服务器:技能卡片热启停、工作区作用域、分组、批量迁移与拖拽导入,以及 stdio/HTTP MCP 增删改查、连接测试、密钥脱敏,并附带统一 dsh-panel 命令行。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。