Implement MCP first for AI coding tool interop because tool connectivity is the actual bottleneck in today's IDE workflows. A2A addresses peer-to-peer task delegation between autonomous agents, a pattern that only becomes necessary once a team is coordinating multiple agents across processes or machines.
TL;DR
AI coding teams connecting a single assistant to files, terminals, and APIs need MCP only. A2A becomes necessary when multiple autonomous agents delegate tasks to each other across processes or machines. No major coding IDE ships native A2A support today. Implement MCP first, then add A2A when your architecture grows into several coordinating agents working in parallel. Intent is purpose-built for that workflow through living specs and a coordinator-implementor-verifier model.
What MCP Costs to Get Running vs. What A2A Costs
The decision between protocols is rarely abstract once you cost it out. MCP for a single coding assistant takes roughly 30 minutes: install the official filesystem and git servers, drop a config file in the right location for Cursor or Claude Code, restart the IDE. Adding A2A to a working setup is weeks of custom work covering Agent Card hosting, webhook auth for push notifications, task lifecycle handling, and a discovery mechanism that none of the major IDEs ship for you.
- MCP has a working ecosystem. The PulseMCP directory lists over 10,000 published servers, the Python SDK pulls hundreds of millions of monthly downloads on PyPI, and every major IDE supports MCP natively. VS Code reached general availability in July 2025, Cursor configures it through
.cursor/mcp.json, Claude Code through its CLI, and JetBrains documents MCP for its AI assistant. - A2A has no IDE-level shipping product. The Cursor community forum has a feature request with 1,886 views and no implementation planned, VS Code has only a community debug extension, and JetBrains shipped A2A inside Koog, a Kotlin agent framework rather than the IDE itself.
The two protocols operate at different layers. MCP delivers immediate impact on coding workflows, while A2A is the protocol you adopt later, deliberately, once coordination becomes the real bottleneck.
See how Intent coordinates parallel agents through a structured spec, with each agent connecting to its own scoped MCP servers.
Free tier available · VS Code extension · Takes 2 minutes
What MCP Actually Does in a Coding Workflow
MCP is straightforward enough that the protocol mechanics fit into four points:
- Three roles: Host (Cursor, Claude Code, VS Code with Copilot), Client (one per connected server), and Server (exposes tools, resources, and prompts over JSON-RPC).
- The LLM never calls servers directly. The host mediates every interaction, as documented in the MCP architecture spec.
- Tool manifests load at session start. The client sends an
initializerequest, each server returns a JSON Schema for its tools, and those schemas get serialized into the LLM's context window so the model knows what is callable. - Two transports matter. Stdio for local servers (host spawns a subprocess, JSON-RPC over
stdin/stdout, logging onstderr) and Streamable HTTP for remote servers like the GitHub MCP server. SSE is now deprecated in the spec.
The mechanics are easy. The opinionated part is which servers to install and in what order. After running this stack across half a dozen real codebases, the recommendation is to start small:
| Server | What It Exposes | Install Priority |
|---|---|---|
| Filesystem | Sandboxed file read/write | Install first; every workflow needs it |
| Git | Repository history and diffs | Install first; pairs with filesystem |
| GitHub | Code search, PRs, issues | Install when you start opening PRs from chat |
| Shell | Whitelisted command execution | Install with caution; lock down the allowlist |
| PostgreSQL | Schema as resource, queries as tool | Install only when actively debugging schema |
| Playwright | Browser automation | Install last (biggest token-bloat offender) |
The transport choice matters for security. Stdio servers ship as arbitrary binaries from npm or PyPI, and executing them is exactly the supply-chain risk that bit teams using postmark-mcp. Streamable HTTP servers are safer to operate because you control the deployment and authenticate the connection, though they are harder to develop locally. Pick stdio for development and trusted first-party servers; pick HTTP for anything that touches production credentials or third-party services.
Configuration varies across IDEs, and portability is not automatic:
| IDE | Config File | Location | Notable Difference |
|---|---|---|---|
| Claude Code | .mcp.json | Project root | CLI writes this; user scope stored separately |
| Cursor | mcp.json | ~/.cursor/mcp.json (global), .cursor/mcp.json (project) | Project-level wins on conflict |
| Windsurf | mcp_config.json | ~/.codeium/windsurf/ | Uses serverUrl instead of url for HTTP |
| VS Code + Copilot | mcp.json | .vscode/ in workspace | Auto-detected by VS Code |
The Context Window Cost You Need to Know
MCP's tool manifest injection creates a scaling problem that most "A2A vs MCP" posts skip. When I connected 12 MCP servers to Claude Code, the client flagged this warning before I typed a single message:
That is roughly 82,000 tokens consumed by MCP tools before writing a single prompt. Atlassian engineering reports that a large MCP server can consume 10,000 to 30,000+ tokens per request for tool descriptions, as detailed in their MCP compression writeup. Tool selection accuracy also declines as the available pool grows, an effect Datadog documented when stress-testing tool-heavy agents.
Two production-tested mitigations are worth knowing. Anthropic's code-execution pattern achieves a 98.7% token reduction (150,000 tokens down to roughly 2,000) by having agents write code to interact with MCP servers rather than issuing direct tool calls. Atlassian's open-source mcp-compressor provides 70-97% reduction as a drop-in proxy and works with any MCP client and server. For teams running multi-agent coding workspaces, scoping MCP servers to specialist agents avoids loading every tool into every agent's context window.
What A2A Actually Does (and What It Doesn't Do Yet)
A2A handles a different communication pattern than MCP. Where MCP connects an agent to tools, A2A connects an agent to another agent for delegation, as defined in the A2A specification. The protocol centers on three mechanisms that compress easily:
- Agent Cards are signed discovery documents at
/.well-known/agent.jsonthat advertise identity, endpoint, capability flags, auth requirements, and a skills list. - Task lifecycle moves through stateful transitions (
submitted → working → completed, plusfailed,canceled,input-required,auth-required,unknown,rejected) with SSE streaming and webhook push notifications for long-running work. - Artifacts are the deliverables (files, structured data, generated content) passed between agents in named, multi-part envelopes.
A2A leaves three gaps unsolved that will bite teams the moment they ship anything past a prototype:
- No standard agent identity model. Agent Cards advertise authentication requirements, but A2A defers the actual identity layer to OAuth, mTLS, or whatever the implementer chooses. Two A2A agents from different vendors will not interoperate without a separately negotiated trust mechanism.
- No cost or rate-limit accounting across delegation. When Agent A delegates to Agent B, which spends $4 of model tokens completing the task, A2A defines no way to attribute, cap, or refuse that spend. Teams will end up building cost telemetry on top of the protocol.
- Push-notification webhooks are auth-undefined. The spec says webhooks deliver state updates but leaves signing, replay protection, and endpoint validation to implementations. Expect each vendor's webhook handler to look slightly different.
A2A's skill-hiding design has tradeoffs. It lets a calling agent treat "code review" as a vendor-neutral black box, but when a delegated task fails silently, you cannot see which internal tool broke.
| Dimension | MCP | A2A |
|---|---|---|
| Communication | Agent to tool | Agent to agent |
| Counterparty | Deterministic function, no reasoning | Autonomous agent with its own LLM |
| State model | Stateless call-response | Stateful task lifecycle (hours/days) |
| Discovery | Static; caller knows exact schema | Dynamic; Agent Card at well-known URI |
| Opacity | Tool schema fully exposed | Agent internals hidden; only skills advertised |
| Duration | Synchronous or short streaming | Hours or days |
The critical gap for coding teams: A2A has no production-grade implementation in any major IDE. A community project called A2A-MCP-Server lets MCP-compatible clients reach A2A agents through a protocol bridge, though it is an unofficial workaround with no vendor backing.
The Failure Mode: What Happens When Teams Skip A2A
Teams running multi-agent setups without a standardized inter-agent protocol end up writing custom glue code that fails in predictable ways. I watched this break on a setup running 4 agents (each a separate process with its own LLM, tools, and memory) across 2 machines: when the main agent needed information from the sales agent, no standard way to ask existed. The workaround was manually wired REST endpoints, custom webhooks, and fragile JSON schema matching.
The round-trip latency for a single inter-agent query landed at 7.2 seconds. The sales agent received a natural language request, queried its HubSpot CRM tools internally, and returned structured results. No pre-agreed schema existed between the agents. Every team hitting this wall builds a different solution, and none of them interoperate.
The failure modes from choosing the wrong protocol configuration are documented and specific:
- MCP-only orchestration breaks child agent tool access. A child agent receiving a delegated task through MCP cannot execute its own MCP-connected tools within that delegated context, forcing manual parameter routing that does not scale.
- Forcing MCP to handle agent coordination is roughly 10x more expensive. Bending MCP to do both tool access and coordination produces an approximately 10x cost penalty with degraded output quality, according to a practitioner report.
- Custom glue code produces schema drift. Research analyzing multi-agent LLM system failures found step repetitions account for 15.7% of failures and failure to recognize task completion accounts for 12.4%, both attributed to ad-hoc coordination.
- Agent identity gaps create security vulnerabilities. CVE-2025-68664 in LangChain Core (CVSS 9.3, unsafe serialization) and a CrewAI error-handling flaw that exposed an admin GitHub token demonstrate the risk of building coordination without standardized identity.
The practical rule from these patterns: if you are already past three agents stitched together with custom glue, stop adding agents and standardize on a coordination layer before the schema drift compounds. Every additional agent makes the cleanup harder.
Explore how Intent's coordinator-implementor-verifier model keeps multi-agent handoffs aligned as requirements change.
Free tier available · VS Code extension · Takes 2 minutes
in src/utils/helpers.ts:42
The Multi-Agent Coding Pipeline: Where Both Protocols Work Together
The canonical layered architecture uses both protocols at different levels:
Anthropic and Google have presented MCP and A2A as complementary, with a joint webinar on deploying both protocols together on Vertex AI. The framing is standard: MCP for tools, A2A for coordination.
What this looks like before a coordination layer arrives is messy. The first time I tried running three specialist agents (review, test, security) against the same PR without a shared spec, two of them rewrote the same file in incompatible ways before the third even started. The orchestration script could not detect the conflict because it had no model of what each agent was doing or had finished.
Intent fits this pattern by giving the agents a shared spec rather than a shared prompt. A Coordinator agent decomposes work into a living spec, Implementor agents run in parallel inside isolated git worktrees so concurrent edits cannot collide, and a Verifier checks the diff against the spec before the work merges. Teams using BYOA can route specific tasks to Claude Code, Codex, or OpenCode while keeping the same coordination layer. Honest limitations apply: Intent is currently macOS-only with a Windows waitlist open and ships in public beta. For teams already standardized on LangGraph, the article on building multi-agent AI systems for code development covers the framework-first path.
A counterpoint worth taking seriously: naive multi-agent decomposition can create coordination failures because subtask agents lack sufficient context, an argument Cognition has made publicly. The legitimate use case for multi-agent splits is investigative work that should not pollute the main agent's context window, plus tasks that are genuinely independent enough to parallelize without conflicting writes.
MCP to the Linux Foundation: Governance Implications
The Linux Foundation announced the Agentic AI Foundation (AAIF) on December 9, 2025, with MCP as a founding project. Platinum members include AWS, Anthropic, Block, Bloomberg, Cloudflare, Google, Microsoft, and OpenAI. The vendor neutrality is what allows direct competitors to commit engineering resources to a shared protocol.
What that governance does not cover matters more for production teams:
- Bifurcated governance creates roadmap risk. A2A is a separate Linux Foundation project while MCP sits under AAIF. The two protocols are governed by different foundations even though they often deploy together, which means spec versioning may diverge and dual-stack teams need to track two roadmaps independently.
- Security of community-published servers remains unvetted. A malicious MCP server (
postmark-mcp) was distributed via npm and confirmed by ReversingLabs research earlier this year. Pin MCP server versions in your config and do not auto-update community-published servers. - STDIO vulnerability is by design. Anthropic confirmed that the command execution behavior in STDIO transport is intentional and that input sanitization is the developer's responsibility. Security researchers identified this issue across Claude Code, GitHub Copilot, Cursor, and LangChain components, as documented in this CSO analysis.
- Long-running task support (the "tasks primitive") shipped as experimental in the November 2025 spec. Retry semantics and result expiration remain open design questions.
The governance transfer is a structural prerequisite for ecosystem growth, though it does not guarantee production safety. Teams deploying either protocol still own their authentication, credential scoping, and supply chain validation.
The commercial consequences of protocol adoption are already visible. When Google announced Universal Commerce Protocol (UCP) at NRF 2026, I ran an AI-readiness analysis on several large platforms and found that those missing Schema.org/JSON-LD markup, MCP servers, and A2A agent cards were functionally invisible to UCP-compliant AI agents. Protocol support has become a vendor qualification requirement.
Decision Framework: Which Protocol to Implement First
Your current architecture drives the decision more than abstract protocol comparisons. The four scenarios collapse into a single table for teams making a same-week decision:
| Scenario | Protocol | First 90 Days |
|---|---|---|
| Single agent + tools | MCP only | Install filesystem + git week 1; add GitHub when you start opening PRs from chat; skip Playwright until needed |
| Multi-agent pipeline | MCP first, then A2A | Stand up MCP per agent in month 1; add A2A or a coordination layer (Intent, LangGraph) in month 2 only after schema drift starts costing time |
| Cross-vendor delegation | A2A with MCP inside each agent | Start by negotiating the auth handoff between vendors; that work will dominate the timeline more than the protocol itself |
| Evaluating from scratch | MCP first | Prove tool calling end-to-end before evaluating any agent-to-agent layer |
Two rows deserve extra context. Cross-vendor delegation bottlenecks on auth rather than protocol: Agent Cards advertise auth requirements but say nothing about how two vendors exchange and rotate credentials. Multi-agent pipelines have a "skip MCP-first" exception. If your product is a multi-agent service exposed to other vendors (a code review API, a security scanning agent), starting with A2A makes sense because delegation is the public contract.
For everyone else, MCP first remains the right call.
Implement MCP First and Add Coordination When the Pipeline Grows
Start with MCP for tool connectivity. Filesystem, git, and a scoped shell server cover the vast majority of single-agent coding work. Add A2A only when custom glue between 3+ agents starts costing more time than it saves, and scope MCP servers per agent to keep tool manifests contained.
Intent gives teams that coordination layer without forcing them to build it from scratch. A coordinator decomposes work into a living spec, implementor agents run in parallel inside isolated git worktrees, and a verifier checks the diff before any merge.
See how Intent's living specs keep multi-agent coding pipelines aligned as plans evolve.
Free tier available · VS Code extension · Takes 2 minutes
FAQ
Related
Written by

Ani Galstian
Ani writes about enterprise-scale AI coding tool evaluation, agentic development security, and the operational patterns that make AI agents reliable in production. His guides cover topics like AGENTS.md context files, spec-as-source-of-truth workflows, and how engineering teams should assess AI coding tools across dimensions like auditability and security compliance