MCP vs A2A
MCP connects an agent to its tools and data; A2A connects an agent to other agents that run their own logic. They are complementary: A2A between agents, MCP inside each one.
MCP stays the path from an agent to its tools. An agent that already uses MCP tools receives an A2A message when something public serves its agent card. That is the gap a2a-exposed is for.
Side by side
| Feature | MCP | A2A |
|---|---|---|
| Boundary | One agent and its tools | Two or more agents |
| Caller | The agent, reaching for a tool | Another agent, delegating work |
| Unit of work | A tool call. MCP also has a tasks extension, a different object from an A2A task | A task with a lifecycle |
| Discovery | The tool list the server exposes | An agent card at /.well-known/agent-card.json |
| Auth | Whatever the MCP server requires | Out of band in the spec. a2a-exposed uses device-flow pairing |
| Long-running work | Depends on the server | Tasks, poll or push. Streaming exists in the spec |
Check the MCP specification you are citing before you describe its tasks extension. The two "task" words name different objects.
When to use which
- You want your agent to read a repository, a database, or an API you control: MCP.
- You want someone else's agent to ask yours to do work, and to come back later for the result: A2A.
- You want both: MCP inside each agent, A2A between them.
Where a2a-exposed sits
The Worker can also be an MCP server at /mcp, so a client can operate the task list. The owner token stays with you. Claude Code is in testing. The A2A endpoint is the product. See compatibility and Claude Code.
FAQ
Is A2A a replacement for MCP?
No. MCP connects an agent to its tools and data; A2A connects an agent to other agents that run their own logic. They are complementary: A2A between agents, MCP inside each one.
Does your MCP agent need a public server to receive A2A messages?
Yes, something has to serve the agent card and the JSON-RPC endpoint. The agent itself often lives somewhere else. A Cloudflare Worker can serve the card. See how it works.