MCP 已经解决了工具发现、结构化参数、调用协议、结果返回等重要问题。对于 HTTP 传输,它还有独立的授权规范,用来说明受保护的 MCP Server 如何作为 OAuth 资源服务器工作,客户端如何获取访问令牌,以及令牌为什么必须绑定正确的资源受众。官方安全实践也覆盖了最小权限、会话绑定、凭证保护、沙箱和逐次授权等问题。
所以这里讨论的缺口,并不是因为“MCP 没有安全设计”。
真正的区别在于,协议成功和业务完成回答的是两组不同的问题:
协议成功:
一个格式正确的请求,是否被送达给了一个允许当前客户端访问的 MCP Server?
业务完成:
正确的主体,是否在正确的业务状态下,对正确的对象执行了一次正确的行动,
并且审批、幂等、失败恢复和责任证据都与这次行动保持一致?
协议可以承载行动,但协议本身不知道:
-
订单
ORD-9001现在是否还允许退款; -
员工
E-1024是否属于门店S-18; -
这笔订单此前是否已经在另一个入口完成过退款;
-
退款金额是否超过当前剩余可退金额;
-
这个审批是否批准的正是即将执行的那组参数。
这些事实更靠近业务领域,而且会随时间变化。它们不能只靠工具描述、模型推理或一次 OAuth 鉴权来推断。