一、为什么需要了解工具搜索
在快速上手中配置了一两个 MCP Server 时,工具加载几乎无感。但当项目同时连接 GitHub(20+ 工具)、Linear(30+ 工具)、数据库(15+ 工具)、Playwright(20+ 工具)时,工具定义总量可达 50 个以上。
实测数据显示,50 个以上 MCP 工具的定义约消耗 72K tokens。在 200K 上下文窗口中,这意味着还没开始对话,工具定义已占用 36%。更严重的是,过多的工具定义会降低模型的工具选择准确率——Opus 4 在传统全量加载模式下的 MCP 评估准确率仅 49%。
Tool Search 机制使 Claude 在不牺牲工具可用性的前提下,将上下文占用从 72K 降至约 8.7K tokens。
二、Tool Search 的工作方式
默认行为:所有 MCP 工具延迟加载
Claude Code 启动时,与所有已配置 MCP Server 完成握手,获取完整工具列表。但工具的完整定义(参数 schema、描述文本)不会注入上下文窗口,仅保留工具名称索引。
这些未注入上下文的工具即为 Deferred Tools。启动后通过 /mcp 查看状态:
(deferred) 标记表示工具处于延迟加载状态。Claude 知道这些工具存在,但不占用上下文空间。
当 ANTHROPIC_BASE_URL 指向非 Anthropic 第一方主机(如自建代理)时,默认行为回退为全量预加载。通过设置 ENABLE_TOOL_SEARCH=true 可强制启用延迟加载。
搜索触发与命中规则
当 Claude 判断需要调用 MCP 工具时,自动使用内置的 ToolSearch 工具从 Deferred Tools 索引中搜索。ToolSearch 支持三种查询模式:
关键词搜索 — 不确定该用哪个工具时:
精确选择 — 已知工具名称时,用 select: 前缀:
限定范围搜索 — 用 + 前缀锁定 Server 后按关键词排序:
搜索返回的工具定义被注入当前上下文,随后 Claude 正常调用这些工具。整个搜索过程对用户透明——你只需正常描述任务,Claude 自动完成搜索和加载。