07-02-02 — A2A vs MCP: Complementares, Não Concorrentes
TL;DR
MCP e A2A resolvem problemas em camadas diferentes da stack de agentes. MCP = agente acessa ferramentas e dados (vertical: de cima para baixo). A2A = agente fala com outro agente (horizontal: entre peers). Em sistemas reais, você vai usar os dois: um agente orquestrador usa A2A para delegar para agentes especializados, e cada agente especializado usa MCP para acessar suas ferramentas. A pergunta não é "qual usar" — é "para qual camada".
A distinção fundamental
A confusão entre MCP e A2A é comum porque ambos envolvem "agentes falando com coisas". A diferença está em quem está do outro lado:
- MCP: agente fala com um servidor de ferramentas/dados — que não tem autonomia, não toma decisões, apenas executa funções determinísticas.
- A2A: agente fala com outro agente — que tem autonomia, pode ter múltiplos steps internos, usar LLM, invocar suas próprias tools MCP, e reportar progresso ao longo do tempo.
MCP é como chamar uma função: você passa input, recebe output, pronto. A2A é como delegar uma tarefa para um colega: ele pode voltar com perguntas, levar tempo, usar outras pessoas para ajudar, e te entregar um relatório no final.
Comparativo lado a lado
| Dimensão | MCP | A2A |
|---|---|---|
| Problema | Agente → Ferramenta/Dado | Agente → Agente |
| Quem é o "server" | Processo sem autonomia (executa tools) | Agente com LLM próprio |
| Duração da interação | Request/response (segundos) | Task com lifecycle (minutos/horas) |
| Estado | Stateless (cada tool call é independente) | Stateful (task tem histórico) |
| Descoberta | Lista de tools via tools/list | Agent Card em /.well-known/agent.json |
| Protocolo base | JSON-RPC 2.0 over HTTP/stdio | REST + SSE over HTTP |
| Autoria | Anthropic (nov/2024) | Google → Linux Foundation (abr/2025) |
| Adoção hoje | 1.000+ servers, padrão de facto | 150+ orgs, crescendo rapidamente |
Diagrama: MCP e A2A juntos
Quando usar cada um
Use MCP quando:
- Você precisa dar acesso a uma ferramenta específica (banco de dados, API, filesystem)
- A operação é determinística e retorna em segundos
- O "servidor" não toma decisões — apenas executa
- Você quer integrar com Claude Desktop, VS Code, Copilot Studio sem código custom
Use A2A quando:
- Você quer delegar uma tarefa completa para um agente especializado
- A tarefa pode levar tempo e tem múltiplos sub-steps
- O agente destino pode precisar fazer perguntas de volta (input-required)
- Você está integrando agentes de vendors diferentes (ex: seu agente Azure com agente Salesforce)
- Você quer descoberta dinâmica de agentes disponíveis na organização
Em sistemas enterprise maduros, você vai ter três camadas: OpenAPI para integração com sistemas legados sem IA; MCP para dar contexto e ferramentas ao agente; A2A para orquestrar múltiplos agentes especializados. Ver 07-03-01 para a decision matrix completa.
Overlap: onde os dois se tocam
Existe uma zona cinza: um MCP server muito sofisticado, que internamente usa um LLM e tem múltiplos steps, começa a se parecer com um agente A2A. A distinção prática:
- Se você expõe via tools/list + tools/call com resposta síncrona → MCP
- Se você expõe via Agent Card + POST /tasks com lifecycle assíncrono → A2A
A regra de ouro: se a operação leva mais de 10 segundos ou pode requerer input intermediário do usuário → A2A. Se é rápido e determinístico → MCP.