Unboxing the AI Stack
L01 · Agents · Explainer

How the Model Context Protocol Works (2026-07-28 Revision)

The Model Context Protocol (MCP) is an open standard that lets an AI application reach tools and data through JSON-RPC messages. Here is how hosts, clients and servers fit together, what the stateless 2026-07-28 revision changed, and how MCP compares with Google-originated A2A, with dated download counts.

Checked against MCP specification revision 2026-07-28 and A2A specification 1.0

HOST · AI application Model (LLM) Client A one client per server Client B one client per server stdio Streamable HTTP JSON-RPC 2.0 Server 1 · local subprocess launched by the client Tools Resources Prompts Server 2 · remote one HTTP endpoint, OAuth 2.1 optional Tools Resources Prompts
  • MCP client and its connection (solid: stdio; dashed: Streamable HTTP)
  • MCP server
  • Tools: functions the model can call
  • Resources: context and data
  • Prompts: templated messages
Diagram: the roles in MCP specification revision 2026-07-28. A host runs one client per server; servers offer tools, resources and prompts over stdio or Streamable HTTP. Not to scale.

As of Spec facts vendor-statedDownload and registry counts measured

MCP vs A2A by the numbers, as of 2026-10-13
Attribute Model Context Protocol (MCP) Agent2Agent (A2A) Figure
Purpose Connects LLM applications to external data sources and tools2 Communication and interoperability between independent AI agents17 Vendor-stated
Originated by Anthropic, open-sourced November 202413 Google19 Vendor-stated
Governed by Agentic AI Foundation (AAIF), a directed fund under the Linux Foundation, since Dec 9, 202512 Linux Foundation project, with a Technical Steering Committee19 Vendor-stated
Current version 2026-07-281 1.0.0, released 2026-03-12 (patch 1.0.1, 2026-05-26)1718 Vendor-stated
Version scheme Date (YYYY-MM-DD) of the last backwards-incompatible change1 Numbered releases (0.1.0, 0.2.6, 0.3.0, 1.0.0)17 Vendor-stated
Version negotiation Version in every request's _meta; MCP-Protocol-Version header on HTTP1 A2A-Version header17 Vendor-stated
Wire format and transports JSON-RPC 2.0 over stdio or Streamable HTTP24 Three bindings: JSON-RPC, gRPC, HTTP+JSON/REST17 Vendor-stated
Discovery Mandatory server/discover RPC; official MCP Registry314 Agent Card at /.well-known/agent-card.json17 Vendor-stated
Authorization Optional; on HTTP, servers act as OAuth 2.1 resource servers and must publish Protected Resource Metadata (RFC 9728)5 Schemes declared in the Agent Card; 1.0 removed the OAuth implicit and password flows and added device code and PKCE1718 Vendor-stated
Supporting organizationsas announced AAIF co-founded by Anthropic, Block and OpenAI12 More than 150 (Apr 9, 2026)20 Vendor-stated
Official registry entriesactive, latest versions 42,320 servers (counted 2026-10-13, 12:32–12:35 UTC)14 No comparable count; consolidating registry efforts is on A2A's roadmap20 Measured
npm SDK downloads2026-09-12 to 2026-10-11 266,736,964@modelcontextprotocol/sdk15 14,826,015@a2a-js/sdk21 Measured
PyPI SDK downloadslast 30 days, per pypistats 235,193,557mcp16 11,359,775a2a-sdk22 Measured

A side-by-side of the two open agent protocols, from each project's own specification and announcements. Download counts are as reported by the npm downloads API and pypistats.org on Oct 13, 2026; they count package installs, including automated and CI installs, not people, and we have not added the two registries together. The registry figure is our own count of active entries flagged as the latest version in the official MCP Registry API, taken by following its pagination cursor to the end; it excludes 522 entries marked deprecated. It is a snapshot and changes daily. Figure labels: how they work.

How it works

Hosts, clients and servers

MCP describes three roles. A host is the LLM application a person uses, such as a chat app or an AI coding tool. Inside it, each client is a connector that talks to one server, a service that provides context and capabilities. All three exchange JSON-RPC 2.0 messages.2 The specification says it takes inspiration from the Language Server Protocol, which standardized how code editors add support for programming languages: MCP aims to do the same for connecting tools and data to AI applications.2

Video: Anthropic's official discussion of the Model Context Protocol with members of the team that created it (Anthropic channel). Recorded before the 2026-07-28 spec revision.

The split matters for trust: the specification states that hosts must obtain explicit user consent before exposing user data to servers, and must not transmit resource data elsewhere without it.2

Tools, resources and prompts

Servers offer any of three features. Tools are functions for the AI model to execute; resources are context and data for the user or the model to use; prompts are templated messages and workflows for users.2 A tool is described by a name and a JSON Schema for its inputs, and optionally its outputs; revision 2026-07-28 allows any JSON Schema 2020-12 keyword in those schemas.37

Clients can offer features back to servers. In 2026-07-28 the one listed is elicitation, a server's request for more information from the user, first added in revision 2025-06-18.210 Sampling, listed since revision 2024-11-05 as "server-initiated agentic behaviors and recursive LLM interactions", and Roots, which points a server at directories or files, were both deprecated in 2026-07-28, along with Logging.38 Deprecated features keep working for at least twelve months (ninety days under an expedited exception), and the changelog suggests replacements: passing directories or files as tool parameters instead of Roots, and calling LLM provider APIs directly instead of Sampling.13

Two transports: stdio and Streamable HTTP

A transport only defines how messages are framed and delivered; the meaning of the messages is the same on every one. The specification defines two standard bindings. With stdio, the client launches the server as a subprocess and they exchange newline-delimited messages over its standard input and output. With Streamable HTTP, each message is an HTTP POST to a single MCP endpoint, and the reply arrives either as a JSON object or as a server-sent events (SSE) stream scoped to that request.4 Custom transports are allowed.4

Streamable HTTP arrived in revision 2025-03-26, replacing the earlier HTTP+SSE transport.9 The old transport has been deprecated since then, and 2026-07-28 formally reclassified it as Deprecated under the new feature lifecycle policy.3

What changed in 2026-07-28: no handshake, no sessions

Revisions up to 2025-11-25 were handshake-based: a client opened a connection with initialize and a notifications/initialized reply, and the base protocol was listed as "stateful connections".18 Revision 2026-07-28 removes that handshake. Every request now carries its protocol version and the client's capabilities in its _meta field, and the server accepts or rejects each request on its own; on Streamable HTTP the version also travels in the MCP-Protocol-Version header.13

Servers must now implement server/discover, an RPC that returns their supported protocol versions, capabilities and identity in one request. Calling it is optional for clients, which may instead send a request directly and handle an UnsupportedProtocolVersionError.1 The revision also drops protocol-level sessions and the Mcp-Session-Id header (servers that need state pass their own handles as tool arguments), replaces subscriptions with a single subscriptions/listen stream, removes ping, moves long-running tasks into an official extension, and introduces Multi Round-Trip Requests: instead of sending its own requests to the client, a server returns an input_required result and the client retries with the answers.3

The version string itself is a date. MCP only changes it when a backwards-incompatible change is made, so a revision can keep receiving compatible updates while it is current.1

Authorization: OAuth for remote servers

Authorization is optional in MCP and applies to HTTP-based transports; implementations using stdio should not follow it and should instead retrieve credentials from the environment.5 When it is used, a protected MCP server acts as an OAuth 2.1 resource server and an MCP client acts as an OAuth 2.1 client. Servers must publish OAuth 2.0 Protected Resource Metadata (RFC 9728), which clients use to find the right authorization server, and clients must send Resource Indicators (RFC 8707) naming the server they intend to reach, so a token issued for one server cannot be replayed at another.510

Revision 2026-07-28 tightened this further: clients must check the iss value in authorization responses (RFC 9207), must bind stored credentials to the authorization server that issued them, and Dynamic Client Registration is deprecated in favor of Client ID Metadata Documents.3

The security risks the spec names

The specification is direct about the risk: tools represent arbitrary code execution and must be treated with caution, hosts must get explicit user consent before invoking any tool, and descriptions of tool behavior, such as annotations, are to be treated as untrusted unless they come from a trusted server.27 That is the opening for what researchers call prompt injection or tool poisoning: text a server supplies, in a description or a result, that tries to steer the model into actions the user never asked for. The tools page says there should always be a human in the loop with the ability to deny tool invocations, with clear indicators when a tool runs and confirmation prompts for operations.7

A separate Security Best Practices page lists the attacks implementers must design against, among them the confused deputy problem, token passthrough (an anti-pattern the authorization rules forbid), server-side request forgery, compromise of local MCP servers, mix-up attacks and over-broad scopes.6 MCP itself cannot enforce these principles at the protocol level; the specification leaves consent flows and access controls to implementers.2

Governance, and MCP vs A2A

Anthropic donated MCP to the Agentic AI Foundation on Dec 9, 2025. The AAIF is a directed fund under the Linux Foundation, co-founded by Anthropic, Block and OpenAI; MCP joined Block's goose and OpenAI's AGENTS.md as its founding projects, and Anthropic said MCP's governance model would stay unchanged.1213 At the time, Anthropic stated there were more than 10,000 active public MCP servers and 97M+ monthly SDK downloads across Python and TypeScript.12 Those were vendor-stated figures; the table above gives today's counts from the registries themselves.

Video: Anthropic's official talk on why it built MCP and donated it to the Agentic AI Foundation (Anthropic channel).

A2A, the Agent2Agent Protocol, was originally developed by Google and is now hosted by the Linux Foundation.19 Its first stable specification, 1.0.0, came out on Mar 12, 2026.18 Both projects describe the two as complementary: MCP covers how an agent connects to tools, APIs and data, while A2A covers how independent agents discover each other, negotiate and delegate work as peers, with each agent publishing an Agent Card that describes its skills and endpoints.1720 On the Linux Foundation's April 2026 count, more than 150 organizations support A2A, and Microsoft and AWS have built it into Azure AI Foundry, Copilot Studio and Amazon Bedrock AgentCore Runtime.20 By package downloads over the last month, MCP's SDKs are installed far more often: on npm, about 18 times as often as A2A's JavaScript SDK (266.7 million vs 14.8 million; our ratio of the two npm figures for the same 30-day window).1521

As of All entries from the MCP changelogs

MCP specification revisions and their headline changes, as of 2026-10-13
Revision Base protocol Headline changes Figure
2024-11-05 Handshake, stateful Public release: JSON-RPC messages; resources, prompts and tools; sampling813 Vendor-stated
2025-03-26 Handshake, stateful OAuth 2.1 authorization framework; Streamable HTTP replaces HTTP+SSE; JSON-RPC batching; tool annotations9 Vendor-stated
2025-06-18 Handshake, stateful Batching removed; structured tool output; servers become OAuth resource servers; RFC 8707 resource indicators; elicitation; MCP-Protocol-Version header10 Vendor-stated
2025-11-25 Handshake, stateful OpenID Connect discovery; icons; URL-mode elicitation; tool calling in sampling; Client ID Metadata Documents; experimental tasks11 Vendor-stated
2026-07-28 (current) Stateless Handshake and sessions removed; mandatory server/discover; subscriptions/listen; Multi Round-Trip Requests; tasks become an extension; Roots, Sampling and Logging deprecated13 Vendor-stated

Every dated MCP specification revision, with the major changes its own changelog lists against the revision before; minor changes are left out. "Handshake, stateful" follows the versioning page, which calls 2025-11-25 and earlier "handshake-based", and the 2024-11-05 overview, which lists "stateful connections". Figure labels: how they work.

Sources

  1. Model Context Protocol, Versioning (current protocol version 2026-07-28), retrieved 2026-10-13.
  2. Model Context Protocol, Specification, revision 2026-07-28: Overview, retrieved 2026-10-13.
  3. Model Context Protocol, Key Changes (2026-07-28, since 2025-11-25), retrieved 2026-10-13.
  4. Model Context Protocol, Transports (2026-07-28), retrieved 2026-10-13.
  5. Model Context Protocol, Authorization (2026-07-28), retrieved 2026-10-13.
  6. Model Context Protocol, Security Best Practices (2026-07-28), retrieved 2026-10-13.
  7. Model Context Protocol, Tools (2026-07-28), retrieved 2026-10-13.
  8. Model Context Protocol, Specification, revision 2024-11-05: Overview, retrieved 2026-10-13.
  9. Model Context Protocol, Key Changes (2025-03-26), retrieved 2026-10-13.
  10. Model Context Protocol, Key Changes (2025-06-18), retrieved 2026-10-13.
  11. Model Context Protocol, Key Changes (2025-11-25), retrieved 2026-10-13.
  12. Anthropic, Donating the Model Context Protocol and establishing the Agentic AI Foundation, Dec 9, 2025, retrieved 2026-10-13.
  13. Linux Foundation, Linux Foundation Announces the Formation of the Agentic AI Foundation (AAIF), Dec 9, 2025, retrieved 2026-10-13.
  14. Official MCP Registry, servers API (version=latest), all pages counted by MetaPrompt 2026-10-13, 12:32–12:35 UTC: 42,842 entries, 42,320 active and 522 deprecated.
  15. npm, downloads API: @modelcontextprotocol/sdk, last month (2026-09-12 to 2026-10-11), retrieved 2026-10-13.
  16. pypistats.org, recent downloads: mcp, retrieved 2026-10-13.
  17. A2A Project, Agent2Agent (A2A) Protocol Specification, latest released version 1.0.0 (incl. Appendix B, Relationship to MCP), retrieved 2026-10-13.
  18. A2A Project, CHANGELOG.md (1.0.0, 2026-03-12; 1.0.1, 2026-05-26), retrieved 2026-10-13.
  19. A2A Project, A2A Protocol home page, retrieved 2026-10-13.
  20. Linux Foundation, A2A Protocol Surpasses 150 Organizations, Lands in Major Cloud Platforms, and Sees Enterprise Production Use in First Year, Apr 9, 2026, retrieved 2026-10-13.
  21. npm, downloads API: @a2a-js/sdk, last month (2026-09-12 to 2026-10-11), retrieved 2026-10-13.
  22. pypistats.org, recent downloads: a2a-sdk, retrieved 2026-10-13.