前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
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 · 全部资讯8611
  • 工具发布前必须真实使用:质量守门人的最佳实践
  • Claude Code Hooks 与系统提示的设计对比
  • Agent 系统的权限审核机制:从二元开关到分类控制
  • 人工工作流转化为Agent程序的系统方法
  • AI Agent 聊天记录修改漏洞:客户端历史可被篡改
  • 六大AI编码环境的统一MCP配置方案
  • 医疗LLM本地部署的数据主权架构
  • LLM 应用必备:验证层从第一天就要搭建
  • DeepSeek V4 Flash 正式版发布
  • AI算力真正的瓶颈:工作流执行效率
  • Opus 5单提示生成完整游戏,成本仅423美元
  • condense-json:JSON 去重压缩库达 1.0
  • Node.js 图像生成 API 选型实战指南
  • AI 基础设施演进:从 GPU 供应到 Workload 执行层
  • 多模型 API 成本对比:输入输出比例才是关键
  • 小网站流量突增的常见故障及应对方案
  • AI 代码工具实战:90+ 应用交付的工作流改造
  • LLM 推理能效优化:量化与成本控制
  • 向量数据库选型指南:RAG 与语义搜索的基础设施对标
  • AI 代码工具的团队协作陷阱:个体快不等于团队快
  • 近半数 MCP 服务器存在工具歧义风险
  • Cognito 登录失败:配置陷阱的实战排查指南
  • Agent 评估框架实战:AgentEval Forge 开源工具发布
  • Node.js 中的 LLM API 网关:成本控制与路由中枢
  • AI 编程 Agent 密钥泄露风险与防护
  • 实时配置校验:自动捕获陈旧度量数据的系统
  • 多智能体分布式架构:联邦 MCP 服务器方案
  • LLM 推理部署完全指南(第一部分)
  • Databricks Lakebase:数据库分支管理系统
  • 欧盟AI法规正式生效程序员须关注
  • 多工具编排器实现:能力路由与权限控制
  • GraphRAG:知识图遍历解决多跳推理问题
  • 长对话 AI 系统的 Context Window 管理实战
  • MCP 服务器 Schema 演化的实证分析
  • GitHub Models 关闭与 AI 供应商锁定风险
  • 46000条文本实测:RAG 技术哪些真的有效
  • 13 个 AI 项目漏洞启示:生产级代码审计要点
  • AI Agent 自动化代码维护:预算、分级与安全机制设计
  • 让LLM玩对话游戏的核心工程方案
  • 多智能体任务编排架构:分工协作超越单 Agent 局限
  • Twilio+Deepgram搭建AI接线员的完整技术方案
  • 让 AI Agent 管理家庭服务器:沙箱隔离与权限分级实战
  • AI 助力 CI 迁移失败案例:环境差异与验证盲点
  • AI 生产力陷阱:代码加速不等于交付加速
  • MCP 服务器开发完全指南:从零到工作原型
  • 用 Lean 4 和 ClickHouse 构建可验证 AI 基础设施
  • DeepSeek:应用免费 API 付费的成本陷阱
  • Agent 时代的工程分层:从 Prompt 到图编程
  • 后端代理统一多个 LLM 提供商
  • AI 文本总结的安全检验法:实例驱动的核实框架
  • 绿灯不等于正确:AI 代码时代的测试哲学重塑
  • 已加载 51 / 8611
8.0
热点
AI SCORE
技术实践2026-08-03 04:43

近半数 MCP 服务器存在工具歧义风险

dev.to · AI#MCP#Agent安全#开源
Editor brief · 编辑速览

研究对 377 个 MCP 服务器的 7164 个工具进行分析,发现 45.8% 的服务器含有命名或描述重叠的工具对,Agent 可能误调用。

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

完整中文译文

一位读者针对我上一篇文章提出了一个观点,当时我无法回答,于是我实际测量了一番。

这个观点是:“新增工具”并不天然意味着这是一次安全的变更。此前,我一直把新增工具归为无害变更,因为所有旧调用依然能够通过其 schema 的验证。但验证不等于选择。新工具如果与现有工具存在功能重叠,就可能截获原本会被路由到其他工具的调用,而且整个过程不会出现任何报错——Agent 只是悄无声息地开始执行不同的操作。

我说过,用名称重叠来判断是最显而易见的第一层近似,而且显然并不完整。这两点都没错。下面是它揭示的结果。

在 registry 中列出、且能完成匿名握手的 377 个 MCP server,共提供了 7,164 个工具。我比较了每个 server 内部的所有工具组合,总计 170,345 对。如果一对工具的名称共享了大部分 token、描述高度重叠,或者名称和描述都存在中等程度的重叠,就会被标记出来。

377 个 server 中,有 173 个(45.8%)至少存在一对容易混淆的工具。

所有工具对中只有 1.15% 被标记。换个角度看,这其实描述的是同一个事实:混淆问题集中出现在工具数量庞大的 server 中,而不是均匀分布在所有 server 里。

list_skills            <->  get_skills                     (identical tokens)
legislation            <->  list_legislation
tf_briefing            <->  tf_premium_briefing
ask_pipeworx           <->  ask_pipeworx_beta
ask_pipeworx           <->  ask_pipeworx_grounded
paid_crypto_call_pack  <->  paid_esports_call_pack         (near-identical descriptions)

list_skills 与 get_skills 是一个很典型的真实案例。对人类来说,两者确实存在明确区别。但对于一个需要在 token 压力下从扁平列表中做选择的模型来说——尤其是它未必会仔细阅读描述——这几乎就是一次抛硬币,而这个选择过程还不会被任何人记录下来。

我原以为会很常见、实际却并非如此的子类型

我的第一轮分析专门寻找名称仅在商业层级词上有所不同的工具,例如 free 与 premium、pro、plus。如果 Agent 在这里选错了,那就不是正确性 bug,而是计费 bug。我原本觉得这种情况可能随处可见。

第一轮结果显示:101 个 server 中存在 147 对,占 26.7%。

这个数字错了大约 33 倍。我想明确说出其中的两个原因,因为这两种错误都非常容易犯:

我把 deep、full、advanced 和 extended 也算作了层级词。但它们并不是——这些词描述的是工具会完成多少工作,而不是工具的价格。deep_research 与 bet_research 因此被标记成了一对计费工具,这显然毫无道理。

有一个 gateway(gateway.pipeworx.io)通过 13 个不同的 endpoint 发布了相同的工具设计。我把它计算了 13 次。但这只是一个设计决策,不是 13 项独立发现。

把范围收紧到含义明确的计费词,并按照工具对的 signature 去重后,结果变成了:3 个 server 中共有 47 对不同的工具,不到 1%。

所以,最鲜明的这种情况其实很少见。但它确实存在,具体是这样的:

tf_briefing              <->  tf_premium_briefing
get_game_recommendation  <->  get_premium_game_recommendation
gpt55_summarize          <->  gpt55_summarize_plus / gpt55_summarize_pro
gpt55_translate          <->  gpt55_translate_plus / gpt55_translate_pro

其中一个 server 为四种不同的操作分别提供了 free、_plus 和 _pro 版本。如果 Agent 只能根据名称相似度在这些工具之间做选择,它实际上是在进行一次购买决策,却没有任何信号提醒它正在做出这样的决定。

我从中得到的结论

总体问题确实存在:大约 46% 的 server 至少会给 Agent 提供一个真正模棱两可的选择。在一个已经拥有 40 个工具的 server 中再添加一个工具,绝不是无影响的操作。那位反驳我的读者是对的。

计费问题虽然少见,却最值得设置 guard rail,因为这是唯一一种失败会产生直接成本、同时又不会暴露任何错误的类型。如果你同时提供付费和免费版本,请在描述中写明价格,并在 annotations 中标明层级,而不要只把它放在工具名称里。

此外,这项测量基于词汇分析,这是一个实实在在的局限。它无法判断两个名称完全相同的工具实际上执行着不同的操作,也会把一些有能力的模型可以轻易区分的工具对标记出来。因此,应当把 45.8% 视为歧义比例的上限,同时也视为这个问题值得投入多少思考的下限。

本次分析使用了与我之前文章相同的固定随机样本(random.seed(20260730)),样本取自能够响应匿名握手的 5,346 个 registry endpoint,因此这个系列中的结果可以相互比较。调用流程为 initialize → notifications/initialized → tools/list,并处理了 SSE frame 和 Mcp-Session-Id 的传递。工具对比较则分别对名称 token 和移除 stopword 后的描述词计算 Jaccard similarity。

原始工具 inventory 已经缓存,因此在收紧定义之后,我可以针对完全相同的数据重新运行层级分析——这也是为什么我能在发布之前发现那个 33 倍的误差,而不是等到发布之后才发现。

前文:schema drift 不是一个比率,而是一小群永远不会停止变化的 server。

如需采取进一步措施,你可以考虑屏蔽此人和/或举报滥用行为。

Original source

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

阅读英文原文
上一篇
AI 代码工具的团队协作陷阱:个体快不等于团队快
下一篇
Cognito 登录失败:配置陷阱的实战排查指南