All glossary terms
M Protocol Security

Model Context Protocol (MCP)

MCP is how agents connect to tools, and it won because it turned an integration problem into a single interface. It also standardised the attack surface. A tool description is text the model reads as instruction, which makes every connection a trust decision.

Definition

The Model Context Protocol (MCP) is an open standard for connecting AI applications to external tools and data through one client-server interface. It defines three primitives: tools the model can call, resources it can read, and prompt templates it can use. Anthropic released it in November 2024 and it now sits under Linux Foundation governance.

What is the Model Context Protocol?

The Model Context Protocol is a shared set of rules that lets an AI app connect to outside tools and information, much like a standard plug that fits any socket. The AI app contains a small connector, and that connector links up to separate helper programs, each of which offers three kinds of abilities the AI can use. The messages travel in a plain, widely understood format over everyday channels, which is a big reason so many people adopted it so quickly.

The three primitives are worth learning properly, because they carry different risks and get secured differently.

The three MCP primitives, what each does, and the control each requires
Primitive What it is What it needs
Tools Executable functions the model can call to take an action: run a query, create a ticket, send a message Tight permissions and explicit rules on when they may run. This is where actions happen
Resources Data the model can read. Documents, records, files exposed as addressable content Access control and validation, since resources are both a leakage path and a poisoning path
Prompts Predefined templates with parameters supplied at runtime Protection from modification, because they shape behaviour directly

Two clarifications that save confusion. MCP servers are generally thin adapters over existing APIs rather than new services: the API still does the work, and MCP standardises how an agent finds and calls it. And MCP does not replace function calling, it builds on top of it, since the model still uses function-call mechanics underneath.

Where this sits relative to retrieval. Retrieval-augmented generation makes a model more knowledgeable: it fetches information into the prompt. MCP makes a model more capable, because resources let it read and tools let it act through the same interface. That single difference, read plus write rather than read alone, is what turns a well-informed assistant into something that needs governing. See agentic RAG for the retrieval side.

What problem does MCP solve?

Combinatorial integration work. Without a shared protocol, connecting several AI applications to several tools needs a bespoke integration for every pairing. MCP reduces that to one integration per tool, reusable by any MCP-compatible application, which is the entire reason it won.

The arithmetic is the argument, and it is the same argument that carried USB and HTTP.

Two panels. On the left, four AI applications each wired individually to five tools, producing twenty bespoke integrations, with a note that every new tool multiplies the work. On the right, the same four applications and five tools connected through a single MCP interface, producing nine integrations, with a note that each tool is built once and reused by any compatible application.

The consequence for a buyer is less about engineering effort than about lock-in. When every platform speaks the same tool protocol, the tools you build stop being tied to the framework you built them with. That shifts where switching costs live, and it is covered at agent frameworks: convergence on MCP moved the lock-in from the tool layer to state, memory and telemetry.

It also explains the adoption curve. A protocol that reduces work and reduces lock-in simultaneously gets adopted by vendors who normally resist standards, which is why the major agent platforms integrated it inside a year rather than after the usual standards fight.

Who governs MCP, and what has changed?

Anthropic released it in November 2024 and stewardship now sits with the Linux Foundation, through the Agentic AI Foundation, with Microsoft among the platinum members. The specification is still moving, and one recent change is not fully backward compatible with servers built earlier.

The governance transfer matters for the same reason it mattered for the Agent-to-Agent protocol: a standard controlled by one vendor is a proposal, and a standard held by a foundation is infrastructure.

Three changes are worth knowing if you are building rather than reading.

  • March 2025: bespoke auth replaced by OAuth 2.1. Early implementations were doing token passthrough, which is dangerous enough that the specification moved rather than patched.
  • June 2025: MCP servers classified as OAuth Resource Servers, with clients required to implement Resource Indicators under RFC 8707. That specifically stops a malicious server obtaining a token intended for a different server. Production remote connections should enforce OAuth 2.1 with proof key for code exchange.
  • The 2026-07-28 specification update is not fully backward compatible with earlier servers. This one is recent enough that a lot of published guidance predates it. If you have servers built against the older stateful specification, you need a migration plan rather than an upgrade.

An official registry now exists as well, which matters because several documented incidents involved malicious servers distributed through unofficial registries. Where you get a server from is part of your threat model.

Why is every MCP connection a trust decision?

It is risky because a tool's description is writing that the AI reads, and anything the AI reads can steer what it does. So, any helper program you connect can shape your AI's behaviour just through the way it describes itself. That is how the system is meant to work, not a hole someone sneaks through. It is not a flaw or bug in the MCP; it is simply what it means to connect to someone else's tool.

This is the part of the subject that vendor material treats briefly and security research does not.

A third-party MCP server's tool metadata flows into the model's context alongside the user's request, and both are read as instruction-shaped text. A panel contrasts the old trust model, where you audited a library you imported at build time, with the MCP model, where you connect at runtime to a server whose descriptions can change after approval. Three attack labels are marked: tool poisoning in the metadata, tool shadowing where a legitimate-looking tool replaces a trusted one, and the rug pull where a server changes after you approved it.

Tool poisoning

Research introduced the term for a specific manifestation of prompt injection in MCP contexts: malicious instructions embedded in tool metadata rather than in user input. A compromised or hostile server crafts a tool description that manipulates the model, for instance instructing it to forward sensitive data to an endpoint the attacker controls. The user sees a tool with a plausible name. The model sees the full description.

The measured position is not reassuring. One study built a test suite against 45 live MCP servers exposing 353 authentic tools, generating over 1,300 malicious cases across ten risk categories, and evaluated twenty agents. Attack success rates reached as high as roughly 73%, and the best refusal rate observed was under 3%. Separate threat modelling across six MCP components identified more than fifty threats and found client-side security inadequate in most implementations tested, with some reaching 100% success.

The same work notes that well-built clients do defend successfully, so this is an implementation gap rather than an unsolvable property. But it means the client you use is a security decision, not a preference.

The trust model moved from build time to runtime

This is the shift worth internalising. With a framework, you imported a library and could audit the code you shipped. With MCP you connect to a server, possibly one you did not write, whose descriptions enter your model's context, and which can change after you approved it. Documented incidents through late 2025 included poisoned editor extensions, a malicious package update reaching millions of installs, and malicious MCP servers on unofficial registries.

Two further pointers. A critical remote code execution vulnerability was assigned against Anthropic's own MCP Inspector tooling, which is a useful reminder that the tooling around the protocol is also attack surface. And in May 2026 the United States National Security Agency published a cybersecurity information sheet specifically on MCP security, alongside guidance from the Australian Cyber Security Centre on careful adoption of agentic AI services. When signals intelligence agencies publish protocol-specific guidance, the risk has stopped being theoretical.

The working assumption security researchers recommend: treat every MCP server as hostile until proven otherwise. That sounds severe until you notice it is how you already treat any third-party API that returns data into a system with permissions. The difference is that an MCP server returns data into a component that acts on text, which is why the usual input validation does not apply. The delivery mechanism is covered at prompt injection, and the structural point stands: model-layer defences reduce this and do not eliminate it.

What does MCP not do?

Three things people routinely assume it covers and it does not. It makes no decision about which agent handles which task, it carries no governance or policy across the connection, and it authenticates the caller without ever establishing whose authority is actually being exercised.

Each gap is deliberate and each belongs to a different layer.

  • It is not the agent-to-agent layer. MCP connects an agent downward to tools; delegating work to another agent is a different problem with a different standard. See the Agent-to-Agent protocol, and agent interoperability for how the layers stack.
  • It does not orchestrate. Nothing in MCP decides sequence, handles partial failure, or reconciles conflicting results. See multi-agent orchestration.
  • It authenticates the connection, not the principal. OAuth 2.1 with Resource Indicators establishes that this client may call this server. It does not establish which human the agent is acting for, which is the attribution problem described at agent identity, including why effective permissions must be the intersection of user and agent rather than the union.
  • It carries no policy. Risk classification, approval requirements and audit obligations do not travel across an MCP connection. They stay with you.

None of this is criticism. A protocol that tried to solve orchestration and governance as well as transport would not have been adopted. It does mean the surrounding apparatus is your work, and the cost of an MCP integration sits there rather than in the protocol.

How should you adopt MCP?

Layered, and with the assumption that any single control will fail. Security research on MCP converges on roughly five layers, with the observation that each layer approximately halves the blast radius and that production deployments want at least three of them.

Ordered so the cheapest and most effective come first.

  1. Maintain an approved server list

    Agents connect only to servers on it. This single control eliminates the malicious-registry class of incident outright, and it is a process decision rather than an engineering one. Pin versions, because a server that was safe when approved can change.

  2. Isolate execution

    Run servers in containers with no more network reach than the tool genuinely needs. Egress allowlisting matters more than it sounds: most exfiltration requires an outbound path, and removing the path removes the outcome regardless of whether the injection succeeded.

  3. Enforce OAuth 2.1 with Resource Indicators

    For any remote server, with proof key for code exchange and least-privilege scopes. Resource Indicators specifically prevent one server obtaining a token meant for another, which is the failure the specification changed to address.

  4. Inspect tool metadata, not just tool behaviour

    Static analysis of tool descriptions before a server is approved, and again when it changes. Since the attack lives in the metadata, a review that only tests what the tool does will miss it entirely.

  5. Log every tool call, with arguments

    You cannot detect a poisoned tool from an outcome alone. What you need is the call, the arguments passed, and what came back, per step, which is the observability requirement.

  6. Keep a human on the irreversible

    The layer that holds when the others miss. Approval gates on anything you cannot undo, and reversibility designed in where you can. Architecture survives a hijack in a way that model-layer defences do not.

One planning note that catches teams out. Internal servers are not exempt. An internal MCP server still touches real data and still gets chained into workflows nobody anticipated when it was written, so skipping the review because it is internal reproduces the external risk inside your perimeter.

Frequently asked questions about MCP

If your question is not here, our team will answer it directly.


Talk to a Specialist →
What is the Model Context Protocol?

One interface where there used to be many. Rather than writing a bespoke connector per tool per application, an application speaks MCP and any MCP server becomes available to it, exposing functions it can invoke, data it can read, and templates it can reuse. Because the wire format is plain JSON-RPC over stdio or HTTP, your existing gateways and network controls still apply to it.

What are the three MCP primitives?

Tools, resources and prompts. Tools are executable functions that take actions, such as running a query or creating a ticket, and they need tight permissions and explicit rules on when they may run. Resources are data the model can read, and they need access control and validation since they are both a leakage path and a poisoning path. Prompts are predefined templates with runtime parameters, and they need protection from modification because they shape behaviour directly.

What problem does MCP solve?

It removes work that grows multiplicatively. Wire four applications to five tools by hand and you owe twenty connectors, with every added tool costing you one per application. MCP reduces that to one integration per tool, reusable by any compatible application. The same arithmetic carried USB and HTTP, and it also reduces lock-in, which is why vendors who normally resist standards adopted this one inside a year.

Who owns MCP now?

The Linux Foundation, through the Agentic AI Foundation, with Microsoft among the platinum members. Anthropic released the protocol in November 2024 and subsequently transferred stewardship. That matters for the same reason it mattered for the Agent-to-Agent protocol: a standard controlled by a single vendor is a proposal, while a standard held by a foundation is infrastructure. Expect the specification to keep evolving under that governance.

Is the MCP specification stable?

Mostly, with one important exception. The 2026-07-28 specification update is not fully backward compatible with earlier servers, which means servers built against the older stateful specification need a migration plan rather than a simple upgrade. That change is recent enough that a good deal of published guidance predates it. Auth has also moved twice: to OAuth 2.1 in March 2025, then to servers as OAuth Resource Servers with Resource Indicators in June 2025.

What is tool poisoning?

Prompt injection delivered through tool metadata rather than user input. A hostile or compromised MCP server writes a tool description containing instructions to the model, for example telling it to forward sensitive data to an attacker-controlled endpoint. The user sees a tool with a plausible name; the model sees the whole description. It works because a description is not inert metadata to a language model. It is prose in the context window, indistinguishable in kind from a command.

How serious are MCP security risks?

Measured rather than theoretical. One study tested 45 live MCP servers exposing 353 real tools with over 1,300 malicious cases across ten risk categories against twenty agents, and observed attack success rates as high as roughly 73% with the best refusal rate under 3%. Separate threat modelling across six MCP components identified more than fifty threats and found client-side security inadequate in most implementations tested. Well-built clients did defend successfully, so it is an implementation gap.

Why did the MCP auth model change?

Because early implementations were doing token passthrough, which is dangerous enough that the specification moved rather than patched. March 2025 replaced the bespoke scheme with OAuth 2.1. June 2025 went further, classifying MCP servers as OAuth Resource Servers and requiring clients to implement Resource Indicators under RFC 8707, which specifically prevents a malicious server obtaining a token intended for a different server. Production remote connections should enforce OAuth 2.1 with proof key for code exchange.

How do you secure an MCP deployment?

In layers, on the assumption that any single control fails. Security research converges on roughly five: an approved-server list with pinned versions, container isolation with egress allowlisting, OAuth 2.1 with Resource Indicators and least-privilege scopes, static inspection of tool metadata rather than only tool behaviour, and per-step logging of every call with its arguments. Each layer roughly halves blast radius, and production deployments want at least three. Keep a human on anything irreversible.

Are internal MCP servers safer?

Not enough to skip the review, and this is a common and expensive assumption. An internal server still touches real data and still gets chained into agentic workflows nobody anticipated when it was written. Treating it as exempt reproduces the external risk inside your perimeter, with the added problem that nobody is watching for it there. Apply the same approval, scoping and metadata inspection you would apply to a third-party server.

What is the difference between MCP and A2A?

Direction and what each abstracts. MCP connects an agent downward to tools and data; the Agent-to-Agent protocol connects agents sideways to each other. The deeper difference is that a tool called over MCP is a function, so the calling agent's own trace records the whole exchange, whereas an agent delegated to over A2A is another decision-maker returning a conclusion rather than its reasoning. They sit at different layers and production systems use both.

Does MCP replace function calling or APIs?

Neither. MCP builds on top of function calling rather than replacing it, since the model still uses function-call mechanics underneath. And MCP servers are generally thin adapters over existing APIs: the API layer still does the underlying work, while MCP standardises how an agent discovers and invokes it. So this is an interoperability layer rather than a new runtime, which is also why adopting it is usually less work than teams expect.

Which servers may your agents reach?
An approved server list is only as good as its enforcement

SERAA Cortex scopes tools and credentials per agent, holds an owner against every registered agent, and records each model and tool call with its arguments, so a poisoned tool description is something you can find in a trace rather than infer from an outcome.