The Model Context Protocol lets an AI assistant call tools on other systems: read a database, open a ticket, run a command. That's the point of it, and it's also the problem. Every MCP server is a piece of software that an agent can be talked into using, often with the user's credentials and sometimes with a shell. Two years in, MCP has the security record you'd expect from a protocol that went from launch to every major AI client in about six months: ordinary bugs in thousands of small servers, a new class of attacks on the model itself, malicious packages, and a response that is real but uneven.
Most writing about MCP security is either a vendor's scan or a single scary demo. We wanted the whole picture in numbers. So we counted every MCP vulnerability advisory we could find in the public databases, pulled the official MCP Registry and probed a sample of its remote servers, and collected the academic benchmarks, internet scans and incident reports, then checked them. Security-vendor figures are the vendor's own claims, with the vendor's method, and are labelled that way. Every number links to its source.
Key findings
- 1By our count, 776 MCP vulnerability advisories were made public from November 2024 to September 2026: none before May 2025, 90 in all of 2025 and 686 in the first nine months of 2026. The third quarter of 2026 alone had 370, about eight times the same quarter a year earlier.
- 260% of them are rated critical or high. In 2025, 59% were command or code execution, mostly small local servers passing input to a shell. In 2026 that share fell to 22% as MCP moved onto HTTP, and missing authentication, DNS rebinding and SSRF caught up.
- 3Two MCP flaws, both in the LiteLLM gateway, are on CISA's Known Exploited Vulnerabilities list. Across five well-documented cases, the gap from a fix to an exploitation signal ran from 20 days to about six months.
- 4A May 2026 study found 40.55% of 7,973 live remote MCP servers exposed their tools without authentication. In our own probe of 300 servers listed in the official registry, 52% completed an unauthenticated handshake. None of the five spec revisions makes authorization mandatory.
- 5Attacks on the model work. In the MCPTox benchmark, poisoned tool descriptions succeeded 36.5% of the time on average across 20 model settings, and no model refused more than 3% of them. Newer models resist naive injection, but splitting a payload across two or three channels got up to 100% exfiltration from models that scored 0% otherwise.
- 6The supply chain is now a target. We counted 163 malicious-package advisories on OSV for npm and PyPI packages with "mcp" in the name. One malware-delivering entry stayed in the official MCP Registry for 28 days, and the registry tells consumers to "assume minimal-to-no moderation".
- 7The response is real. The spec's security best practices grew from three attack sections to ten in 13 months, clients added re-approval prompts, sandboxes and org allowlists, and 13 acquisitions between June 2025 and August 2026 named MCP in the announcement. It lags the attack surface: most remote servers still don't advertise the spec's OAuth flow.
776
MCP vulnerability advisories made public, Nov 2024 to Sep 2026
Our count
Source: GitHub Advisory Database, NVD, MCP repos
60%
Of those advisories rated critical or high
Our count
Source: GitHub Advisory Database, NVD
40.55%
Of 7,973 live remote MCP servers exposing tools with no authentication, May 2026
Source: Zhou et al. (Fudan), arXiv
36.5%
Average tool-poisoning attack success, 20 model settings, 45 real servers
o1-mini: 72.8%
Source: MCPTox, arXiv
From zero to 145 advisories a month#
No one maintains a current count of MCP vulnerabilities, so we made one. At the start of October we pulled every reviewed advisory in the GitHub Advisory Database published since November 2024, every NVD record that mentions MCP, and the published security advisories of all 42 repositories in the official modelcontextprotocol GitHub organization. We kept an advisory if the affected product is MCP software (a server, client, SDK, gateway or inspector) or if the bug sits in another product's MCP feature, such as an /mcp endpoint. We dropped the many false hits (Linux drivers for Microchip's MCP2221 chip, plugins with "MCP" in their marketing name but bugs elsewhere) and deduplicated by CVE. The full rules are in the methodology.
The result: 776 advisories made public between November 2024 and September 2026. There were none at all for the first six months. The first five arrived in May 2025, including a critical bug in the 5ire desktop client. 2025 ended with 90. Then the curve bent: 72 in the first quarter of 2026, 244 in the second, 370 in the third.
MCP vulnerability advisories made public per month
Advisories per month by first public date, deduplicated by CVE, Nov 2024 to Sep 2026
| x | y |
|---|---|
| Nov 2024 | 0 |
| Dec 2024 | 0 |
| Jan 2025 | 0 |
| Feb 2025 | 0 |
| Mar 2025 | 0 |
| Apr 2025 | 0 |
| May 2025 | 5 (first 5) |
| Jun 2025 | 5 |
| Jul 2025 | 13 |
| Aug 2025 | 11 |
| Sep 2025 | 21 |
| Oct 2025 | 12 |
| Nov 2025 | 5 |
| Dec 2025 | 18 |
| Jan 2026 | 18 |
| Feb 2026 | 12 |
| Mar 2026 | 42 |
| Apr 2026 | 87 |
| May 2026 | 76 |
| Jun 2026 | 81 |
| Jul 2026 | 111 |
| Aug 2026 | 114 |
| Sep 2026 | 145 (145, incl. 29 in one batch) |
Sources: GitHub Advisory Database; NVD CVE API; modelcontextprotocol repository advisories; host0 count, early Oct 2026
Two things explain the shape, and only one of them is "more bugs". The ecosystem did grow: the number of distinct products with an advisory stayed between 56 and 81 every month from April 2026, so this isn't one vendor's bad quarter. But more people are also looking. The jump in April coincides with VulDB starting to assign CVEs in bulk to small GitHub MCP repositories, and with OX Security's disclosure that the stdio transport runs whatever command a configuration gives it. Of the CVEs in our set, VulDB assigned 110 and VulnCheck 85. Batches matter too: the September peak includes 29 advisories for mcp-atlassian on a single day, 36 for that one server in total.
The severity mix is heavy. Of the 776, 138 are rated critical (17.8%) and 328 high (42.3%), so 60% are critical or high, using GitHub's label where there is one and NVD's CVSS score otherwise. 2025 was slightly worse, with 26.7% critical, because so many of its bugs were command injection.
What breaks#
The bugs changed character between the two years. In 2025, MCP mostly meant small servers running on a developer's machine over stdio, and the typical advisory was a tool that passed its input to a shell or eval: 53 of the 90 advisories (59%) were command or code execution. In 2026 MCP went over HTTP, into gateways, IDEs and agent builders, and the bugs followed. Command execution fell to 22% of advisories, while missing or broken authentication rose to 26% and SSRF and cross-origin bugs (DNS rebinding, CORS, CSRF) to 21%.
What kind of bug: MCP advisories by class
Share of advisories by vulnerability class (from CWE ids), 2025 vs Jan to Sep 2026
Sources: GitHub Advisory Database; NVD; host0 count, early Oct 2026
That shift lines up with what researchers found when they looked at code directly. A census of the official registry (21,643 servers, source code for 14,353, August 2026) found unauthenticated network exposure was the most common problem, in 9.57% of scanned servers, and estimated about 7.6% have a high-severity finding once scanner false positives are corrected for. Another study ran eight MCP scanners over 37,288 runnable servers: together they flagged 96.89% as risky, at an average precision of 45.53%. Scanner output is mostly noise. The confirmed numbers are smaller and sharper: VIPER-MCP found 106 zero-days with working exploits across 39,884 repositories, and 67 got CVEs.
Servers, clients, gateways and SDKs#
About six in ten advisories are against servers, including MCP endpoints built into other products. About one in five hits a client or host app: IDEs, chat apps and agent builders that launch or connect to servers. Gateways, proxies and registries take about a tenth, and SDKs and frameworks slightly less.
Which part of the stack: MCP advisories by component
Share of 776 advisories, Nov 2024 to Sep 2026
| Label | Value |
|---|---|
| Server | ~59% (incl. MCP endpoints in other products) |
| Client or host app | ~23% |
| Gateway, proxy or registry | ~9% |
| SDK or framework | ~8% |
| Inspector or dev tool | ~1% |
Sources: GitHub Advisory Database; NVD; host0 count, early Oct 2026
The official software isn't exempt. We counted 51 advisories against the project's own modelcontextprotocol repositories through September, 38 of them in its eight SDKs. Only one was critical: the MCP Inspector bug of June 2025 (CVSS 9.4), where missing authentication between the Inspector's browser client and its proxy let a web page launch commands. The rest are a pattern. DNS rebinding protection was off by default in the Python and TypeScript SDKs (December 2025), then in Go, Java, Rust and Ruby through July 2026. Several SDKs had unbounded memory use. And in the last week of September, the Python and TypeScript SDKs both disclosed a high-severity flaw that let a malicious server choose where a client sent its OAuth credentials, fixed in Python 1.30.0 and 2.2.0.
Advisories against the official MCP software
Published advisories per modelcontextprotocol repository, Jun 2025 to Sep 2026
| Label | Value |
|---|---|
| Python SDK | 10 |
| Ruby SDK | 7 |
| Reference servers | 6 (git 4, filesystem 2) |
| Rust SDK | 5 |
| Registry | 5 |
| TypeScript SDK | 4 |
| Go SDK | 4 |
| Java SDK | 4 |
| Kotlin SDK | 3 |
| Inspector | 2 |
| PHP SDK | 1 |
Sources: modelcontextprotocol repository advisories; host0 count, early Oct 2026
The client side has its own history of bugs in exactly the place MCP is trusted: the configuration that says which commands to run. Cursor's "MCPoison" (CVE-2025-54136) let an approved MCP entry in a shared repository be swapped for a malicious command with no new prompt. mcp-remote, a widely used bridge to remote servers, had a CVSS 9.6 command injection triggered by connecting to a malicious server in July 2025, and five more CVEs in September 2026.
Exploited in the wild#
Most of these bugs have no public exploitation record. Two do, officially. CISA's Known Exploited Vulnerabilities catalog has two MCP-related entries, both in LiteLLM, a popular gateway: CVE-2026-42271, where endpoints for previewing an MCP server ran a command from the request body, added on 8 June 2026, and CVE-2026-59822, an authentication bypass on LiteLLM's MCP endpoint, added on 2 September. Others have exploitation reports from security vendors but no CISA listing.
MCP bugs that attackers reached
Fixes, criminal proofs of concept and exploitation signals, Sep 2025 to Sep 2026
22 Sep 2025
22 Sep 2025
Flowise CustomMCP RCE published
CVE-2025-59528, CVSS 10: MCP configuration passed into a JavaScript Function(). Exploitation seen about six months later, per VulnCheck as cited by Pluto Security.24 Feb 2026
24 Feb 2026
mcp-atlassian patch
MCPwnfluence: SSRF plus file write to code execution on unauthenticated deployments.16 Mar 2026
16 Mar 2026
Criminal proof of concept for mcp-atlassian
Posted to a forum 20 days after the patch. Not confirmed exploitation, and not on CISA's list.30 Mar 2026
30 Mar 2026
nginx-ui advisory
CVE-2026-33032, CVSS 9.8: the MCP endpoint skipped authentication.13 Apr 2026
13 Apr 2026
nginx-ui exploited in the wild
Per Recorded Future, as cited by Rapid7.8 Jun 2026
8 Jun 2026
First MCP bug on CISA's KEV list
LiteLLM CVE-2026-42271, 31 days after its fix and NVD entry.2 Sep 2026
2 Sep 2026
Second KEV entry
LiteLLM CVE-2026-59822, 56 days after its fix.
Sources: Pluto Security; KELA; Rapid7; NVD CVE-2026-42271; NVD CVE-2026-59822; CISA KEV
Days from a fix to an exploitation signal
Days between the fix (or NVD entry) and the first public exploitation signal, 2025 to 2026
| Label | Value |
|---|---|
| mcp-atlassian CVE-2026-27825 | 20 days (criminal proof of concept) |
| nginx-ui CVE-2026-33032 | 29 days (exploitation reported) |
| LiteLLM CVE-2026-42271 | 31 days (added to CISA KEV) |
| LiteLLM CVE-2026-59822 | 56 days (added to CISA KEV) |
| Flowise CVE-2025-59528 | ~190 days (exploitation seen, Apr 2026) |
Sources: Pluto Security; Rapid7; NVD; host0 arithmetic on published dates
The common thread is a network-reachable MCP endpoint that trusted its caller. nginx-ui's /mcp_message endpoint skipped authentication, and Pluto Security counted over 2,600 publicly exposed nginx-ui instances. LiteLLM's two entries were a "test connection" feature that ran a supplied command and a bearer-token fallback that accepted a fabricated token. None of them needed the model to be fooled.
Exposed servers#
How many MCP servers sit on the internet without authentication? Several groups have scanned for them, and each used its own discovery method and its own definition of "exposed". The counts can't be lined up into a trend, so here they are side by side with their methods.
Scans of internet-facing MCP servers
Headline count, method and definition per study, Jul 2025 to Sep 2026
Sources: Trend Micro 2025; Knostic; Bitsight; Trend Micro 2026; Censys; Zhou et al.; Padilla; Pluto Security
The Fudan study is the one with a full split. Of the 7,973 live remote servers it found, 3,233 (40.55%) exposed their tools with no authentication, 30.45% used OAuth and 29.00% a static token or API key. OAuth didn't mean safe: the researchers tested 119 OAuth servers and every one had at least one flaw, 325 in all, with dynamic client registration flaws in 96.6% of them.
How live remote MCP servers authenticate
Share of 7,973 live remote MCP servers by authentication type, May 2026
| Label | Value |
|---|---|
| No authentication | 40.55% |
| OAuth | 30.45% |
| Static token or API key | 29.00% |
What's behind those servers matters more than the count. Censys, which listed each service's tools but never executed any of them, sorted the 12,520 services it saw in late April 2026 into categories by their tool names. Data and knowledge tools (database queries, vector search) were the largest group, then infrastructure, and 687 services fell into its "system control" subcategory: tools that advertise command execution or process control.
What internet-facing MCP services offer
Services per tool category in Censys's scan, late Apr 2026 (a service can be in several)
| Label | Value |
|---|---|
| Data and knowledge | 1,776 (incl. 1,056 data-access services) |
| Infrastructure | 1,549 (incl. 687 system control) |
| Content and media | 523 |
| Business operations | 504 |
| Finance | 485 |
| Commerce | 448 |
| Civic and government | 322 |
| Communication | 246 |
| AI and agents | 128 |
| Healthcare | 41 |
| Security | 41 |
The more recent studies tested what those tools actually do. Wiz says MCP shows up in 80% of the cloud environments it sees, about 1 in 6 of those expose at least one MCP server to the internet, about 70% of exposed servers hand their full tool list to an anonymous caller, and about 42% return real data when a tool is called. In September, Pluto Security reported 147 servers that were genuinely unauthenticated once it called their tools, including several where an exec tool ran as root.
Attacks on the model#
Everything above is classic application security. MCP adds a second attack surface: the model reads tool names, descriptions and results as text, and text can carry instructions. Invariant Labs named tool poisoning in April 2025: hidden instructions in a tool's description that the user never sees. Since then researchers have built benchmarks to measure how often it works.
The largest is MCPTox (AAAI 2026): 45 live MCP servers, 353 real tools and over 1,300 poisoned test cases across 20 model settings. The average attack success rate was 36.5%, o1-mini was fooled 72.8% of the time, and the model that refused most often, Claude 3.7 Sonnet, refused under 3% of attacks. The authors' explanation is uncomfortable: more capable models are often more susceptible, because the attack exploits their better instruction-following. Turning on reasoning in the Qwen3 models raised attack success at every size.
Tool-poisoning attack success by model
MCPTox attack success rate, % of valid outputs, 20 model settings, paper v2 (Sep 2026)
| Label | Value |
|---|---|
| o1-mini | 72.8% |
| DeepSeek-R1 | 70.9% |
| Phi-4 | 70.2% |
| GPT-4o-mini | 61.8% |
| Gemini 2.5 Flash | 59.7% |
| Qwen3-32B (reasoning) | 58.5% |
| DeepSeek-V3 | 56.5% |
| Qwen3-235B (reasoning) | 50.6% |
| Qwen3-8B (reasoning) | 41.8% |
| Claude 3.7 Sonnet | 34.3% |
| Qwen3-14B (reasoning) | 27.1% |
| Llama 3.1 70B | 24.6% |
| Qwen3-32B | 23.7% |
| Qwen3-235B | 17.2% |
| GPT-3.5 Turbo | 14.9% |
| Gemma 2 9B | 14.5% |
| Llama 3.1 8B | 14.1% |
| Qwen3-8B | 14.0% |
| Mistral | 8.3% |
| Qwen3-14B | 5.1% |
Source: MCPTox, arXiv 2508.14925
Other benchmarks point the same way. MSB (ICLR 2026) ran 2,000 attack instances of 12 types and found an average success rate of 40.35%, with asking for an out-of-scope parameter the most effective at 76.5%; its authors also found stronger models more vulnerable. On real servers, MCP-SafetyBench compromised every one of 13 models in 29.8% to 48.2% of cases. Off-the-shelf defences helped little: in MCPSecBench, two published protections blocked 17.9% and 28.9% of attacks on average.
The 2026 frontier models are harder to fool with a crude injection. In a public red-teaming competition with 272,000 attack attempts against 13 frontier models, success rates ranged from 0.5% (Claude Opus 4.5) to 8.5% (Gemini 2.5 Pro). But MCP gives attackers more than one channel into the context. A September 2026 paper split a payload across a tool's description, its result and a sampling message, so that no single channel carried a complete injection. Over more than 15,000 trials, models that never complied with a single-channel attack exfiltrated credentials at up to 100%, and all seven third-party MCP security tools the authors tried missed the fragments.
Splitting the payload defeats models that resist a single injection
Credential exfiltration rate, single channel vs payload split across two or three channels, Sep 2026
How often does this happen outside a lab? Nobody knows, and the counts depend on the detector. The registry census found no poisoned tool descriptions among 14,353 servers; an earlier study using one scanner on a subset of repositories reported 5.5%. The attacks seen in the wild so far are malicious code, not clever descriptions, which brings us to the supply chain.
The supply chain#
On 25 September 2025 Postmark warned that a package called postmark-mcp, impersonating its official server, had "built trust over 15 versions" before version 1.0.16 quietly BCC'd every email to an attacker. It's usually described as a long con. npm's own metadata says otherwise: all 18 versions were published between 15 and 17 September, so the "trusted" period lasted about two days. The package had 1,643 downloads, and Postmark said it knew of one affected customer. It was the first malicious MCP server found in the wild. It wasn't the last.
We searched OSV, the open-source vulnerability database that collects malicious-package reports from GitHub, Amazon, Google and others, for npm and PyPI packages with "mcp" in the name. As of early October it held 163 such advisories, with a spike in the second quarter of 2026.
Malicious MCP packages reported per quarter
OSV malicious-package advisories for npm and PyPI packages with “mcp” in the name, Q2 2025 to Q3 2026
| Label | Value |
|---|---|
| Q2 2025 | 2 |
| Q3 2025 | 16 |
| Q4 2025 | 31 (17 from the Shai-Hulud 2.0 worm) |
| Q1 2026 | 5 |
| Q2 2026 | 62 (incl. 15 hijacked real packages, 10 squats of official names) |
| Q3 2026 | 47 |
Sources: OSV.dev; host0 count, early Oct 2026
The attacks come in three shapes. Some packages are built to be malicious, like postmark-mcp or the three PyPI "run command" servers that opened a reverse shell. Some are legitimate MCP packages hijacked by worms that steal maintainer tokens: Shai-Hulud 2.0 hit Postman's MCP server and others in November 2025. And some use MCP as the payload: the SANDWORM_MODE worm, spread through Claude Code typosquats, wrote a rogue MCP server into the configs of Claude Code, Claude Desktop, Cursor, Continue and Windsurf, with tool descriptions that told the agent to read SSH and cloud credentials.
Malicious and hijacked MCP servers
Selected supply-chain incidents, Sep 2025 to Sep 2026
25 Sep 2025
19 Oct 2025
19 Oct 2025
Three MCP servers, 1.6K downloads, same attacker IP as an npm package.24 Nov 2025
24 Nov 2025
Shai-Hulud 2.0 hits real MCP packages
Postman's MCP server, mcp-use, Zapier and Browserbase packages republished with a worm.20 Feb 2026
19 May 2026
19 May 2026
631 malicious versions of 314 packages in 22 minutes, incl. AntV's MCP servers.29 May 2026
29 May 2026
Squats of official server names
Unscoped npm names like mcp-server-github and mcp-server-fetch; the fetch squat had 9,687 downloads before takedown.9 Aug 2026
9 Aug 2026
Malware through the official registry
OX Security reports V.A.P.E., a registry entry linking a repository with a Shai-Hulud payload.5 Sep 2026
Sources: Postmark; JFrog; Postman; Socket; OSV; OX Security; MCP Registry issue #1563
V.A.P.E. shows how the official registry's model works. The registry verifies who published an entry, but relies on npm, PyPI and Docker to scan the code. Here the PyPI package was clean; the payload sat in the settings files of the GitHub repository the entry linked to. The entry was listed on 8 August, OX Security reported it the next day, a community member filed a takedown request on 21 August noting it was still active, and it was removed on 5 September. That's consistent with the registry's own moderation policy, which removes malware and spam but says consumers "should assume minimal-to-no moderation" and that it won't remove servers with security vulnerabilities. Malware is also not the only way a listing can change under you: the August census found that 4.2% of multi-version servers had moved their remote endpoint to a different host while keeping the same registry identity, a change clients are never told about.
The response#
The spec#
The specification has tightened authorization in every revision since March 2025: OAuth 2.1 with PKCE, then servers as OAuth resource servers with tokens bound to one server, then client ID metadata documents, and in July 2026 issuer validation and the deprecation of dynamic client registration. What it hasn't changed is whether authorization is required. Every revision's authorization page says "Authorization is OPTIONAL for MCP implementations", and stdio servers, 96.6% of the installable packages in the registry by our count, are told to take credentials from the environment instead.
The spec's security best practices page grew faster. Counting from the page's git history, it had three attack sections when it was introduced with 2025-06-18 (confused deputy, token passthrough, session hijacking), five with 2025-11-25 and ten with 2026-07-28, adding SSRF, mix-up attacks and localhost redirect impersonation among others.
Attack sections in the spec's security best practices
Attack and mitigation sections per spec revision, Jun 2025 to Jul 2026
| Label | Value |
|---|---|
| 2025-06-18 | 3 |
| 2025-11-25 | 5 |
| 2026-07-28 | 10 |
Sources: MCP security best practices; host0 count from git history
What servers actually do#
To see how much of that reaches deployed servers, we pulled the whole official registry in early October: about 40,000 servers, 25,224 of them with a remote endpoint. The registry's schema has no field for OAuth, which a client is meant to discover at runtime, so metadata can't tell you who uses it. What it does show: 81.7% of remote servers declare no credential at all, and where publishers do declare one, it is almost always a static API key or bearer header (17.1%).
So we asked the servers. We took one remote endpoint per hostname, 300 in all, and sent each a single unauthenticated initialize request, the first message of an MCP session. We never listed or called a tool.
How registry-listed MCP servers answer a stranger
Response to one unauthenticated initialize request, 300 remote servers from the official registry (one per host), early Oct 2026
| Label | Value |
|---|---|
| Completed the handshake | 52% (156 servers) |
| Answered with the spec's OAuth challenge | 26% (78 servers) |
| Other 401 or 403 | 6% (19 servers) |
| Unreachable | 7% (20 servers) |
| Other responses | 9% (404, 5xx, redirects, SSE: 27 servers) |
Sources: MCP Registry API; host0 probe, early Oct 2026
About half completed the handshake with no credentials. About a quarter answered with a 401 pointing to OAuth protected-resource metadata, exactly as the spec describes, and of the servers that refused us at all, 80% did it that way. The direction is right where servers do authenticate. Most still don't, at least not at the front door.
Clients, registries and guidance#
The clients have done the most visible work, in three waves. First came re-approval: after MCPoison, Cursor began requiring approval every time an MCP config entry changed (July 2025), and VS Code added a trust dialog for changed servers. Then sandboxes: Claude Code's bash sandbox, which Anthropic says cut permission prompts by 84% internally (October 2025), Cursor's sandbox by default on macOS, and in March 2026 an opt-in sandbox for local MCP servers in VS Code. Then organisation control: GitHub's internal registry and "registry only" policy, managed allowlists in Claude Code and GitHub Copilot, and an Enterprise-Managed Authorization extension that lets an identity provider decide which servers people can use (June 2026). The gap is in what clients inspect: in a source audit of four clients, the cross-channel paper found that none scanned tool results or descriptions for injected instructions.
Curated catalogs went further than the official registry: Docker builds and signs every local server in its catalog, and JFrog's MCP registry scans public packages before a project can use them. Guidance arrived too: the OWASP MCP Top 10 (still in beta), a CoSAI taxonomy of nearly forty threats, and an NSA information sheet in May 2026 that says tool and model outputs should never be implicitly trusted, and that MCP-aware security proxies "remain limited and are still maturing".
The market answered with gateways and acquisitions. By our tally, 13 acquisitions between June 2025 and August 2026 named MCP in the announcement, from Snyk buying Invariant Labs, the team that named tool poisoning, to Snowflake's deal for Natoma and Arcade's for Smithery. None disclosed a price. Twelve funding rounds that name MCP add up to about $389M by our arithmetic, most of it going to broader agent-identity platforms rather than MCP-only tools.
What this means if you build with AI#
If your agent uses MCP, every server you connect is code you're trusting with whatever the agent can reach. The data points to a short list of habits, depending on which side you're on.
If you build MCP servers#
- Require authentication on anything network-reachable, and use the spec's OAuth flow. The spec won't make you, but 40.55% of live remote servers had none, and both CISA-listed MCP bugs were an endpoint that trusted its caller. Answer unauthenticated requests with a 401 and protected-resource metadata, as 26% of the servers we probed already do.
- Bind local servers to localhost and turn on DNS rebinding protection. The official SDKs shipped with it off by default for months. Upgrade the SDK: the Python fix for OAuth credential routing is in 1.30.0 and 2.2.0.
- Never pass tool input to a shell,
evalor a file path without validation. Command execution was 59% of 2025's advisories and path traversal is still 14%. - Treat a preview or "test connection" feature as production. That's how LiteLLM ended up on CISA's list.
If you connect MCP servers#
- Install from the publisher, by exact name and pinned version. Squats of official server names collected thousands of downloads, and postmark-mcp turned malicious on its sixteenth version. A registry listing is not a review.
- Don't give one agent private data, untrusted content and a way out at the same time. That's the lethal trifecta, and the cross-channel results show a model that resists one injection can still be walked into exfiltration.
- Re-approve when a server changes, and read what you approve. Clients now prompt on config changes; the prompt only helps if someone looks. Run local servers in a sandbox where your client offers one.
- Patch clients and bridges fast. mcp-remote has had six CVEs, Cursor several, and the shortest gap we found from fix to a criminal proof of concept was 20 days.
If you run a platform team#
- Keep an allowlist. Claude Code, GitHub Copilot, Cursor and VS Code all support org-managed MCP allowlists or a registry-only policy now. Prefer remote servers you can put behind your identity provider over stdio commands on every laptop.
- Scan your own network for MCP endpoints. Wiz found MCP in 80% of the cloud environments it sees, with about 1 in 6 of those exposing one to the internet. The NSA recommends the same.
- Don't rely on a scanner or a prompt guard alone. Scanners flagged 96.89% of servers at under 50% precision, and published defences blocked under 30% of benchmark attacks. Least privilege and isolation do more.
host0's own MCP server is control-only: it lists, renames, shares and deletes apps but never deploys code, and it signs people in with OAuth 2.1 and PKCE. Apps deployed to host0 are private by default.
Methodology#
This post draws on five research passes run at the start of October 2026: vulnerabilities and CVEs, attacks and benchmarks, code studies and malicious servers, exposure and incidents, and the response (spec, clients, registries, guidance and market). Each was limited to primary sources: advisory databases, NVD records, the specification and its git history, arXiv papers (dated by their first version), security-vendor reports and company announcements. Aggregator and "statistics" sites were used only as leads. Every fact is dated on or before 2 October 2026. Before publishing we re-opened the single-source pages behind the headline claims (the Fudan, MCPTox, census, cross-channel and competition papers, Censys, Wiz, Pluto Security, OX Security, Postmark, the registry's moderation policy and its takedown issue) and confirmed the quoted figures were still there.
Three numbers are our own computations:
- The advisory count. We pulled GitHub's reviewed advisories published since 1 November 2024 (15,319), NVD records matching "MCP", "Model Context Protocol" or "mcp-server" (730 since November 2024), and the published advisories of all 42
modelcontextprotocolrepositories (57). We kept a record if any text matched MCP and either the product is MCP software or the vulnerable code is the product's MCP feature; we excluded 126 false or mention-only hits and 16 borderline cases. We deduplicated by CVE (else GHSA id), dated each advisory by its earliest public date, took severity from GitHub's label or NVD's CVSS score, the class from CWE ids, and the component from rules on package names and descriptions. 776 were public by 30 September (788 by 2 October); the charts and shares use the 776. CISA's catalog was checked for entries added on or before 2 October. - The registry pull. We paged through the official registry's public API (
/v0/servers?limit=100&version=latest) and deduplicated by server name: about 40,000 servers, 25,224 with a remote endpoint and 16,398 with an installable package. Credential shares come from each entry's declared headers, secrets and URLs. - The probe. From registry servers with a fixed
https://remote URL, we kept one per hostname, shuffled them with a fixed seed and took 300. Each got one unauthenticated JSON-RPCinitialize(or, for SSE, oneGET), a 5-second timeout and no retries, with a user agent naming host0. We never called a tool.
The malicious-package count is also ours: OSV's npm and PyPI malicious-package records for package names containing "mcp", dated by OSV publication, as of early October.
Limitations:
- Advisory counts are a floor and a moving one. GitHub's global database lags repository advisories, NVD records count only if their text says MCP, and recent months will rise as late CVEs are published. Some of the 2026 rise reflects more CVE authorities looking, not only more bugs.
- Class and component labels are rule-based. Expect a few percent mislabelled; read the shares as rounded.
- Exposure scans aren't comparable. Each used its own method and definition; vendor scans are the vendor's claim.
- Benchmarks measure a lab. Attack success rates depend on the benchmark's setup and can't be compared across benchmarks or read as real-world rates.
- Our probe is a sample of listed servers on one day. 300 hosts, about ±6 points on the 52%. A completed handshake isn't proof of open tools.
Open questions#
- More bugs, or more people looking? How much of the 2026 rise in advisories comes from new CVE authorities assigning in bulk rather than from more vulnerable code?
- How often tool poisoning happens in the wild. Lab attacks work, but measured prevalence ranges from zero to 5.5% depending on the detector.
- When exploitation of the KEV-listed bugs began. Only the listing dates are public.
- Whether exposure is growing. No group has repeated a large internet scan with the same published method.
- How the newest models fare on the main benchmarks. MCPTox and MSB haven't been rerun on the 2026 frontier models.
- Whether the 2026-07-28 authorization changes have shipped. How many clients validate the issuer, and how many servers have dropped dynamic client registration?
