Skip to content
Amin Mirlohi

Production Agents 2026 · Part 1 of 5

10 min read6 primary sources

MCP vs A2A in 2026: A Production Architecture Guide

MCP connects agents to tools. A2A coordinates independent agents, including through stateful tasks. Learn where each belongs and what neither protocol solves.

On this page

The practical answer is short: use MCP between an agent and the tools or resources it invokes directly; use A2A between independent agent services that own their own reasoning, state, and task lifecycle. Use both when one agent delegates a goal to another agent, and that second agent uses MCP to reach its database, search service, or internal APIs.

That distinction is more durable than a feature checklist. Both protocols can move structured data. Both now have concepts related to tasks, discovery, authorization, and long-running work. The deciding question is not which one has more features. It is who owns the work after the request crosses the boundary.

MCP is a capability boundary. A2A is a delegation boundary. Neither is a correctness, security, or control system by itself.

The production decision in one table

QuestionMCPA2A
What sits on the other side?A tool, resource, prompt, or application capabilityAn independent, potentially opaque agent
What is exchanged?Structured capability calls and resultsMessages, stateful tasks, status updates, and artifacts
Who plans the work?Usually the calling agentThe remote agent owns its internal plan
Typical lifecycleRequest and response, with extensions for longer workStateful, multi-turn, streaming, or asynchronous work
Discovery unitServer capabilities and lists of tools or resourcesAn Agent Card describing identity, skills, endpoints, and security
Best fitDatabase lookup, file access, API action, calculator, internal serviceResearch delegation, specialist workflow, cross-system coordination
What it does not guaranteeSafe arguments, correct output, least privilege, or task successTrustworthy peers, correct artifacts, safe delegation, or policy compliance

If the caller needs to say, "run this named operation with these arguments," the boundary is tool-shaped and MCP is the natural fit. If the caller needs to say, "take responsibility for this goal and report progress," the boundary is agent-shaped and A2A is the natural fit.

What MCP became in 2026

The July 28, 2026 MCP specification is a meaningful architectural reset. The protocol core is now stateless. The old initialize and initialized handshake and the Mcp-Session-Id header are retired. Each request carries its protocol version, client identity, and capabilities, while an optional server/discover call lets a client inspect capabilities first.

That change makes remote MCP servers look more like ordinary HTTP infrastructure. A request can land on any instance behind a round-robin load balancer. Mcp-Method and Mcp-Name headers give gateways a direct routing and policy surface. Tool and resource lists can include cache hints, which reduces repeated discovery and helps stabilize upstream prompt caches.

Stateless transport does not mean a stateless application. A tool can still return an explicit handle that the model passes into a later call. The important change is that application state is visible and intentional rather than hidden inside a transport session.

MCP also gained Multi Round-Trip Requests for cases where a tool needs input during a call. A tool can return input_required, ask for confirmation or a missing value, and receive the response when the client retries. Tasks moved from the experimental core into an extension. Authorization added issuer validation and stronger credential binding, while Dynamic Client Registration is now deprecated in favor of Client ID Metadata Documents.

This makes MCP easier to operate at scale, but its central abstraction remains the capability call. The calling agent chooses a tool. The server performs the named operation selected by the caller. Even when that operation lasts longer or asks for input, the caller is still interacting with a capability it selected.

What A2A v1 is for

A2A v1 targets a different object: an independent agent system. The remote agent can be built with another framework, model, language, or vendor. Its memory, tools, and internal plan stay opaque. The protocol standardizes the contract around that opaque system.

An Agent Card publishes the agent's identity, skills, supported interfaces, endpoint, and authentication requirements. A Message carries a conversational turn. A Task is a stateful unit of work with an identifier and lifecycle. An Artifact carries the produced result. The distinction between messages and artifacts matters: conversation advances the work; artifacts are the task outputs.

A2A supports direct responses, streaming updates, task retrieval, cancellation, subscriptions, and push notifications. The v1 specification defines JSON-RPC, gRPC, and HTTP+JSON bindings. It also formalizes versioning, multi-tenancy, pagination, OAuth-related security behavior, and optional signatures for Agent Cards.

The caller therefore delegates without needing the remote agent's tool catalog or chain of execution. It asks a peer to own a task, receives status, supplies more input when needed, and consumes artifacts when the task reaches a terminal state.

That is why wrapping every specialist agent as a giant tool eventually feels wrong. A tool call implies that the caller owns orchestration. An A2A task lets the remote system own a meaningful part of it.

The clean combined architecture

The protocols compose naturally:

User
  -> Orchestrator agent
       -> MCP: policy lookup
       -> MCP: customer record
       -> A2A: delegate analysis to specialist agent
            -> MCP: search private corpus
            -> MCP: run calculation
            -> MCP: create artifact
       -> deterministic verification gate
  -> approved result

The orchestrator uses MCP for capabilities it invokes directly. It uses A2A when it transfers responsibility for a subgoal to a peer. The specialist can then use its own MCP servers without disclosing their implementation to the orchestrator.

Notice what sits after the protocols: a verification gate. Interoperability gets the request and result across boundaries. It does not establish that the result is correct. The same principle behind verification gates for autonomous agents applies here: the system still needs an external check that the producing agent cannot redefine.

The overlap is real, but not decisive

There are two cases that make the choice look ambiguous.

First, MCP now has a Tasks extension. That does not turn every MCP server into an independent peer. A long-running database export can be a task while remaining a bounded capability chosen by the caller. Lifecycle length does not determine ownership.

Second, an A2A agent can expose a narrow skill through an MCP tool. This is reasonable when the skill has stable inputs and outputs, needs no negotiation, and can be treated as an operation. The same remote system might expose a deterministic price_quote capability through MCP and a multi-step procurement workflow through A2A.

Use this test:

  1. Does the caller choose the operation and control the sequence? Use MCP.
  2. Does the remote system choose the sequence and own a task state? Use A2A.
  3. Does the boundary require negotiation, clarification, progress, or multiple artifacts? A2A is probably the clearer contract.
  4. Can the work be reduced to a narrow, typed, idempotent operation? MCP is probably simpler.

The goal is not protocol purity. It is making responsibility legible.

Five controls both protocols still need

1. Identity that survives delegation

Authentication answers which client connected. Production authorization must also answer which user, tenant, and purpose the agent is acting for. Do not replace the user's identity with a broad service credential as work crosses MCP or A2A boundaries. Carry an explicit delegation context, validate audience and issuer, and narrow scopes at every hop.

2. Idempotency and cancellation

Retries are normal in distributed systems. Agent actions are often not. Every operation that can charge money, send a message, publish content, or mutate a record needs an idempotency key or an equivalent deduplication rule. Cancellation must propagate to active tools and delegated tasks rather than only changing a status field at the orchestrator.

3. Schema and version discipline

Protocol compatibility does not make an artifact semantically compatible. Version tool inputs, task metadata, and artifact schemas. Validate them on both sides. Prefer additive changes, reject unknown high-risk operations, and log the negotiated protocol and schema versions with each trace.

4. End-to-end observability

One user request may create several A2A tasks and dozens of MCP calls. Assign a correlation identifier at the entry point and propagate it through both protocols. Record the requesting principal, delegated agent, selected capability, normalized arguments, status transitions, artifact hashes, policy decisions, and verification results. Without that chain, an incident becomes a set of unrelated logs.

5. A deterministic action boundary

Remote content can influence an agent before it reaches a privileged tool. A peer agent can also return an artifact containing instructions that should have been treated as data. Validate at the point where an output becomes an action: before a write, payment, send, publish, deploy, or permission change. This is the structural boundary described in why agents need boundaries, and neither MCP nor A2A removes the need for it.

Architecture smells

  • A2A everywhere. Turning small deterministic operations into agent delegations adds task state, latency, and a larger failure surface without adding useful autonomy.
  • MCP for opaque goals. Exposing an entire agent as one permissive tool hides status, cancellation, artifacts, and responsibility inside a call that looks simpler than it is.
  • Protocol as permission. Discovering a tool or Agent Card does not mean the caller should be allowed to use every advertised capability.
  • One identity for every hop. A shared high-privilege token destroys attribution and makes least privilege impossible.
  • Success by status string. completed means the remote system reached a terminal state. It does not mean the artifact passed your acceptance criteria.
  • Unbounded delegation. A remote agent that can recursively delegate without depth, cost, or time limits can turn one request into an uncontrolled graph.

A production checklist

Before choosing or combining these protocols, answer each item explicitly:

  • Is the boundary capability-shaped or delegation-shaped?
  • Who owns planning, retries, and task state after the call crosses it?
  • Which identity, tenant, purpose, and scopes travel with the request?
  • Which actions require approval or deterministic policy checks?
  • Are mutation calls idempotent and safely retryable?
  • Can cancellation reach the actual work?
  • Are tool inputs and artifacts schema-validated and versioned?
  • Can one trace reconstruct all A2A tasks and MCP calls?
  • Is there a hard depth, time, token, and cost budget?
  • What external gate decides that the final result is acceptable?

The protocols become valuable when they make a system easier to reason about. If adding one makes ownership less clear, the abstraction boundary is probably wrong.

Sources

← All writing