Blog ·

The OWASP MCP Top 10, explained in plain English

The OWASP MCP Top 10 lists the ten biggest security risks in MCP servers and AI agents. Here is each one in plain English, with a real example and a fix.

The OWASP MCP Top 10 is a list of the ten most serious security risks in systems built on the Model Context Protocol, the standard AI agents use to connect to tools and data. In order, they are: token mismanagement and secret exposure, privilege escalation via scope creep, tool poisoning, supply chain attacks, command injection, prompt injection through context, weak authentication and authorization, missing audit logs, shadow MCP servers, and context over-sharing. The list is still a beta, so it can change. Below, each risk is explained in plain English with a real case or a concrete fix.

What the OWASP MCP Top 10 is, and what beta means

OWASP, the nonprofit behind the well-known web application Top 10, started the MCP project to describe the risks specific to agents and their servers. Its project page lists the 2025 edition as being in phase 3, beta release and pilot testing, with feedback still being collected. The GitHub overview calls it a living document that will evolve.

That matters in practice. Even the names move: the OWASP project page calls MCP06 "Prompt Injection via Contextual Payloads", while the overview on GitHub calls it "Intent Flow Subversion". Treat the IDs as a shared vocabulary for your team and check the current wording before you put an item in a policy or a report.

The list is written for the people who build and approve agent setups: security engineers, platform teams and the developers who add servers to their tools. It does not rank the items by how often they happen. Several of them overlap in real attacks, so a single incident often touches three or four entries at once, as the cases below show.

Secrets and permissions: MCP01 and MCP02

MCP01: Token mismanagement and secret exposure

Agents need keys to reach other systems, and those keys end up in the wrong places: typed into config files, kept in long-lived sessions, or written to logs. OWASP's examples include an attacker asking an agent to repeat credentials from an earlier session, and someone reading tokens out of tool-call logs. VS Code's own documentation says a personal configuration file is not a secret store. The fix is to keep secrets in a vault or the client's secret storage, use short-lived tokens, and redact them from logs.

MCP02: Privilege escalation via scope creep

Permissions granted "just for now" tend to stay and grow. An agent ends up holding far more access than any single task needs. In the GitHub MCP case published by Invariant Labs in May 2025, an agent with a token that could reach every repository read a malicious public issue and leaked private repository data. The fix is narrow scopes per task, such as one repository per session.

Poisoned tools and supply chain: MCP03 and MCP04

MCP03: Tool poisoning

An attacker hides instructions in a tool's description, schema or output. The model reads them; the user usually does not. Invariant Labs showed an innocent-looking "add" tool whose description told the agent to read ~/.ssh/id_rsa and pass it along in a hidden parameter. OWASP's guidance is to scan descriptions before connecting, pin reviewed tool definitions with a hash, and require review when they change.

MCP04: Software supply chain attacks and dependency tampering

MCP servers are packages, and packages can be hijacked or impersonated. postmark-mcp, the first malicious MCP server found in the wild, published 15 clean versions before version 1.0.16 began blind-copying every email it sent to the attacker. Pin versions, check that the publisher is the real project, and review each update before it reaches developers.

Commands and prompts: MCP05 and MCP06

MCP05: Command injection and execution

Agents and their clients build commands from input that may not be trustworthy. CVE-2025-6514, rated 9.6, let a malicious server run commands on a developer's machine through mcp-remote versions 0.0.5 to 0.1.15, fixed in 0.1.16. The MCP specification now says clients must show the exact command before starting a local server and must not open URLs through a shell.

MCP06: Prompt injection via contextual payloads

Instructions hidden in content the agent reads, such as a web page, a file or an issue, act as a second set of orders that pulls the agent away from what the user asked. The GitHub case above is an example: the attack arrived as ordinary issue text. Keep untrusted content away from agents holding powerful tools, and require a person to confirm actions that send data out.

Access and visibility: MCP07 and MCP08

MCP07: Insufficient authentication and authorization

Servers, tools or agents that fail to check who is calling them open paths an attacker can walk through. The MCP specification forbids "token passthrough", where a server accepts tokens that were never issued to it and forwards them downstream. It also recommends the stdio transport for local servers, or an authorization token for local HTTP servers, so other processes on the machine cannot use them.

MCP08: Lack of audit and telemetry

Without records of which tools ran, with what inputs, there is nothing to investigate after an incident. OWASP recommends detailed logs of tool invocations, context changes and user-agent interactions, kept in immutable audit trails. Check whether your clients can export tool-call logs before you need them.

Shadow MCP servers and over-sharing: MCP09 and MCP10

MCP09: Shadow MCP servers

OWASP describes these as unapproved MCP deployments running outside security governance, often with default credentials, permissive settings or unsecured APIs. In most companies they start the same way: a developer adds a server to Cursor or Claude Code to get a job done. Nothing is wrong with the developer's intent, but security cannot review a server it does not know exists. Our guide shows how to find MCP servers on developer machines for each major coding agent.

MCP10: Context injection and over-sharing

Context that is shared, persistent or loosely scoped can carry one user's or one task's sensitive information into another. The fix is to scope context to a task, avoid long-lived shared memory for sensitive work, and give servers only the folders and data the job needs.

How to check your own servers against the list

A list of risks is only useful if you can check against it. Start with MCP09, because an inventory is what every other check runs against. Then go server by server: are secrets out of config files (MCP01), are tokens narrow (MCP02), are tool descriptions clean and pinned (MCP03), is the version pinned and the publisher real (MCP04). Our MCP security checklist turns the list into 12 concrete checks, each mapped to the item it covers, and our record of every malicious MCP server reported so far shows several of these risks in real attacks.

If your team is small, a sensible order is inventory first, then secrets and token scope, then version pinning and description review, then logging. Those four steps cover the entries behind most of the public incidents so far, and none of them needs new software to start.

Record the result for each server with a line of reason. Some servers fail a check for good reason; a deploy tool needs a powerful token. What matters is that the decision was made on purpose.

The OWASP agentic AI top 10 is a separate list that covers AI agents as a whole rather than MCP specifically, and most teams will want to read the two side by side.

Next step: check your servers against the OWASP MCP Top 10

Every item on the list starts with knowing what you run. Run a Discovery Scan to list every AI agent and MCP server across your machines and repositories, or look up a single server on the NoFly list.

Questions about the OWASP MCP list

Is the OWASP MCP Top 10 final?

No. As of November 2026 the project page lists it as a beta release in pilot testing, and OWASP calls it a living document. Names and details can change between versions, so check the project page before you cite an item.

How is it different from the OWASP Top 10 for LLM applications?

The LLM list covers risks in applications built on language models in general. The MCP list focuses on the Model Context Protocol layer: the servers, tools, tokens and context that connect an agent to other systems.

Which MCP risk should a security team look at first?

Shadow MCP servers, MCP09, because every other check depends on knowing which servers exist. After that, secrets and token scope (MCP01 and MCP02) usually give the quickest reduction in risk.

Does any tool cover the whole list?

Not on its own. Several items are about process, such as reviewing updates and keeping audit logs. Scanners help with tool poisoning and inventory, but token scope, approvals and logging also need policy and client settings.

Sources

  1. OWASP MCP Top 10 project page (2025, beta)
  2. OWASP MCP Top 10 on GitHub: project overview
  3. OWASP MCP Top 10: MCP01 Token Mismanagement and Secret Exposure
  4. OWASP MCP Top 10: MCP03 Tool Poisoning
  5. OWASP Cheat Sheet Series: MCP Security
  6. Invariant Labs: MCP security notification, tool poisoning attacks (April 1, 2025)
  7. Invariant Labs: GitHub MCP exploited (May 26, 2025)
  8. The Register: postmark-mcp server code hijacked (Sept 29, 2025)
  9. JFrog: CVE-2025-6514, critical mcp-remote RCE vulnerability
  10. Model Context Protocol: Security best practices
  11. Visual Studio Code Docs: MCP configuration reference

Related reading

See which of these risks are already in your org.