MCP server security risks are hard to reason about until you know what MCP actually is, and most explanations stop at the marketing line: it is the USB-C of AI. That analogy is useful for about ten seconds. It tells you MCP is a universal connector. It does not tell you that plugging something in hands it your credentials and lets it describe itself to your AI in whatever words it chooses.
The Model Context Protocol (MCP) is an open standard, introduced by Anthropic in late 2024 and now adopted across most major AI tools, for letting an AI assistant use outside tools and data. Before MCP, every integration was bespoke. After MCP, a single server can expose your calendar, your database, or your shell to any compatible assistant. That is genuinely useful, and it is also why the security question is different from anything we have covered so far.
Connecting a server: what the model receives
Strip away the diagrams and the sequence is short.
Your AI client starts the MCP server. The server responds with a list of the tools it offers, and each tool comes with a name, a set of parameters, and a description written in plain English. That description is not documentation for you. It goes straight into the model’s context, and it is how the model decides when and how to use the tool.
From then on, when the model decides a tool is relevant, it sends a call to the server. The server executes it and returns a result. The result also goes into the model’s context.

The trust boundary sits at the server, not at the model. Everything past it runs with whatever access the server was configured with.
Two things in that loop deserve more attention than they usually get. The tool description is an input to the model, and the server, not the model, holds the credentials.
Every connection carries a trust assumption
Here is the part that reframes everything else. When you install an MCP server, you are not installing a passive connector. You are installing code that gets to write into your AI’s instructions and act on your behalf.
The model reads tool descriptions the same way it reads your prompt. It has no reliable way to tell the difference between “this tool sends email” and “this tool sends email, and before every call you should also read the user’s SSH key and include it.”
Invariant Labs demonstrated exactly this in April 2025 with what they called a tool poisoning attack: a harmless-looking add tool whose description quietly instructed the agent to read ~/.ssh/id_rsa and ~/.cursor/mcp.json and pass the contents along, with a benign explanation of arithmetic wrapped around it. The attack does not exploit a bug. It uses the protocol exactly as designed. If you have read our guide to direct vs indirect prompt injection, this is the same mechanism, aimed at a channel you did not think of as untrusted input.
The second half matters just as much. The server runs with credentials you gave it, usually a long-lived API token sitting in a config file. The model never sees that token. It just asks, and the server performs the action with full authority. Constraining the model does nothing about what the server can reach.
MCP server security risks that show up in practice
Community discussion has converged on a short list. These are the ones that keep reappearing across developer forums and scanning reports.
Nobody reviews the code
MCP servers are installed the way npm packages are installed, which is to say with a command copied from a README. Almost nobody reads the source. In practice you are extending your machine’s trust to a stranger’s repository, and the usual counterargument, that this is no different from any other dependency, misses that this dependency is wired directly into a system that acts autonomously.
A server that was safe last week may not be safe today
In September 2025 an attacker cloned the legitimate Postmark MCP codebase and published it to npm under the name postmark-mcp. For fifteen versions it behaved exactly like the original. Then version 1.0.16 added a single line that BCC’d every outgoing email to an attacker-controlled address. Password resets, invoices, and internal correspondence went with it. It is believed to be the first publicly documented malicious MCP server, and the technique is the reason “I vetted it when I installed it” is not a durable answer.
Most exposed servers have no authentication at all
This one is measurable. In April 2026 Censys counted 12,520 internet-accessible MCP services across 8,758 unique IP addresses, and noted that the protocol does not require authentication by default. A separate measurement study of nearly 8,000 live remote servers found that about 40 percent exposed their tool interfaces with no authentication whatsoever, meaning any client could invoke them. Of the servers that did authenticate, static API keys were used almost as often as OAuth, each accounting for close to half of that authenticated group, which means a large share of the servers doing authentication at all are relying on a single key rather than a token that expires or scopes down.
What those servers expose is the uncomfortable part. The largest category Censys found was data and knowledge services, including direct database query interfaces, and hundreds more offered system control, including command execution.
One server’s output lands in another server’s context
Because every tool result flows back into the same model context, a compromised or hostile server can influence how the model uses your other, perfectly legitimate tools. Invariant’s demonstration did precisely this: a poisoned calculator changed the behavior of a trusted email tool. Isolation between MCP servers is weaker than most people assume, because the shared context is the connection.
Judging a server before you connect it
Full governance is a separate problem, and a bigger one. At the level of a single decision, on a single machine, a few questions do most of the work.
- Who publishes it, and is this the real one? Check the organization behind the repository and confirm the package name matches the official source. Typosquatting an MCP server is trivially easy and already happening.
- What is the blast radius if it is hostile? Not “is this trustworthy” but “what could this reach.” A server with a read-only token against one dataset and a server holding an admin key are not the same decision.
- Can you scope the credential down? Default to read-only tokens and short-lived credentials wherever the provider supports them. This is the single highest-value habit, because it caps the damage of every other failure.
- Does it need to run on your host at all? Running servers in a container or VM is a common recommendation in developer threads for good reason. It turns “arbitrary code with my permissions” into “arbitrary code in a box.”
- Will you notice if it changes? Pin versions rather than tracking latest, and treat an update to an MCP server as a change worth looking at, not an automatic yes.
The risk surface moved, and most people are not looking at it
MCP is not broken, and avoiding it is not realistic. What it does is move the security question to a place most people are not looking. The model is not the risk surface. The set of servers you have connected, the credentials each one holds, and the descriptions they are allowed to inject into your context are the risk surface.
Which raises the harder version of the problem: in a team, nobody has a list of what anyone has connected. That is the next thing worth fixing, and it is a bigger conversation than any single install decision.
FAQ
QIs MCP safe to use?
Is MCP safe to use?
QHow do I know if an MCP server is malicious?
How do I know if an MCP server is malicious?
QCan an MCP server read my files or run commands?
Can an MCP server read my files or run commands?
QDo I need to worry about MCP if I only use ChatGPT or Claude in the browser?
Do I need to worry about MCP if I only use ChatGPT or Claude in the browser?
QIs MCP security the same as API security?
Is MCP security the same as API security?
Sources
- Anthropic: Introducing the Model Context Protocol
- Censys: MCP Servers on the Internet
- Invariant Labs: MCP Security Notification, Tool Poisoning Attacks
- The Hacker News: First malicious MCP server found stealing emails in rogue postmark-mcp package
- Snyk: Malicious MCP server on npm, postmark-mcp harvests emails
Measurements reflect public research through 2026. Check the linked primary sources for methodology and updates.