MCP工具搜索
](https://www.npmjs.com/package/mcp-tool-search) ](https://www.npmjs.com/package/mcp-tool-search) ](https://www.npmjs.com/package/mcp-tool-search)  ](https://nodejs.org/) 
将MCP工具定义上下文开销减少约85-96%。
MCP工具搜索是一个代理服务器,它仅用4个轻量级工具替换模型上下文窗口中的数十个MCP工具模式。该模型不是预先加载每个工具定义,而是按需搜索工具并通过代理调用它们。
Before: 50 tool schemas loaded → ~10,000 context tokens consumed every turn
After: 4 proxy tools loaded → ~600 context tokens (constant)问题
您添加的每个MCP服务器都将其完整的工具模式转储到模型的上下文窗口中。拥有5+台服务器和40+个工具 8000–20000+代币 对于模式定义,模型必须在每一个转折点上进行处理,即使它没有使用任何模式定义。
解决方案
MCP工具搜索位于MCP客户端和后端服务器之间:
- 目录生成器 预扫描所有MCP服务器,并将其工具定义快照到本地JSON文件中
- 代理服务器 仅公开4个工具——模型通过代理搜索、检查和调用工具
- 懒惰连接 --后端服务器在首次使用时生成,并保持活动5分钟
MCP Client ←→ MCP Tool Search Proxy ←→ Backend MCP Servers
↓ (lazily spawned)
catalog.json Context7, GitHub, etc.
(pre-built snapshot)4代理工具
| 工具 | 目的 |
|---|---|
search_tools | 按关键字或功能对所有后端工具进行模糊搜索 |
get_tool_schema | 检索特定工具的完整输入模式 |
call_tool | 通过代理在后端服务器上执行工具 |
list_servers | 列出所有已编目的服务器及其连接状态 |
快速开始
npx mcp-tool-search --help
# Or: npm install -g mcp-tool-search && mcp-build-catalog && mcp-tool-search安装
选项A:npm(推荐)
npm install -g mcp-tool-search选项B:来源
git clone https://github.com/KGT24k/mcp-tool-search.git
cd mcp-tool-search
npm install
npm run build设置
1.配置后端服务器
MCP工具搜索读取MCP客户端的服务器配置以发现后端工具。它使用相同的 .mcp.json 格式为克劳德代码。
2.构建工具目录
# If installed globally:
mcp-build-catalog
# If from source:
npm run catalog这将连接到每个配置的MCP服务器,快照其工具定义,并写入 catalog.json。代理本身会自动从目录中排除。
3.将代理添加到您的MCP客户端
请在下面选择您的客户端以进行正确的配置:
Claude Code
添加到您的 .mcp.json 在项目根目录中(或 ~/.mcp.json 全局配置):
{
"mcpServers": {
"mcp-tool-search": {
"command": "npx",
"args": ["-y", "mcp-tool-search"]
}
}
}或者,如果从源代码安装:
{
"mcpServers": {
"mcp-tool-search": {
"command": "node",
"args": ["/path/to/mcp-tool-search/dist/index.js"]
}
}
}Claude Desktop
添加到您的 claude_desktop_config.json:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - 窗户:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"mcp-tool-search": {
"command": "npx",
"args": ["-y", "mcp-tool-search"]
}
}
}Cursor
添加到光标MCP设置(.cursor/mcp.json 在您的项目或全局配置中):
{
"mcpServers": {
"mcp-tool-search": {
"command": "npx",
"args": ["-y", "mcp-tool-search"]
}
}
}Windsurf
添加到您的Windsurf MCP配置(~/.codeium/windsurf/mcp_config.json):
{
"mcpServers": {
"mcp-tool-search": {
"command": "npx",
"args": ["-y", "mcp-tool-search"]
}
}
}4.禁用直接后端服务器
在中删除或禁用其他MCP服务器条目 .mcp.json --代理现在处理对它们的所有工具调用。
环境变量
| 变量 | 默认值 | 用途 |
|---|---|---|
MCP_TOOL_SEARCH_CATALOG | ./catalog.json | 目录文件的路径 |
MCP_TOOL_SEARCH_METRICS | *(无)* | 编写JSON指标的路径(用于监控仪表板) |
代币节省
代理的令牌足迹为 恒定 --4个工具,无论存在多少后端服务器。
| 后端工具 | 直接令牌 | 代理令牌 | 节省 |
|---|---|---|---|
| 10 | ~2,000 | ~600 | 70% |
| 25 | ~5,000 | ~600 | 88% |
| 50 | ~10,000 | ~600 | 94% |
| 100 | ~20,000 | ~600 | 97% |
| 200 | ~40,000 | ~600 | 99% |
看 基准.md 详细的方法和测量。
安全
MCP工具搜索使用 基于allowlist的环境过滤器 生成后端服务器时。只有显式安全的环境变量(PATH、HOME、NODE_PATH等)才会转发给子进程。外壳环境中的API密钥、令牌和秘密 从不 除非在目录的每台服务器中明确配置,否则会泄漏到后端服务器 env 块。
附加安全措施:
- 连接盖:最多20个并发服务器连接(达到限制时,最旧的空闲连接将被清除)
- 连接超时:服务器启动时超时15秒
- 闲置清理:连接在5分钟不活动后自动关闭
- 不执行shell:服务器命令作为数组传递给
child_process.spawn(),永远不要通过shell解释 - TypeScript 严格模式:全型安全,无
any注入核心逻辑 - 最小依赖性:只有2个运行时deps(
@modelcontextprotocol/sdk,zod)
注:catalog.json存储MCP配置中的每个服务器env vars(包括后端服务器运行所需的API令牌)。将此文件视为敏感文件——它被排除在git之外(.gitignore)npm发布(.npmignore+"files"默认情况下为allowlist。不要分享或承诺。
权衡
- 延迟:每次工具调用都需要一个搜索+模式查找步骤(首次使用工具需要额外进行约2次LLM循环)
- 发现:模型必须搜索工具,而不是预先看到所有工具——对于小型目录来说,这是一笔很小的开销
- 连接启动:服务器是延迟生成的,因此对新服务器的首次调用会产生连接开销
何时使用代理
- 用它 当您拥有5台以上的MCP服务器或20多种工具时
- 用它 当您需要跨客户端兼容性时(Cursor、Windsurf、VS Code等)
- 用它 当您想在一个端点后聚合来自多个服务器的工具时
- 跳过它 当你有1-2台服务器,但工具很少时
对比Anthropic的内置工具搜索
Claude Code包含一个内置 defer_loading 工具模式优化机制。以下是MCP工具搜索的不同之处:
| 功能 | MCP工具搜索 | 人为延迟加载 |
|---|---|---|
| 适用于光标、风帆、VS代码 | ✅ | ❌ 只有克劳德 |
| 跨服务器聚合 | ✅ 单端点 | ❌ 每台服务器 |
| 可流式HTTP传输 | ✅ 远程客户端 | ❌ 仅限标准 |
| 允许拼写错误的模糊搜索 | ✅ Levenstein | 基本正则表达式/BM25 |
| 预构建目录(离线) | ✅ | ❌ 仅限运行时 |
如果你 仅 使用克劳德代码,Anthropic的内置解决方案可能就足够了。如果您使用多个MCP客户端或需要跨服务器工具联盟,MCP工具搜索可以填补这一空白。
兼容性
测试方法:
应适用于支持stdio传输的任何MCP客户端。
项目结构
mcp-tool-search/
├── src/
│ ├── types.ts # Shared type definitions
│ ├── catalog.ts # Catalog loader + fuzzy search engine
│ ├── pool.ts # Lazy server connection pool with timeouts
│ ├── index.ts # Main proxy MCP server
│ └── build-catalog.ts # Catalog builder CLI
├── dist/ # Compiled JavaScript (after build)
├── catalog.json # Generated tool catalog (git-ignored)
├── package.json
├── tsconfig.json
└── README.md发展
# Install dependencies
npm install
# Build TypeScript
npm run build
# Run tests
npm test
# Watch mode
npm run dev
# Rebuild catalog
npm run catalog贡献
欢迎投稿!以下是如何开始:
- 分叉 存储库并克隆你的fork
- 安装依赖项:
npm install - 构建:
npm run build - 运行测试:
npm test(所有81项测试必须通过) - 进行更改 在特征分支上
- 提交PR 清楚地描述了发生了什么变化以及原因
指南
- 遵循现有的TypeScript风格(严格模式,否
any核心逻辑) - 为新功能或错误修复添加测试
- 保持最小的依赖关系——任何新的运行时依赖关系都需要强有力的理由
- 跑
npm audit并在提交前确保0个漏洞 - 如果您的更改影响公共API或设置过程,请更新文档
报告问题
发现错误或有功能请求? 打开一个问题 在GitHub上。
对于安全漏洞,请使用 而不是公共问题。
更新日志
看 更改日志.md 查看所有版本的详细历史记录。
安全
使用许多MCP服务器? 首先审核您的配置。
配置保护 扫描您的 .mcp.json 针对20种类型的安全漏洞——拼写错误、已知CVE、秘密泄露、地毯拉断等。零依赖,完全离线。
pip install mcp-config-guard && config-guard*MCP工具搜索保存令牌。Config Guard可保护您免受CVE的侵害。*
许可证
麻省理工学院 --版权所有(c)2026 AEGIS锻造团队
