一个客服代理可能请求一个日程代理来安排预约。日程代理随后可能使用消息工具来发送确认信息。
这两种交互有不同的边界。一种是将工作委托给另一个代理,另一种是调用服务暴露的能力。
A2A 提供了什么?
A2A 提供了一个接口,代理可以通过它发现能力、交换消息并跨独立系统管理工作。
A2A 规范定义了一个 Agent Card,用于公布代理的能力和连接信息。调用方可以使用这些信息,而无需访问远程代理的内部实现。
一次交互可以直接返回消息,也可以创建任务。任务有标识符和状态,因此调用方可以跟踪在首次响应之后仍在继续的工作。Artifact 承载该工作过程中产生的输出。
以预约为例,日程代理可以在等待缺失信息时返回一个任务。其结果随后可以标识已确认的预约。
MCP 提供了什么?
MCP 为 AI 应用提供了一个共享接口,用于发现和使用工具、资源和提示词。
MCP 规范将宿主应用、其客户端连接器和提供能力的服务器分离开来。工具暴露一个可执行的函数。资源提供上下文,提示词提供可复用的消息模板。
以预约为例,一个消息服务器可以暴露一个发送确认信息的工具。日程代理的宿主使用收件人和消息内容来调用该工具。
MCP 的工具也可以封装一个代理。区别在于暴露给调用方的接口,而不在于其背后是否存在模型。
两种接口如何比较?
A2A 描述与远程代理的交换。MCP 描述对服务器所暴露能力的访问。
| 问题 | A2A | MCP |
|---|---|---|
| 调用方如何发现接口? | Agent Card 描述该代理 | 服务器公布能力并暴露列表 |
| 调用方提交什么? | 一条消息或对任务的操作 | 一个请求,如调用工具或读取资源 |
| 可以返回什么? | 消息、任务状态或 artifact | 由所请求操作定义的结果 |
两个规范描述的都不仅仅是即时的请求和响应。仅凭长时间运行的工作并不能决定适合哪种接口。围绕调用方需要使用的契约来做选择。
如何将消息发送步骤连接到 Bird?
你可以将代理连接到 Bird 的 MCP 服务器来发送消息并查看其结果。
保留发送操作返回的标识符。之后的读取会报告记录的投递状态,这与初始请求是否成功是分开的。
你的应用可以将这个消息发送步骤放入更大的代理工作流中。该消息发送步骤使用 Bird 的 MCP 接口。
对于邮件,投递结果报告的是接收邮件服务器的接受情况,并不代表有人阅读了该消息。投递状态说明解释了在报告完成时应使用的各渠道特定边界。