前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片NEW
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 业务场景题真实业务问题与追问
  • 查漏补缺常见问题解析
  • AI 模拟面试NEW模拟真实面试 + 报告
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
    • AI 定制路线NEW按你的简历现排
    • AI 知识地图NEW串起全站知识点
  • 动态
    • AI 热点NEWAI 每日动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
AI 助手NEW
旧版
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片NEW
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 业务场景题真实业务问题与追问
  • 查漏补缺常见问题解析
  • AI 模拟面试NEW模拟真实面试 + 报告
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
    • AI 定制路线NEW按你的简历现排
    • AI 知识地图NEW串起全站知识点
  • 动态
    • AI 热点NEWAI 每日动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
AI 助手NEW
旧版
返回 AI 情报前线
All News · 全部资讯8356
  • DeepSeek-V4-Pro 正式版:Agent 能力大幅提升,支持三档思考强度
  • 2026年Claude Code最佳替代工具横评
  • DeepSeek-V4-Pro 正式版发布:Agent 能力大幅提升,支持 Responses API
  • AI编程工具选型:别比补全速度,比执行位置
  • AI代码审查风险分级路由:用强模型只审高危diff
  • DeepSeek V4 Pro正式版发布,多项对标Fable 5
  • 把AI Agent的模型路由策略放进Git:账单降了代码才动
  • 成本感知AI路由策略:按任务难度自动选免费或最强模型
  • 两周路由日志:终结选AI模型的玄学决策
  • 我用自己git历史评估每代新编程模型
  • LiteLLM供应链投毒致全球2500企业195TB数据泄露,含大量CI/CD密钥
  • AI编程的真正陷阱:需求描述不完整比代码Bug更危险
  • 自建LLM路由:用任务分类器把每类任务分配给最便宜模型
  • 本地演练LLM降级链路:别等故障时才暴露问题
  • 升级率作为不变式:别让廉价模型把贵价配额烧光
  • AI Agent 经济雏形:任务市场与自主协作
  • 60行纯Python实现多模型路由交换机
  • 别测最终答案:轨迹评估才是 Agent 质量真相
  • DeepSeek-V4-Pro 实测:非基准测试的业务场景表现
  • AI分析Agent应内置覆盖率账本,避免隐藏的 scope 扩展
  • 大 MCP 工具注册表如何避免撑爆 LLM 上下文
  • AI证明可验证了:OpenAI开源Lean 4形式化验证工作流
  • 150行Python手写AI Agent,无LangChain依赖
  • 免费编程模型的可重复烟雾测试方法
  • CI中免费AI模型会静默失败,先建熔断器
  • AI重新生成不是编辑,是赌博:需要明确编辑方向
  • AI 应用接入实时网络信息的 Web Search API 实战指南
  • Claude Sonnet 5 发布:性价比接近旗舰级
  • AI 代理队列需要背压而非更多 Worker
  • VS Code 1.133:Agent 窗口免登录可用 Claude,可中途切换模型
  • 2026 年大模型选型决策树:从 0.05 到 3000 美元/百万 Token
  • Grok 4.6 及 AI 队友功能发布
  • 客服Agent拒绝能力工程指南:置信度阈值决策设计
  • CoreWeave证实A100可出租至2029年,GPU寿命超预期
  • AI自动生成Dockerfile/K8s/GitHub Actions:部署规划Agent实战
  • 英伟达开源Nemotron 3.5 Lightning:30B MoE Agent执行层
  • 评估AI Agent的真相:轨迹评估才是关键
  • Tailscale 追查数据库损坏:根因是 SQLite 16 年旧 Bug
  • Meta发布Muse Glimmer:单GPU可跑的30B开源模型
  • MCP服务器安全审计:识别本地服务实际访问边界
  • 终端AI编程工具成本实测:每任务真实费用追踪方法
  • 远程编码Agent的权限对话框死锁问题
  • DeepSeek V4 Pro正式版发布:多项测试逼近Fable 5
  • Raycast 0.71引入屏幕感知功能:AI可直接理解当前窗口上下文
  • 复现2200篇ICML论文的实战总结
  • Vercel AI SDK 新增 ACP 协议兼容 Harness 层
  • GLM 5.2 Eve模型:百万上下文免费用
  • Gemini 3.7 Flash登陆AI Gateway,折扣50%
  • Exa神经网络搜索引擎登陆Vercel Agent市场
  • OpenAI被黑背后:AI Agent失控的三个技术根源
  • Cursor Agent 环境预构建:启动速度提升 3 倍
  • 已加载 51 / 8356
8.0
热点
AI SCORE
技术实践2026-08-13 10:41

大 MCP 工具注册表如何避免撑爆 LLM 上下文

dev.to · AI#MCP#Agent#架构
Editor brief · 编辑速览

探讨 MCP 服务器暴露大量工具时如何避免让 Agent 上下文溢出,提出注册表可用性、协议发现、宿主端上下文注入分离的架构方案,并指出简单方案会引发延迟回归问题。

文章思维导图
Knowledge map
拖拽缩放
Full translation

完整中文译文

MCP 服务器可以暴露一个庞大而有用的工具面,但仍然会让 Agent 在当前任务上表现更差。

失败不一定出在工具本身。它可能发生在第一次工具调用之前——当每个工具的名称、描述和输入 schema 与用户请求竞争同一份模型上下文时。

我在开发 FORMLOVA 时遇到了这个问题,它是一个表单操作的 MCP 服务器。该实验使用了一个包含 142 个工具的注册快照。截至 2026 年 8 月 13 日,FORMLOVA 的公共注册表中包含 138 个工具,因此下面的测量结果应作为该历史 142 工具快照的结果来理解。我不想仅仅为了使初始 prompt 更小而移除功能。我希望宿主机保持相同的注册表可用,但只在请求需要时才加载定义。

这听起来像是一个简单的工具搜索功能。并非如此。

实现有三个独立的层面,而结果至少需要验证四件事:

  • 完整注册表保持可用;
  • 模型能够发现相关定义;
  • 发现过程能够引导出确切预期的工具调用;
  • token 减少背后不隐藏延迟或可靠性回归。

以下是架构和改变了我的想法的测量结果。

首先,测量你已有的表面

我从源码级清单开始,而不是模型账单。

FORMLOVA 源码中的共享 MCP 指令、公共工具描述和参数描述总计 107,476 个字符。除以四得到约 26,869 个 token 的粗略估计。

这个数字是有意不精确的。

它不是实时的分词器测量。它不包括生成 JSON Schema 的部分结构成本。不同宿主对定义的反序列化方式不同。Prompt 缓存可以改变计费的输入量。这个值作为下界工程信号是有用的,而不是成本声明。

重要的问题不是这个估计是否精确。重要的问题是,这么多的工具材料是否需要进入每个请求的初始模型输入。

考虑三个请求:

  1. 列出两个表单并检查其中一个;
  2. 找一个不常见的工作流操作;
  3. 解释一个概念而不调用任何工具。

第一个请求可能只需要两个熟悉的定义。第二个需要发现。第三个不需要。静态的全工具 prompt 将这三种情况视为都需要整个注册表。

这就是分配问题。

不要将三个发现层混为一谈

这个领域的大多数困惑来自于用"工具发现"来描述不同的操作。

第一层:服务器注册表

服务器拥有工具契约。它定义名称、描述、输入 schema、注解和执行行为。

FORMLOVA 在实验的两侧仍然保留了 142 个工具。渐进式发现并不意味着删除 140 个工具然后假装系统有了改进。

第二层:MCP 协议发现

MCP 客户端使用 tools/list 从服务器检索工具定义。协议定义了注册表如何暴露。它本身并不证明特定的宿主机如何将那些定义放入模型 prompt。

这个区别很重要,因为一次成功的 tools/list 响应告诉你客户端收到了定义。它不能告诉你每个 schema 都进入了模型上下文,或者都没有。

第三层:宿主机端模型暴露

宿主机决定模型看到什么以及何时看到。

宿主机可以注册大量工具集,同时最初只暴露一个发现表面。模型在注册的工具集中搜索,宿主机返回相关工具的引用或选中的 schema,然后模型调用目标工具。

这是初始上下文真正可以改变的那一层。

服务器端辅助工具(如 search_tools)仍然有用。它可以让模型在大型产品表面中进行语义导航。但它不能证明宿主机推迟了其他定义。如果所有 schema 都已经加载,服务器端搜索是在分配之后进行导航,而不是分配本身。

我测试的候选流程是这样的:

User request
  -> host exposes ToolSearch
  -> model searches the registered tool set
  -> host returns references to relevant tools
  -> model receives selected definitions
  -> model calls the exact target sequence

对于一个常见的只读 fixture,预期的原生序列是:

ToolSearch
  -> list_forms
  -> get_form

验证没有在"最终答案看起来正确"就停止。测试工具检查了发现是否发生、引用是否包含目标、原生调用是否按要求的顺序发生,以及未经批准的工具是否被使用。

这对于任何工具搜索评估都很重要。模型可以生成一个看似合理的句子而不执行你预期的操作。它也可以找到一个返回相似外观数据的语义相近工具。仅凭功能性输出作为契约太弱了。

保持基线和候选注册表相同

如果基线有 142 个工具而候选只有 12 个,你同时在测试功能移除和渐进式发现。

我在两种条件下保持相同的注册表,并在运行前后验证了工具名称和定义摘要。变量是宿主机如何向模型暴露定义。

正式的 Phase 1 能力门覆盖了三种 prompt 类型:

每种 prompt 在基线和候选条件下重复运行。隔离校准失败并重置计数后,正式产物包含 30 个预期运行、30 个观察运行,没有遗漏或跳过的运行。

校准历史很重要。一个早期的 prompt 将原生服务器工具与宿主机的 ToolSearch 表面混淆了。另一种解释将初始化名称列表作为 schema 注入的证据。两者都被拒绝,而不是混入最终数字。

如果你无法解释一个事件证明了什么,就不要用它作为指标。

结果:初始输入小得多

候选条件下,初始输入中位数急剧下降。

相同的 142 工具注册表保持可用。候选版在常见和长尾运行中恰好使用了一次 ToolSearch。在无工具运行中,既没有使用 ToolSearch 也没有使用原生工具。

这是人们喜欢放在标题里的结果。但这也只是一半的结果。

令人不安的结果:常见路径变慢了

常见工具请求在候选条件下慢了约 1.960 秒。

可能的解释并不神秘。发现增加了开销。常见请求在原生调用之前需要一个额外的搜索和额外的轮次。更小的初始 prompt 没有抹掉这个开销。

这改变了结论。

结论不是"工具搜索让 MCP 更快"。甚至不是"工具搜索总是更好"。

结论是,渐进式发现可以在保持大型能力注册表的同时分配少得多的初始上下文,但延迟权衡取决于请求类型。

对于用户频繁调用的明显操作,小型 eager 集合可能更好。对于长尾操作,渐进式发现可能值得额外的查找代价。对于无工具问题,避免整个注册表可以同时帮助上下文和时间。

一个实用的混合策略

测量结果指向混合策略而不是一个全局开关。

保持小型 eager 集合

根据观察到的请求频率而不是内部重要性来选择工具。一个工具可能是产品的核心,但仍可能在对话中很少见。

eager 集合应该包含那些额外发现轮次会造成明显摩擦、且定义小而稳定的操作。

保持专用工具注册但仅在发现后才加载其定义。这保留了能力,而不让每次对话都支付相同的初始上下文成本。

让无工具请求保持无工具

发现表面不应该变成强制仪式。如果请求是概念性的,Agent 应该不搜索注册表就直接回答。

保持静态回退

不是每个宿主机都支持延迟加载或暴露足够的证据来验证它。服务器应该继续与静态加载定义的客户端兼容工作。渐进式发现是宿主机的能力,而不是破坏协议兼容性的理由。

在你自己的实验中记录什么

至少为每个条件记录以下内容:

registry tool count
tool-name digest
tool-definition digest
discovery call count
discovery result references
native tool names and order
functional assertions
safety assertions
initial input tokens
total input tokens
provider latency
host end-to-end latency
turn count

不要将提供商延迟与原生工具执行小计合并。不要从仅证明注册发生的 UI 事件推断 schema 注入。不要将校准失败的 prompt 计为有效性能运行。

最重要的是,区分常见、长尾和无工具请求。聚合平均值可以隐藏你真正需要做出的权衡。

我坚持的设计规则

工具注册表是能力清单。初始 prompt 是内存分配决策。

MCP 给服务器一种标准方式来暴露工具,但 Agent 体验取决于宿主机如何处理这些定义。大型服务器需要好的工具契约、好的发现机制,以及所选工具仍然正确执行的证据。这些都不能相互替代。

完整的 FORMLOVA 测量结果(包括源码级占用空间、宿主机边界和限制)见 More Connections Do Not Always Make AI Smarter。

如果你正在构建一个大型 MCP 服务器,在将渐进式发现变成全局策略之前,我建议测试一个常见请求、一个长尾请求和一个无工具请求。令人不安的数字可能是最有用的。

披露与验证

我构建了 FORMLOVA。本文中的测量结果来自 FORMLOVA 2026 年 7 月 29 日的源码审计和正式的 Claude Phase 1 能力门。它们是针对记录在案的注册表、prompt、模型和宿主机配置的条件结果,而不是每个 MCP 实现的基准。

Model Context Protocol architecture

Understanding MCP servers

Claude Code: scale with MCP Tool Search

Original source

本文由 AI 翻译整理自 dev.to · AI,原文版权归原作者所有。

阅读英文原文
上一篇
AI分析Agent应内置覆盖率账本,避免隐藏的 scope 扩展
下一篇
AI证明可验证了:OpenAI开源Lean 4形式化验证工作流