MCP security vs traditional API security — what changes
MCP looks like a REST API to an infrastructure team. The security model is different: the client is a non-deterministic reasoning engine, the attack surface includes the tool descriptions, and the trust boundary is at the model, not the user.
When an infrastructure engineer first encounters an MCP server, it looks familiar. There is an HTTP endpoint. It accepts JSON. It has authentication. It has request logging. The mental model that forms is “another internal API” — and the security review that follows applies the standard API security checklist: TLS, auth tokens, rate limiting, input validation.
That checklist is not wrong. TLS matters. Authentication matters. Input validation matters. But it is incomplete by roughly half. The threat model for an MCP server is fundamentally different from the threat model for a REST API, and the difference does not come from the protocol — it comes from what is on the other end of the connection.
This article maps the differences for security reviewers who are familiar with API security and are reviewing an MCP deployment for the first time. It is part of the MCP security review cluster.
Same infrastructure, different threat model
An MCP server shares infrastructure characteristics with a REST API:
- It listens on a network port (HTTP/SSE transport) or a process socket (stdio).
- It accepts structured requests (JSON-RPC).
- It authenticates callers using tokens or certificates.
- It authorises operations based on the caller's identity.
- It accesses backend systems (databases, APIs, filesystems) to fulfil requests.
- It returns structured responses.
A traditional API security review covers all of these properties. But it was designed for a client that is a deterministic software application. The client makes requests based on code: specific conditions trigger specific API calls with specific parameters. The client cannot be persuaded to make different calls by modifying the API's documentation.
The client of an MCP server is an LLM-based agent. It decides which tools to call, and with what parameters, based on its reasoning over the task context. That reasoning is influenced by the tool descriptions, the resources injected into its context, and the instructions it has received. It can be persuaded, manipulated, and hijacked through these channels — and none of those attack vectors are present in a deterministic API client.
MCP vs REST API security — six dimensions
| Dimension | MCP | REST API |
|---|---|---|
| Auth model | Client auth (API key or mTLS) is standard. Per-user auth requires explicit design — not provided by the protocol. Most deployments implement client auth only. | Request-level auth (API key, OAuth Bearer token) identifying the calling user or service. Per-user authorization is the default expectation. |
| Trust boundary | Trust boundary is at the model's reasoning layer. Tool descriptions, tool results, and injected context all influence trust decisions inside the model — not at the protocol layer. | Trust boundary is at the API gateway or application layer. Auth is enforced before any application logic runs. Trust decisions are deterministic. |
| Tool scope | The set of tools the agent will invoke is not fully predictable — the model decides at runtime based on task context and tool descriptions. Excess tools are attack surface. | Endpoints are called by deterministic client code. The set of API calls is defined at design time in the application logic. |
| Injection surface | Tool descriptions and tool results are attack surfaces for manipulating model behaviour. Documentation is operational data; malicious descriptions are a direct attack. | Standard injection surfaces: SQL injection, XSS, command injection in request parameters. API documentation is not an attack surface. |
| Logging | Must capture tool invocation with parameters, the invoking identity, and the tool-result content (as context for behavioral analysis). Standard HTTP logs are insufficient. | HTTP access logs (path, method, status, latency) are the baseline. Application-level audit logs for sensitive operations. |
| Principal concern | Model reasoning manipulation — can an attacker change what the model does by modifying its context, tool descriptions, or tool results? | Broken access control — can an attacker access endpoints or data they are not authorised to reach? |
The client difference
The most important difference between MCP security and API security is the nature of the client. In traditional API security, the client is a deterministic system: given the same state and inputs, it makes the same API call. In MCP, the client is a probabilistic reasoning engine that synthesises context, applies learned patterns, and generates decisions that are not fully predictable from the inputs.
This difference has concrete security implications:
Attacker reach
An attacker trying to abuse a traditional API must gain the ability to make requests to the API — which typically means compromising the application, stealing credentials, or exploiting an authentication vulnerability. An attacker trying to abuse an MCP-connected system can target the model's reasoning instead: by modifying the tool descriptions, injecting content into the model's context through data sources the MCP server reads, or crafting user inputs that redirect the model's use of MCP tools. These attack paths do not require API-layer access.
Defense scope
Defending an API means defending the API's interface: the inputs it accepts, the authentication it requires, the responses it returns. Defending an MCP server means defending both the API-layer interface and the model's reasoning about that interface. The second layer does not exist in traditional API security.
Tool descriptions as attack surface
REST APIs have documentation — OpenAPI specs, README files, developer portals. Documentation describes what the API does. It is not part of the API's attack surface because no deterministic client executes behaviour based on documentation. Documentation can be inaccurate or misleading without creating a security vulnerability.
MCP tool descriptions are different. They are not documentation — they are operational data that directly influences the model's decision-making. A model reads a tool description to determine when to invoke the tool and how to structure the invocation. A malicious or compromised tool description is therefore a direct attack on the model's behaviour — not an information accuracy problem.
The practical implication: the content of every tool description is in scope for the security review in a way that has no equivalent in API security review. The reviewer must ask: does this description accurately represent the tool, and does it contain any content that could be used to manipulate the model's invocation decisions?
API security review validates that the API behaves correctly when called correctly. MCP security review must additionally validate that the model will call the API correctly given its description — and that the description cannot be modified to cause the model to call it incorrectly. The documentation layer has become a security layer.
Trust boundary location
In a traditional API deployment, the trust boundary is at the API gateway or application layer. The security model is: requests from authenticated, authorised callers are trusted; requests from others are rejected. The trust decision happens at the protocol layer, before any application logic executes.
In an MCP deployment, the trust boundary is at the model's reasoning layer — inside the model. The model must distinguish between instructions it should follow (from the system prompt and the task context), data it should process (from tool results and resources), and content it should treat as potentially malicious (injection attempts embedded in data sources). This is not a protocol-layer enforcement — it is a probabilistic reasoning task.
The consequence: an MCP deployment cannot achieve security through protocol-layer controls alone. The protocol-layer controls (authentication, TLS, input validation) are necessary but not sufficient. The model-layer trust decisions — how the system prompt frames authority, how tool results are represented to the model, how the model is instructed to handle conflicting instructions — are security-relevant design decisions that have no equivalent in traditional API security.
What traditional coverage misses
A traditional API security review of an MCP server will typically produce a coverage report that appears comprehensive. It will address: TLS configuration, authentication mechanism and enforcement, input schema validation, rate limiting, logging, and network exposure. These are all real and important controls.
What it will not address:
- Tool description content — whether the descriptions are accurate, minimal, and free of manipulation payloads.
- Manifest integrity — whether the tool manifest is served from an authenticated, version-controlled source and whether deviations from an approved baseline are detectable.
- Context injection risk from tool results— whether tool results are treated as untrusted data before being injected into the model's context, and whether the system prompt frames the trust boundary correctly.
- Per-user authorization at the MCP layer — whether the server enforces end-user access controls, or only client-level controls.
- Behavioral testing — whether the model, when connected to this server, behaves as intended under adversarial conditions.
What the MCP review adds
An MCP security review extends the traditional API security review with five additional review domains:
- Tool manifest review — every tool description reviewed for accuracy, minimality, and the absence of manipulation content. The approved manifest baseline documented and version-controlled.
- Context injection surface review — every data source that MCP tools access assessed for write access control and the potential for attacker-controlled content. System prompt framing of tool results reviewed.
- Authentication boundary review — per-user authentication and authorization assessed separately from client authentication.
- Behavioral testing — adversarial test cases that present the model with scenarios where tool poisoning, context injection, or goal hijacking would be attempted, with results documented.
- Supply chain review (for third-party servers) — source, manifest, permissions, and dependencies reviewed per the vetting process described in Vetting a third-party MCP server before you connect it.
The traditional API security review and the MCP-specific additions together constitute a complete security review of an MCP server deployment. Neither is sufficient without the other. For the structured checklist combining both, see An MCP server security review checklist.
Blog
Get new posts in your inbox
AI security review, OWASP Agentic Top 10, ISO 42001 evidence, and what AI Committees actually need. No cadence promises — we publish when there's something worth reading.
Run a complete MCP security review with Drel
Drel's AI security review covers both the traditional API security layer and the MCP-specific surfaces — tool manifest, context injection, authentication boundary, and behavioral testing — in a single structured assessment.
A note on scope: Drel reviews assessed systems against documented architecture, configuration and intent. It does not ingest live telemetry from production environments. Dispositions reflect the assessed system at the time of review and the re-assessment triggers that govern when the disposition must be revisited.