MCP 工具列表在会话中途增加,你的智能体调用了一个它从未被告知过的工具
· 阅读需 11 分钟
一场安全事件回顾以一个团队无法回答的问题开始:智能体是如何知道它刚刚调用的工具名称的?审计追踪显示了一个 tools/call 请求,但该工具的名称并未出现在 harness 记录的任何 tools/list 响应中。MCP 服务器欣然接受并执行了该调用。在事后分析中,当被要求解释工具名称来源时,模型给不出答案,因为根本没有答案 —— 它猜中了,而且这个猜测恰好命中了一个真实的操作。
这是两个在理论上看起来兼容的假设之间产生的失效模式。客户端将工具列表视为一份契约,界定了它被授予的权限范围。服务器则将工具列表视为当前可用工具的快照,可以随着环境的变化自由增长。在这两种观点之间,LLM 是一座不知道二者差异的桥梁。
