Tags
The Agent2Agent logo, blue A-2-A circles beside the Agent2Agent wordmark in blue on a white card

A2A vs MCP — why agent-to-agent needs its own protocol, and why both chose HTTP over gRPC

Why MCP alone is not enough for agent-to-agent communication: peer equality, Agent Card discovery, async task state, and why both protocols chose HTTP.

On this page

Introduction

“I want to get agents talking to each other, but can’t I just connect them with MCP?”

As AI agent development picks up, this is a question people run into. MCP (Model Context Protocol) is spreading as the standard for tool integration, and alongside it a separate specification has appeared: the A2A (Agent-to-Agent) protocol proposed by Google.

The short answer is that they cover different ground. MCP is an agent’s hands and eyes; A2A is its mouth. A tool protocol cannot stand in for an agent protocol because a tool cannot refuse a request, and an agent can.

Why two protocols are needed, what MCP is missing, and why both picked HTTP as their foundation are the questions this article works through in order.

A2A and MCP, and what each covers

First, the roles.

MCP A2A
Full name Model Context Protocol Agent-to-Agent Protocol
Area of responsibility Agent ↔ tools/data sources Agent ↔ agent
Relationship Client-server (subordinate) Peer, bidirectional
Typical operations tools/call, resources/read tasks/send, tasks/get
Proposed by Anthropic Google

In one line: MCP is an agent’s “hands and eyes” (using tools, reading data), and A2A is an agent’s “mouth” (conversing and negotiating with other agents).

A concrete example: logistics and inventory management

Here is what cross-organisation agent integration looks like.

A2A between agents, MCP down to toolsTwo company boxes side by side. Each contains one agent, connected downward over MCP to that company’s own group of three tools. The two agents are joined horizontally by a bidirectional A2A link, which crosses the company boundary while neither agent reaches the other’s tools.Logistics companyAIDelivery agentPlans deliveries and optimisesroutes autonomouslyMCPTool groupDelivery DBGPS APIRoute optimiserPartner companyAIInventory agentTracks stock and decideswhen to reorderMCPTool groupInventory DBOrdering APIWarehouse systemAgent-to-agent communicationA2A

Only the A2A link crosses the company boundary. Neither agent reaches the other’s tools.

  1. The inventory agent queries the inventory database over MCP and decides “product X is down to 10 units, restock needed”
  2. The inventory agent makes a request to the delivery agent over A2A: “500 units of product X to warehouse A, deliverable tomorrow?”
  3. The delivery agent calls a GPS API and route optimisation tools over MCP and checks for an open slot
  4. The delivery agent answers over A2A: “deliverable tomorrow at 14:00, truck B-12 assigned”

Tool operations (MCP) and inter-agent negotiation (A2A) have clearly separated roles.

Why MCP alone is not enough for agent-to-agent communication

“Can’t I just register the other agent as an MCP tool?” is a natural thought. But there are several fundamental problems.

1. No peer equality

MCP is a client-server model. One side is the client (the caller), the other is the server (the callee).

MCP: agent(client) → other agent(server, treated as a tool)
A2A: agent ←→ agent (peers)

An agent is something that judges autonomously. Subordinating it as a tool means ignoring the other side’s autonomy, including its ability to say “I cannot accept under those conditions”.

2. No capability discovery mechanism

MCP has a mechanism for publishing tool schemas (type definitions for input and output), but that is not enough to express an agent’s capabilities, policies, or current state.

A2A uses a mechanism called the Agent Card, where each agent publishes its own capabilities and policies at /.well-known/agent.json. You can discover in advance what the other side can do and on what terms it accepts work.

3. Asynchronous task management

MCP is fundamentally a synchronous request-response protocol. It is not suited to managing the state of long-running tasks like “delivery is being arranged, it will be confirmed in three hours”.

A2A has task state transitions built in (submitted → working → input-required → completed / failed) and can push progress over SSE or push notifications. input-required is the state where an agent is asking for additional information in order to proceed.

4. Cross-organisation authentication and trust

Crossing an organisational boundary requires identity verification and permission negotiation between agents. MCP does not anticipate that kind of inter-organisation authentication.

Put simply

MCP: "run this tool" → result (subordinate)
A2A: "can you take this on?" → negotiate → agree → execute → report (peers)

Transport layer design choices: why HTTP

Interestingly, MCP and A2A made similar transport layer choices.

MCP A2A
Message format JSON-RPC 2.0 JSON-RPC 2.0
Local communication stdio — (assumes cross-organisation)
Remote communication Streamable HTTP (formerly HTTP + SSE) HTTP + SSE
gRPC Not used Not used

Neither one adopted gRPC. With gRPC available and offering fast binary communication, why choose HTTP and JSON?

Why gRPC and WebSocket were not chosen

A2A’s main arena is cross-organisation communication. The assumptions differ from microservice communication on an internal LAN.

Technology Reason it was not adopted
gRPC Cannot be called directly from a browser. Sharing proto definitions across organisations is cumbersome. Works less well with firewalls and proxies than HTTP does
WebSocket Tends to get cut by corporate proxies. Persistent connections consume server resources. Routing through load balancers is complex. Reconnection handling after a drop is required

Why HTTP + SSE was chosen

Advantage Explanation
Infrastructure compatibility Corporate firewalls, proxies, and load balancers are already built around HTTP
Ecosystem Mature tooling such as OAuth authentication, rate limiting, audit logs, and API gateways works as-is
Discoverability An Agent Card can be fetched with an HTTP GET at /.well-known/agent.json
Scalability Stateless, with each request self-contained. Easy to scale out
Streaming SSE allows real-time notification, and it passes through proxies

The top design priority is maximising interoperability across organisations, and HTTP is the lowest-friction choice for that purpose.

That said, for real-time agent communication inside a single organisation, gRPC or WebSocket can be the better fit. Protocol choice depends on the use case.

Summary

Aspect MCP A2A
Role Agent accesses tools/data Agents communicate and negotiate
Relationship Subordinate (client → server) Peer (bidirectional)
Transport Streamable HTTP / stdio HTTP + SSE
Capability discovery Tool schema (input/output types) Agent Card (/.well-known/agent.json)
Message format JSON-RPC 2.0 JSON-RPC 2.0
  • MCP and A2A are complementary, not competitors. If MCP is an agent’s “hands and eyes”, A2A is its “mouth”
  • An agent is not a tool. Precisely because it judges autonomously, it needs an agent protocol (A2A) separate from a tool protocol (MCP)
  • HTTP was chosen for compatibility, not speed. For the cross-organisation use case, it is the design decision that minimises friction with existing infrastructure

When designing a multi-agent system, it matters to think separately about “which tools each agent connects to over MCP” and “which agents are integrated with each other over A2A”.

Share this article