MCP Won. Here's What It Means for Your Architecture
In November 2024, Anthropic quietly dropped an open standard called the Model Context Protocol (MCP). It wasn’t flashy. The launch blog post was technical and understated. The dev community collectively shrugged and moved on.
By March 2025, OpenAI had adopted it. Google DeepMind followed. Microsoft shipped it on Azure Databricks. By summer 2025, it was the dominant protocol for AI-to-tool connectivity — faster adoption than OAuth, OpenAPI, or HTTP/1.1 ever achieved at comparable stages.
MCP won. The question is no longer “should I use it?” It’s “how do I restructure my architecture around it?”
Let me break it down.
The Problem It Solved (And Why It Was Ugly Before)
Before MCP, if you wanted to connect an AI agent to external tools and data sources, you had a simple but brutal math problem:
M APIs × N agents = chaos
Every combination required a custom connector. Every model vendor had their own function-calling spec. OpenAI had one format. Anthropic had another. When OpenAI launched “function calling” in 2023, it was helpful — but still proprietary. If you built for GPT-4, nothing worked with Claude. If you built for Claude, it didn’t work with Gemini.
You ended up with a hairball of bespoke integrations. Agent switches model? Rebuild the connectors. New tool added? Update every agent that might use it. It was the pre-USB world for AI.
MCP is USB. One standard plug.
The architecture shift looks like this:
Before:
Agent A → Custom connector → Tool 1
Agent A → Custom connector → Tool 2
Agent B → Custom connector → Tool 1 ← duplicate effort
Agent B → Custom connector → Tool 2 ← more duplicate effort
After:
Agent A ─┐
├→ MCP Client → MCP Server (Tool 1)
Agent B ─┘ → MCP Server (Tool 2)
Write the MCP server once. Any MCP-compatible agent can use it. Forever.
How MCP Actually Works
MCP is built on JSON-RPC 2.0 and takes heavy inspiration from the Language Server Protocol (LSP) — the same standard that powers IDE features like autocomplete and go-to-definition across every editor and language.
The architecture has three layers:
1. MCP Host
The AI application itself. Think Claude, Cursor, your custom agent. The host coordinates everything and manages one or more MCP clients.
2. MCP Client
Lives inside the host. Maintains a persistent connection to an MCP server and pulls context from it on demand.
3. MCP Server
A standalone program you write once. Exposes your data, APIs, and functionality through three primitives:
| Primitive | What it is | Example |
|---|---|---|
| Tools | Functions the agent can call | search_database, send_email, run_query |
| Resources | Structured data the agent can read | files, database records, API responses |
| Prompts | Reusable prompt templates | domain-specific instruction sets |
The elegance is in the separation: one MCP server, many possible clients. One agent, many possible servers.
┌──────────────────────────────────────────────┐
│ MCP Host (your agent) │
│ ┌─────────────┐ ┌─────────────────────┐ │
│ │ MCP Client │───▶│ MCP Server (DB) │ │
│ └─────────────┘ └─────────────────────┘ │
│ ┌─────────────┐ ┌─────────────────────┐ │
│ │ MCP Client │───▶│ MCP Server (Email) │ │
│ └─────────────┘ └─────────────────────┘ │
│ ┌─────────────┐ ┌─────────────────────┐ │
│ │ MCP Client │───▶│ MCP Server (GitHub)│ │
│ └─────────────┘ └─────────────────────┘ │
└──────────────────────────────────────────────┘
Why It Won So Fast
Comparable standards took years to reach this level of adoption:
- OAuth 2.0 → ~4 years to cross-vendor dominance
- OpenAPI/Swagger → ~5 years
- HTTP/1.1 → most of the 1990s
MCP did it in under a year. Why?
1. Timing. Every major company was scrambling to ship AI agents at the same moment. Nobody wanted to build the plumbing twice. MCP arrived exactly when the pain was loudest.
2. It was “good enough.” It shipped imperfect — which paradoxically helped. The controversy drove engagement, the community pushed improvements, and by the time it was polished, everyone was already on it.
3. Anthropic donated it immediately. In December 2025, MCP was handed to the Agentic AI Foundation (AAIF) under the Linux Foundation, co-founded by Anthropic, Block, and OpenAI. No single vendor owns it. That’s what killed the not-invented-here objections from competitors.
4. The LSP analogy resonated. Every senior developer understood LSP. “It’s LSP but for AI tools” is a one-sentence pitch that needs no slide deck.
What You Actually Need to Change
If you’re building anything with AI agents in 2026 and you’re not thinking about MCP, here’s where to start:
If you own tools/data your agents need access to → Build MCP servers
Stop wiring direct API calls into your agent code. Wrap your tools in MCP servers instead. Your database connector, your internal APIs, your file system access — if more than one agent will ever need it, it should be an MCP server.
A minimal Node.js MCP server looks like:
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
const server = new Server(
{ name: "my-db-server", version: "1.0.0" },
{ capabilities: { tools: {} } }
);
server.setRequestHandler(ListToolsRequestSchema, async () => ({
tools: [{
name: "query_users",
description: "Query the users table",
inputSchema: {
type: "object",
properties: { filter: { type: "string" } },
required: ["filter"]
}
}]
}));
server.setRequestHandler(CallToolRequestSchema, async (request) => {
const { filter } = request.params.arguments;
const results = await db.query(`SELECT * FROM users WHERE ${filter}`);
return { content: [{ type: "text", text: JSON.stringify(results) }] };
});
const transport = new StdioServerTransport();
await server.connect(transport);
If you’re building agents → Use MCP clients, not raw API calls
Don’t implement vendor-specific function calling. Use an MCP client that abstracts that away. Your agent stays portable across models.
If you’re on a team → Publish your MCP servers as shared infrastructure
Your auth MCP server, your logging MCP server, your internal knowledge base MCP server — these become shared infrastructure, not per-team DIY work. Think of them like internal npm packages: write once, publish, consume everywhere.
The Architectural Implication Nobody Is Talking About
Here’s what I think gets underestimated about MCP’s long-term impact: it decouples capability from model choice.
Some teams pick their AI model first, then build tools around it. You choose Claude, you build for Claude’s API. You choose GPT-5.4, you build for OpenAI’s function calling. Switching models means rebuilding.
With MCP fully adopted, the model becomes a runtime, not a platform. Your tools, context, and business logic live in MCP servers. The model is interchangeable. You can run the same agent with claude-opus-4-6 for one task, GPT-5.4-mini for another, and a local Ollama model for cost-sensitive work — all consuming the same MCP servers.
This is a fundamental shift from “AI as platform” to “AI as commodity runtime.” And it changes how you think about vendor lock-in.
The Bottom Line
MCP is not optional anymore. It’s the USB-C of AI integration: imperfect, slightly annoying to implement the first time, but the clear consensus standard that everyone converged on.
Your checklist for today:
- Identify the tools and data sources your agents need
- Start wrapping those in MCP servers instead of direct integrations
- Stop writing vendor-specific function-calling code
- Treat your MCP servers as first-class infrastructure
The teams that build clean MCP server layers now will be the ones that swap models freely, scale agent workflows cheaply, and adapt to whatever the next model generation brings.
The chaos tax was always optional. Now there’s no excuse for paying it.
Further reading: MCP official docs · Anthropic’s original announcement · Wikipedia: Model Context Protocol