Skip to main content
AI & Technology

What Is MCP? The Model Context Protocol, Explained Properly

MCP is the USB-C of AI tooling — one standard so every app can talk to every tool. Here's what it actually defines, why it spread so fast, and the security gap that came with it.

15 min read
Share:
Illustration of the Model Context Protocol: an AI model chip on the left connects through a secure link into a large glowing central hub labelled MCP, which fans out on the right to knowledge bases, documents, databases, and tools and APIs, over a dark purple-to-teal circuit and network background
Credit: PrimusSource (original illustration)

In 1956 a trucking executive called Malcolm McLean loaded fifty-eight identical steel boxes onto a converted tanker. The boxes weren't the innovation. The dimensions were. Once a container was the same size everywhere, a ship, a crane, a train and a lorry no longer needed to know anything about each other — only about the box. Global shipping costs collapsed, and they collapsed because of an agreement, not a technology.

The Model Context Protocol is that agreement, for AI tools. Before it, every AI application that wanted to reach your GitHub, your database or your calendar had to write a bespoke connector for each one — and every tool that wanted to be reachable had to be integrated separately by every application. MCP replaces that with a published spec: build one server for your tool, and every compliant client can use it.

It went from an Anthropic release in November 2024 to a Linux Foundation project with around 10,000 active servers in about a year. Here is what it actually defines, why it spread so quickly, and the part most coverage skips — the security problem that standardising the connection created.

The Problem Was Combinatorics, Not Capability

Models could already use tools before MCP. What they couldn't do was use your tools without somebody writing glue code first.

Two-panel diagram comparing integration approaches. The left panel, in red, shows four AI applications each connected to four tools by sixteen individual lines, labelled four apps times four tools equals sixteen bespoke connectors, every pair written, tested and maintained separately. The right panel, in green, shows the same four applications and four tools each connecting once to a central MCP bar, labelled four clients plus four servers equals eight implementations, each written once against a published spec. A caption explains that N apps and M tools need N times M connectors without a standard and N plus M with one
Without a standard the work grows as N × M. With one it grows as N + M. That gap is the entire argument.

The arithmetic is the whole story. With four applications and four tools, bespoke integration means sixteen connectors, each written, tested and maintained by someone. Add a fifth application and you owe four more. With a shared protocol, four clients and four servers is eight pieces of work, and a fifth application costs one.

Scale that up and it stops being an inconvenience and becomes a wall. Against roughly ten thousand MCP servers now in the wild, a new AI application without the standard would be facing ten thousand integrations to reach parity. It would simply never get built.

What the Protocol Actually Defines

MCP has a deliberately narrow scope, and the narrowness is a feature. It standardises the exchange of context and nothing else — it takes no position on which model you use, how you prompt it, or how your agent loop is structured.

Diagram of MCP's architecture. On the left, an MCP host — the AI application — contains three MCP clients, each holding one dedicated connection, communicating over JSON-RPC 2.0. On the right, MCP servers can expose three things: tools, which are executable functions the model can invoke; resources, which are data the application can read for context; and prompts, which are reusable templates for structuring a task. Below, two transports are listed: stdio for a local process on your own machine, and Streamable HTTP for a remote server with OAuth recommended. A second panel notes elicitation, where the server requests extra input or confirmation from the user
Three things a server can offer, two ways to connect, and one thing a server can ask back. Everything else is left to you.

Three roles. The host is the AI application you actually use — a chat app, an IDE, an agent. The host creates one client per connection, and each client maintains a dedicated link to one server. A server is simply a program that provides context; it can run locally on your laptop or remotely on a vendor's infrastructure.

Three things a server can expose. This is the part worth memorising, because the names get used loosely:

  • Tools — executable functions the model can invoke. File operations, API calls, database queries. This is the primitive everyone means when they say "MCP."
  • Resources — data sources the application can read for context. A file's contents, a database schema, an API response. Resources are read, not run.
  • Prompts — reusable templates for structuring an interaction, such as a system prompt or a set of few-shot examples.

The distinction between tools and resources matters more than it looks. A tool does something and may have side effects; a resource just supplies information. If you have built retrieval-augmented generation before, resources are the familiar half — a standard way for an application to pull in context — while tools are the half that can change the world.

One thing a server can ask of you. Elicitation lets a server request additional information from the user mid-task, or ask for confirmation before doing something consequential. Two older client-side features, sampling and logging, were deprecated in the 2026-07-28 version of the specification.

Two transports. stdio connects to a server running as a local process on the same machine. Streamable HTTP connects to a remote server over HTTP, and the specification recommends OAuth for obtaining tokens. Underneath both sits JSON-RPC 2.0, and — like the model APIs it serves — the protocol is stateless: every request carries the version and capability information needed to process it on its own.

How It Became a Standard Rather Than a Product

A protocol released by one AI lab has an obvious credibility problem: why would competitors build on a rival's spec?

MCP resolved it by leaving. In December 2025 Anthropic donated the protocol to the Agentic AI Foundation, a directed fund under the Linux Foundation, co-founded with Block and OpenAI and supported by Google, Microsoft, AWS, Cloudflare and Bloomberg. MCP joined Block's goose and OpenAI's AGENTS.md as founding projects.

The adoption figures reported at the time of the donation explain why the other labs went along with it rather than competing:

SignalReported at donation (Dec 2025)
Monthly SDK downloads~97 million
Active servers~10,000
First-class client supportChatGPT, Claude, Cursor, Gemini, Microsoft Copilot, VS Code

Once a standard has that much gravity, the competitive move is to adopt it and differentiate elsewhere. This is the ordinary life cycle of successful infrastructure standards, and it is the strongest available evidence that MCP is not a passing vendor fashion.

What MCP Deliberately Does Not Do

Almost every misunderstanding about MCP comes from expecting it to solve a problem it explicitly declines to touch.

It is not an agent framework. It gives an agent a standard way to reach tools; it does not run the agent loop, decide when to call something, or manage your context window. Those remain entirely your problem — and they are covered across our AI agents topic hub.

It is not a model feature. Any model capable of tool use can be driven against MCP servers, and swapping models changes nothing about your servers.

It is not an authorisation system. The protocol carries authentication, but deciding which user may invoke which tool is left to you, and — as the security section below argues — that is exactly where the hard work sits.

It is not a guarantee of quality. Ten thousand servers means ten thousand codebases of wildly varying provenance, review and intent.

The Security Gap Standardisation Created

Here is the part that deserves more attention than it usually gets. Making every tool reachable through one interface also made every tool reachable through one interface for attackers.

The specific attack class has a name — tool poisoning — and OWASP now documents it as a form of indirect prompt injection. The chain runs: an attacker publishes a server whose tools look ordinary, gets an agent to connect, and when the agent calls one, the response mixes genuine data with embedded instructions. The model reads the whole response as trusted context and acts on it.

The mechanism is subtler than the usual "malicious tool description" framing, and OWASP puts its finger on exactly why:

Diagram contrasting two paths into a model's context. The upper green path shows the tool description: the server lists its tools, you review them once, and they are loaded into context — labelled one review point. The lower red path shows the tool response: the tool returns data, it goes straight into context, and the model acts on it — labelled every single call. A caption quotes OWASP saying tool descriptions are reviewed once when the agent first connects to a server, while tool responses go straight into the LLM context with no equivalent check, describing this as an unguarded runtime channel
The review happens once, at connection. The data arrives on every call, unreviewed. Auditing a server's tool list is not the same as auditing what its tools return.

In OWASP's words: "Tool descriptions are reviewed once, when the agent first connects to a server. Tool responses go straight into the LLM context with no equivalent check." That asymmetry — a one-time inspection guarding a channel that carries fresh untrusted text on every call — is what they call an unguarded runtime channel.

The practical consequence is uncomfortable: vetting a server at install time does not protect you. A server that behaved perfectly during review can start returning poisoned responses at any point afterwards, and nothing in the protocol will notice.

Nor is this theoretical. A 2025 large-scale analysis of the MCP ecosystem catalogued 370 publicly available servers exposing 1,062 tools with functionality relevant to this class of attack. OWASP's recommended defences are worth stating plainly, because they are all things you implement rather than things the protocol gives you:

  • Constrain tool output to a fixed schema rather than accepting free text, so there is nowhere for prose instructions to hide.
  • Isolate privileged tools in separate contexts from ones that read untrusted data.
  • Enforce access controls at the tool execution layer, not in the prompt.
  • Maintain an allowlist of approved servers.
  • Require explicit user confirmation before sensitive operations.

If your organisation is thinking about MCP seriously, this belongs in the same conversation as the rest of your security posture rather than being treated as a developer-tooling detail.

Four Things That Trip People Up in Practice

MCP credentials usually aren't your API key. Hosted MCP servers typically expect an OAuth bearer token, not the service's native integration token. A Notion integration token that authenticates perfectly against Notion's REST API will not work as an MCP credential — they are different auth systems, and the resulting error messages rarely say so.

Declaring a server isn't the same as enabling its tools. In Anthropic's implementation, listing an MCP server and granting access to its tools are two separate parts of the request; supplying only the first is rejected as a validation error. It is a small thing that costs people an afternoon.

Restricted egress breaks MCP silently. If your environment denies outbound network access by default, the MCP server's domain has to be explicitly permitted. Otherwise the connection simply fails and the tools quietly don't work, with no obvious signal that networking is the cause.

Big tool outputs get truncated. A tool that returns a very large payload will typically not be handed to the model whole. Anthropic's platform offloads responses beyond roughly 100,000 characters to a file and gives the model a preview plus a path. Design tools to return high-signal results rather than everything they know.

Common Misconceptions

  • "MCP is an Anthropic product." It was created there, and it now belongs to a Linux Foundation project co-founded with OpenAI and Block. Adopting it does not commit you to any one vendor.
  • "MCP makes models better at using tools." It makes tools reachable. Whether the model chooses well still depends on the tool's description and your prompting.
  • "An MCP server is a server." It is any program exposing the protocol — often a local process on your own laptop, communicating over stdio with no network involved at all.
  • "If I only install trusted servers, I'm safe." Trust established at install time says nothing about what a tool returns next week. The review point and the risk point are not the same moment.
  • "MCP replaces RAG." It standardises how an application reaches a data source. What you do with the retrieved text — chunking, ranking, grounding — is unchanged.

The Bottom Line

MCP is the boring, valuable kind of infrastructure: an agreement about interfaces that lets independently built things work together without knowing about each other. It defines three things a server can offer, two ways to connect, and one thing a server can ask of a user — and then stops, leaving the model, the loop and the policy to you.

That restraint is why it spread. A protocol that had also tried to dictate agent design would have been a competitor to every framework rather than a substrate underneath them.

The honest caveat is that a universal connector is a universal connector in both directions. The security work MCP requires is not protocol work — it is schema constraints, execution-layer access control, server allowlists and confirmation gates, all of which you build yourself. The standard solved the integration problem completely and the trust problem not at all, and it is worth being clear-eyed about which of those you are getting.

Frequently Asked Questions

What does MCP actually stand for, and what is it in one sentence?

Model Context Protocol. It is an open specification for how an AI application connects to external tools and data sources, so that any compliant application can use any compliant server without custom integration work. Think of it as a plug standard: the point isn't the plug, it's that everyone agreed on the same shape, so a tool built once works everywhere instead of needing a bespoke adapter per app.

Is MCP controlled by Anthropic?

Not any more. Anthropic created it and released it in November 2024, then donated it in December 2025 to the Agentic AI Foundation, a directed fund under the Linux Foundation co-founded with Block and OpenAI, with support from Google, Microsoft, AWS, Cloudflare and Bloomberg. It sits alongside Block's goose and OpenAI's AGENTS.md as a founding project of that foundation.

What's the difference between a tool, a resource and a prompt?

A tool is an executable function the model can invoke, and it may have side effects — sending an email, writing a file, querying a database. A resource is data the application reads for context, such as file contents or a database schema; it is fetched, not run. A prompt is a reusable template for structuring an interaction. The safety-relevant line is between tools, which act, and resources, which only inform.

Do I need MCP to build an AI agent?

No. You can define tools directly in your own code and never touch the protocol, which is how most agents worked before 2024 and how plenty still work. MCP earns its keep when you want to reach tools you didn't build, or expose your own tool to applications you don't control. For a single agent with three in-house tools it is overhead you don't need.

Is MCP secure?

The transport is conventional and can use OAuth, but the harder problem is what comes back through it. OWASP documents tool poisoning, in which a server's responses carry hidden instructions that the model treats as trusted context. The structural issue is that tool descriptions are reviewed once at connection while responses arrive unchecked on every call. Defences — fixed output schemas, execution-layer access control, server allowlists, confirmation gates — are yours to implement.

Can I write my own MCP server?

Yes, and it is the normal way to expose an internal system. SDKs exist for the major languages, and a server can be a small local program speaking over stdio rather than anything network-facing. The design effort goes into the tool descriptions and the output shape rather than the protocol plumbing, because those determine whether a model picks the right tool and whether its response is safe to consume.

Does using MCP lock me into a particular model or vendor?

No, and that is much of the point. The protocol says nothing about which model runs behind the client, so servers you write keep working if you switch models or applications. The lock-in risk that remains is ordinary operational dependency on specific third-party servers — the same exposure you take on with any external API.

Sources

AI AgentsArtificial Intelligence & LLMs#MCP#AI agents#agentic AI#artificial intelligence#tool use#open standards
Share:
White humanoid robot representing autonomous AI agents

AI & TechnologyGuide

AI Agents Explained: A Practical Beginner's Guide

What are AI agents? A plain-English guide to how autonomous AI works, how agents differ from chatbots, real use cases, the risks, and how to start using them.

May 10, 202612 min