Systems around the model · Standards
Why MCP Spread
The Model Context Protocol turned a grid of custom connectors into one interface on each side, and rival labs adopted it within months because joining cost less than competing. It standardizes how a tool is described and called. What a tool may do, and which servers to trust, remain the adopter's job.
On March 26, 2025, OpenAI shipped support for a standard published by a rival lab.
The standard was the Model Context Protocol, MCP, which Anthropic had released four months earlier as a common way for AI applications to plug into tools and data. OpenAI's agent toolkit supported it the same day Sam Altman announced the decision. Microsoft followed within two months. A little over a year after launch, Anthropic donated the protocol to a new foundation under the Linux Foundation, with Anthropic, OpenAI, Google and Microsoft among its top-tier members.
Rival labs rarely agree on anything that fast. So it's worth understanding why they did here, and what exactly they agreed on, because the answer tells any company adopting MCP which problems it just solved and which ones it still owns.
MCP spread because it turned a multiplication into an addition, moved the connector work to the people who know each system, and made joining cheaper than competing. What it standardizes is how a tool is described and called. It says nothing about what a tool may do or which servers deserve trust, and those questions stay with whoever adopts it.
From twenty connectors to nine
Every AI application that does real work has to reach the systems where the work lives: the ticket queue, the billing database, the code repository. Until late 2024, each application built that reach on its own.
Take a company with four AI applications (a chat assistant, a coding assistant in the editor, a coding agent and an internal workflow agent) that should each reach five systems (CRM, billing, ticketing, a wiki and a database). Without a shared interface, every pair needs its own connector: code that translates the application's way of calling tools into the system's interface, handles the login and formats the results. Four times five is twenty connectors, and each one breaks when either side changes.
Guess first
Without a standard, that company needs twenty connectors. If all four applications and all five systems speak one shared protocol, how many pieces does it need?
With a shared protocol, each application implements the client side once and each system gets one server. Four plus five is nine.
The saving isn't automatic. With two applications and two systems, the grid needs four connectors and the protocol needs four, so nothing is gained. But the gap grows with the size of the grid: at five applications and twenty systems it's 100 against 25. Real portfolios never fill every cell, so those are upper bounds. The direction is what matters.
The count matters less than who does the work. Without a standard, the maker of every AI application has to learn every system's interface and permissions. With one, the owner of each system, who already knows both, builds a server once, and the application maker builds a client once. Work moves to the party with the knowledge. That's what lets a catalog of connectors grow without anyone coordinating it.
Programmers had seen this exact arithmetic before. Until 2016, code-editor features like autocomplete had to be rebuilt for every combination of editor and programming language. Then Microsoft's Visual Studio Code team, with Red Hat and Codenvy, published the Language Server Protocol: one server per language, usable from any editor. MCP's first specification says it took inspiration from it, and the two share the same basic machinery. The pitch was already familiar to the people who had to build it.
What actually travels over the wire
MCP has three roles. The host is the AI application a person uses, and it contains the harness, the ordinary software around the model that decides what the model sees (Same Model, Different Results). A client is a connector the host creates for each server. A server is a program in front of a system that announces what it offers. Servers can run as a local program on your machine or as a web service anywhere.
The most important thing a server offers is tools: functions the model may decide to call. Here is a whole tool definition, roughly as a billing team might publish it so any compatible assistant can answer "which of Acme's invoices are overdue?"
{
"name": "search_invoices",
"description": "Find invoices in the billing system. Use when the user asks what a customer owes or has paid. Returns at most `limit` invoices, newest first. Does not change anything.",
"inputSchema": {
"type": "object",
"properties": {
"customer": { "type": "string" },
"status": { "type": "string", "enum": ["open", "overdue", "paid"] },
"limit": { "type": "integer", "minimum": 1, "maximum": 50 }
},
"required": ["customer"]
},
"annotations": { "readOnlyHint": true }
}
The host fetches this list from the server and shows it to the model. When the model decides to use the tool, it writes a tool call with arguments, the client forwards it, and the server queries the billing system and returns text the model can read: "2 overdue invoices for ACME-0042..."
Three details in that small block explain most of what follows.
The description is all the model knows. It's a paragraph of text the model reads to decide when to use the tool. If it's vague, the model guesses. Nothing in the standard checks whether it's any good.
The annotations are hints. readOnlyHint says the tool doesn't change anything, and the specification itself says clients should never trust such hints from untrusted servers.
Nothing says whose invoices the caller may see. That decision happens inside the server and the billing system, if it happens anywhere.
MCP standardizes how a tool is described and called. It does not say what the tool may do.
Why rivals said yes
Several things helped MCP's start. Anthropic launched it with working pieces, including support in its own desktop app and ready-made servers for Google Drive, Slack, GitHub and Postgres, so the first clients had something to plug into on day one. Tool-using AI products, coding agents especially, were taking off and needed exactly this. And the design borrowed a template developers already trusted.
None of that explains why a rival joined. The explanation I find most convincing is a cost asymmetry. A lab that builds its own connector format has to recruit every system owner separately, and every competing format splits those owners' effort. A lab that adopts the existing protocol borrows the whole catalog overnight. That OpenAI's toolkit shipped support on the day of the announcement suggests how cheap joining was. This is an argument from incentives; nobody has published the decision memo.
Once OpenAI was in, the rest followed quickly. Microsoft announced support in Windows 54 days later. The decisive step looks like that rival adoption, because it turned MCP from Anthropic's format into the format everyone's users already had servers for. The evidence here is sequence and timing, so it can't fully separate cause from momentum already building.
Then came neutral ground. In December 2025 the protocol moved to the new Agentic AI Foundation, co-founded by Anthropic, Block and OpenAI. Anthropic said the way the project is governed would stay the same, so the move changed the legal home more than the working process. The effect still mattered: a rival can adopt a foundation's standard without adopting a competitor's product.
One more data point suggests where the value sits. The 2026 revision rebuilt the protocol's core: it dropped the opening handshake and the idea of a session entirely, so each request now stands alone. If adopters had been attached to the original design, that would have been a crisis. It wasn't. OpenAI's toolkit simply probes servers the new way and falls back to the old one. The value is in the shared name and the shared catalog, much more than in any particular design decision (What Standards Do to Lock-in). That also means the standard can change under its users, and it has: four backward-incompatible revisions in about 21 months.
A plug, not a policy
MCP is best understood as a plug standard. It guarantees the connector fits the socket. It promises nothing about what comes through. Five things that look like part of the standard aren't.
What a tool may do. The protocol carries a tool's name, arguments and result. It doesn't decide whether this user, in this context, should run it. The specification says a person should be able to deny tool calls and that servers must check access, but those are requirements on implementations, and implementations vary. Authorization itself is optional. When Microsoft announced MCP for Windows, it added its own registry, proxy, consent prompts and signing requirements, which tells you the base protocol wasn't built to carry that load.
Trust in other people's servers. A server controls two things the model reads: the tool descriptions and the results. And models can't reliably tell instructions from data (Giving an Agent Room to Work). In April 2025 security researchers at Invariant Labs showed tool poisoning: instructions hidden in a tool's description, visible to the model but not to the user, told an agent to read the client's MCP configuration file and an SSH key and send them back through an extra parameter. They also described servers that change a description after the user approved it, and one server's description quietly altering how the agent uses another server's tool. OpenAI's own documentation warns that a malicious remote server can extract anything that enters the model's context.
The quality of the descriptions. Fifty vaguely named tools is perfectly valid MCP and a terrible interface, partly because every definition takes up room in the model's context window, the limited text it can consider at once. Two servers that each expose a tool called search collide when a host combines them.
Reliability. Since the 2026 revision, if a connection drops mid-request, the client has to send the request again as a new one, and it can't know whether the first attempt ran. A tool that charges a card or sends an email can run twice unless its author made it safe to repeat (When the Tool Call Fails Halfway).
Money. The specification defines no pricing, metering or payment. A vendor hosting a server decides what it exposes and what it charges, in the contracts that already governed its API.
Is it just a wrapper?
The natural objection says MCP is a thin layer of well-known parts (JSON messages, web requests, standard login, schemas) and that standards like this come and go.
Half of that is right. The technology is ordinary, and the core was redone about twenty months after launch. If the claim is that MCP is clever, it isn't. But standards win through coordination, and novelty rarely decides which one becomes shared. The question is whether MCP became the point everyone converged on, and it clearly did. The closest precedent, the Language Server Protocol, is still maintained roughly ten years later, though its providers were local programs developers chose, while MCP's can be remote and sometimes hostile.
The stronger version of the objection is that models may not need a tool protocol at all. A coding agent with a command line can run any program, and an agent that operates a screen can use software with no machine interface. For local developer tools that's already true. But where a system is remote, requires login, and serves many people with different rights, typed schemas, a standard login flow and a single place to set policy are worth having.
My bet, and it's a hypothesis, is that MCP stays strongest exactly there: in front of companies' systems of record and the software-as-a-service products they rent, and matters less on the developer's laptop.
What to build once, and what to keep owning
For a company, the useful consequence is a division of labor.
Build once a server in front of each system of record that AI applications should reach, so your own agents and your vendors' assistants share one connector instead of each building its own.
Keep owning what the protocol won't:
- Permissions. The server should call the system on behalf of the signed-in person (delegated access), with the narrowest permissions that work, and the check must also hold in the system behind it (Data Access Is the Real Integration Project). Where your clients support it, the Enterprise-Managed Authorization extension lets your identity provider decide which servers employees can reach and revoke them in one place.
- Audit. The log you can trust is the one on your side: who called what, with which arguments, and what came back.
- Effect classes. Sort every tool into read, reversible write or irreversible effect, and set approval and retry rules for each class.
- A test set. Whether a model uses your tools well depends on your descriptions and on the model. A small evaluation set of real tasks catches regressions when either changes.
- A server policy. Treat third-party servers as software dependencies that can talk to your model: name an owner, pin versions, review description changes.
Expect to run two protocol revisions at once for a while, and pin the versions of the libraries you build on.
For software vendors, the lesson runs the other way. Once connectors are cheap, lacking one becomes a gap, and having one stops being an advantage. What differentiates is what your server exposes, which permissions it enforces, and what the data behind it is worth.
The plug is solved. Everything that matters about what flows through it is still yours.
Check yourself
Why did a rival like OpenAI adopt MCP so quickly?
Joining was cheap. Adopting the existing protocol borrowed the whole catalog overnight, while a separate format would have meant recruiting every system owner again.
Why does the wording of a tool description matter?
It is the paragraph the model reads to decide when to use the tool, and nothing in the standard checks whether it is any good. Vague descriptions make the model guess.
Why is MCP not a security policy?
It carries names, arguments and results but does not decide whether this user should run a tool or whether a server can be trusted. Tool poisoning shows why.
Notes, sources and method
For readers who want to check the dates, mechanisms and arguments behind Why MCP Spread. Specification pages were read on 11 October 2026 and re-read on 18 October 2026.
Key dates and numbers
| Statement in the article | Exact value | Source | Notes |
|---|---|---|---|
| Anthropic released MCP | 25 Nov 2024 | Anthropic launch post [1] | Launch included the specification, SDKs, local server support in Claude Desktop and open-source servers for Google Drive, Slack, GitHub, Git and Postgres (also Puppeteer). Early adopters named: Block and Apollo; developer tools Zed, Replit, Codeium, Sourcegraph. |
| OpenAI shipped support on 26 Mar 2025, the day Altman announced it; "four months" | 121 days after launch | TechCrunch, 26 Mar 2025 [16]; openai-agents-python release v0.0.7 ("MCP support"), 26 Mar 2025 | OpenAI's own announcement was not readable. |
| Microsoft within two months | Windows support announced 19 May 2025, 54 days after OpenAI's SDK support; OpenAI's Responses API added remote MCP servers on 20 May 2025 (55 days) | Microsoft Windows blog [20]; OpenAI API changelog [17] | |
| "A little over a year": Agentic AI Foundation | Announced 9 Dec 2025, 379 days after launch | Linux Foundation [13]; Anthropic [14] | Co-founders Anthropic, Block, OpenAI. Platinum members listed: AWS, Anthropic, Block, Bloomberg, Cloudflare, Google, Microsoft, OpenAI. More than 10,000 published servers (vendor-reported); clients named include Claude, Cursor, Microsoft Copilot, Gemini, VS Code and ChatGPT. Anthropic said governance "will remain unchanged". |
| Language Server Protocol | Announced 27 Jun 2016 by the Visual Studio Code team with Red Hat and Codenvy | VS Code blog [11] | MCP's 2024-11-05 specification "takes inspiration from" LSP; both use JSON-RPC, declared capabilities and a provider in a separate process. LSP's site lists 3.18 as the latest specification [12]. |
| 2 × 2 saves nothing; 5 × 20 is 100 against 25 | See Method | Computed | |
| Four backward-incompatible revisions in about 21 months | Revisions 2024-11-05, 2025-03-26, 2025-06-18, 2025-11-25, 2026-07-28; gaps 141, 84, 160 and 245 days; 630 days in all | Versioning page and changelogs [3][4] | A revision identifier is the date of the last backward-incompatible change, not necessarily the publication date. |
| Tool poisoning, April 2025 | Invariant Labs, 1 Apr 2025 [21] | Also rug pulls (description changed after approval) and shadowing (one server's description altering use of another's tool). Blog unreachable on 18 Oct 2026; mechanism re-checked in Invariant's companion repository. | |
| A2A | Joined the foundation 17 Aug 2026; described as the agent-to-agent layer, MCP the agent-to-tool layer | AAIF [15] | Not in the rewritten body. |
The timeline figure (a50-timeline) was dropped from the article in the 19 Oct 2026 rewrite; its thirteen dated events are the ones in this table and the revision list below.
Method
Connector arithmetic. For M applications and N systems, the saving M×N − (M+N) equals (M−1)(N−1) − 1. Checked for (4,5) 20 vs 9; (5,20) 100 vs 25; (10,100) 1,000 vs 110; (2,2) 4 vs 4; (3,3) 9 vs 6; (1,50) 50 vs 51 (with one application the protocol costs one extra piece). Real portfolios never fill the grid, so these are upper bounds.
Intervals. Day counts between stated dates; 21 months is 630 days divided by 30.44.
The invoice example is invented. The article shows a simplified tool definition; the full version used in the previous edition, checked against the 2026-07-28 schema, also had a title, per-property descriptions, a default limit of 10 and openWorldHint: false. The matching tools/call request carried _meta with the protocol version, client info and client capabilities, and the response had resultType: "complete", a text content item and isError: false. The JSON was checked for syntax but not run against a live server.
Mechanisms the article compresses
Three kinds of server offering, distinguished by who decides when each is used: tools (the model decides; functions it may call), resources (the application decides; data items identified by URI, such as a file or a schema), prompts (the user decides; templates such as a slash command).
Transports. With stdio, the host launches the server as a local subprocess and exchanges one JSON message per line. With Streamable HTTP, the server is a web service with one endpoint and each message is an HTTP POST. The launch design was local; remote servers arrived with the 2025 revisions.
What each revision changed.
- 2024-11-05. Stdio and an older HTTP-plus-SSE transport, stateful connections, tools, resources and prompts. The security section says MCP "cannot enforce these security principles at the protocol level".
- 2025-03-26. OAuth 2.1 authorization, Streamable HTTP replacing HTTP-plus-SSE, JSON-RPC batching, tool annotations. Made remote servers practical.
- 2025-06-18. Servers became OAuth resource servers, so a company's identity provider can issue tokens; clients bind tokens to their intended server; a security best practices page; structured output and elicitation. Batching removed.
- 2025-11-25. Client ID Metadata Documents for client registration, experimental long-running tasks, formal governance with working groups and SDK tiers.
- 2026-07-28. Stateless: no
initializehandshake orMcp-Session-Id; every request carries its protocol version and client capabilities; servers must answerserver/discover; method and tool-name headers so gateways can route without parsing bodies; server-initiated requests replaced by a reply-and-retry pattern; tasks moved to an extension; a twelve-month minimum deprecation window (ninety-day exception for expedited removals); Roots, Sampling, Logging, HTTP-plus-SSE and Dynamic Client Registration deprecated. A broken response stream loses the in-flight request, which the client re-issues with a new ID.
Authorization. Optional. For HTTP transports servers should follow the OAuth-based framework: the server is a resource server, the client discovers the authorization server from metadata, and tokens must be issued for that server. Token passthrough (accepting or forwarding tokens meant for other services) is forbidden. Stdio servers take credentials from the environment. The Enterprise-Managed Authorization extension lets an organization's identity provider decide which servers employees reach and revoke access centrally; it is opt-in and client support varies [9].
Implementation effort. The specification lists "extremely easy to build" as a design principle for servers. In the current revision a tools-only server answers server/discover, tools/list and tools/call (ping was removed); that reading is the collection's, not a stated requirement. A toy read-only server fits in an afternoon; a production server with per-user authorization, rate limits and audit does not.
Alternatives. Plain APIs and OpenAPI are written for programmers; MCP adds a model-facing layer (tool listing, model-oriented descriptions, uniform results and login) and many servers wrap REST APIs. For one documented API used by one application, a direct integration is simpler. Vendor function calling is how a model emits a call; MCP standardizes where definitions come from and how the call runs. OpenAI's Responses API accepts remote MCP servers as a tool type, acting as the client. OpenAI's API also lets developers import only selected tools to cut cost and latency [18].
Why it spread: the four explanations
| Explanation | What it predicts | What the record shows | Verdict |
|---|---|---|---|
| Anthropic's distribution | Early adoption inside Anthropic's user base; rivals hold out | Launch included Claude Desktop and reference servers; OpenAI joined 121 days later | Explains the first catalog, not why rivals joined |
| Timing of agent demand | Tool-using products drive adoption | Adopters are IDEs, coding tools and agent SDKs; the counterfactual can't be observed | Probably necessary, untestable as sole cause |
| The LSP precedent | Builders already understand the pitch and design | Specification cites LSP; LSP's audience was editor makers, not labs | Explains design and credibility, not the tipping |
| Network effects after OpenAI joined | Adoption accelerates once the largest rival is in | Microsoft at 54 days, OpenAI Responses API at 55, foundation at 379 days after launch | Best fit for the tipping point, confounded by growth already under way |
None of the evidence is experimental; each verdict is a judgment from sequence and timing. Public statements endorsing shared protocols prove little, since a company would make them either way. The cost-asymmetry argument for rival adoption is an argument from incentives, not a documented decision.
A rival account fits about as well: MCP won by being first and good enough, and the labs bought convergence rather than this design. The 2026 stateless rewrite is a weak test: adopters did not leave, and OpenAI's Agents SDK documentation describes probing servers with server/discover when the newer MCP SDK is installed and falling back to the old handshake [19]. That shows one SDK followed, not all adopters.
Caveats and open questions
- Security best practices page. As of 18 Oct 2026 the specification's page covers authorization, proxy and local-server risks and has no section on poisoned tool descriptions [7].
- Annotations warning. The schema says clients should never make tool-use decisions based on annotations from untrusted servers [8]; read from the
main-branch schema source. - Microsoft's Windows announcement paired MCP support with a registry, proxy, per-client-and-tool consent and signing requirements, and named supply-chain risk in registries [20]. VS Code warns that local servers can run arbitrary code [22]. OpenAI says it has not verified remote servers [18].
- Server counts. The 10,000-server figure is vendor-reported; no independent census of how many are maintained or safe was found.
- Governance. A foundation makes the project neutral on paper; whether decision-making broadens is something to watch.
- Money. None of the specification pages listed defines pricing, metering or payment.
- "Strongest for enterprise systems of record" is a hypothesis.
- Not verified. Google's own MCP adoption statements (the article makes no Google adoption date claim); OpenAI's own March 2025 post; publication dates of the 2025 revisions; whether tool poisoning remains exploitable in current clients.
- What would change this conclusion. A major client leaving or forking MCP; security incidents leading enterprises to ban third-party servers (MCP would survive as an internal protocol); screen and shell agents becoming reliable enough to make schemas redundant; the foundation stalling or splitting into vendor extensions. As of October 2026 none had happened in the sources checked.
Sources
- Anthropic. Introducing the Model Context Protocol. 25 Nov 2024. https://www.anthropic.com/news/model-context-protocol
- Model Context Protocol. Specification 2024-11-05, Overview. https://modelcontextprotocol.io/specification/2024-11-05/index
- Model Context Protocol. Key Changes for revisions 2025-03-26, 2025-06-18, 2025-11-25 and 2026-07-28. https://modelcontextprotocol.io/specification/2025-03-26/changelog (and the same path for each revision)
- Model Context Protocol. Versioning. https://modelcontextprotocol.io/specification/versioning
- Model Context Protocol. Architecture, Server features overview, Tools, Resources (2026-07-28). https://modelcontextprotocol.io/specification/2026-07-28/architecture
- Model Context Protocol. Base protocol, Streamable HTTP, stdio (2026-07-28). https://modelcontextprotocol.io/specification/2026-07-28/basic/index
- Model Context Protocol. Authorization and Security Best Practices (2026-07-28). https://modelcontextprotocol.io/specification/2026-07-28/basic/authorization
- Model Context Protocol. Schema source, 2026-07-28. https://raw.githubusercontent.com/modelcontextprotocol/modelcontextprotocol/main/schema/2026-07-28/schema.ts
- Model Context Protocol. Enterprise-Managed Authorization. https://modelcontextprotocol.io/extensions/auth/enterprise-managed-authorization
- Model Context Protocol. What is MCP? https://modelcontextprotocol.io/docs/getting-started/intro (the USB-C comparison)
- Visual Studio Code Team. Common language protocol. 27 Jun 2016. https://code.visualstudio.com/blogs/2016/06/27/common-language-protocol
- Microsoft. Language Server Protocol. https://microsoft.github.io/language-server-protocol/
- Linux Foundation. Linux Foundation Announces the Formation of the Agentic AI Foundation. 9 Dec 2025. https://www.linuxfoundation.org/press/linux-foundation-announces-the-formation-of-the-agentic-ai-foundation
- Anthropic. Donating the Model Context Protocol and establishing the Agentic AI Foundation. 9 Dec 2025. https://www.anthropic.com/news/donating-the-model-context-protocol-and-establishing-of-the-agentic-ai-foundation
- Agentic AI Foundation. A2A joins AAIF. 17 Aug 2026. https://aaif.io/blog/a2a-joins-aaif
- TechCrunch. OpenAI adopts rival Anthropic's standard for connecting AI models to data. 26 Mar 2025. https://techcrunch.com/2025/03/26/openai-adopts-rival-anthropics-standard-for-connecting-ai-models-to-data/ ; date confirmed by https://github.com/openai/openai-agents-python/releases (v0.0.7)
- OpenAI. API changelog. https://developers.openai.com/api/docs/changelog
- OpenAI. MCP and Connectors. https://developers.openai.com/api/docs/guides/tools-connectors-mcp
- OpenAI. Agents SDK, MCP. https://openai.github.io/openai-agents-python/mcp/
- Microsoft (David Weston). Securing the Model Context Protocol: Building a safer agentic future on Windows. 19 May 2025. https://blogs.windows.com/windowsexperience/2025/05/19/securing-the-model-context-protocol-building-a-safer-agentic-future-on-windows/
- Invariant Labs (Beurer-Kellner and Fischer). MCP Security Notification: Tool Poisoning Attacks. 1 Apr 2025. https://invariantlabs.ai/blog/mcp-security-notification-tool-poisoning-attacks ; companion repository https://github.com/invariantlabs-ai/mcp-injection-experiments
- Microsoft. Use MCP servers in VS Code. https://code.visualstudio.com/docs/copilot/customization/mcp-servers
Further reading in this collection: Moving Without Breaking, Who Should Build It, Reversible Work and Irreversible Effects, Build an Evaluation From Your Own Work.