State of MCP Security
An open look at what MCP servers can actually do — and what that means for AI agent security.
Data cached daily · last computed: —
What this is
MCP servers are the plugin layer for AI agents — except a plugin here isn't just code you import. It hands an agent your shell, filesystem, browser, APIs, database, Slack, GitHub, wallet, email, cloud. A normal npm package can't rm -rf your prod. An MCP server with a run_command tool absolutely can.
dangerous ≠ malicious. A DevOps MCP needs shell. A wallet MCP touches crypto — that's the job. The question isn't "is it evil?" — it's "does what this thing can do match what it claims, and is that power guarded?"
Before installing, your signals are stars, a README, and vibes. None tell you if it execs shell, reads .env, touches keys, or ships tool descriptions that reprogram your agent. MCP-INDEX is the observability layer that does— before you plug this in, here's what it can actually do.
Methodology
We crawl GitHub with multiple keyword queries, classify via heuristic file-tree analysis, then run two-phase LLM analysis (purpose detection + vulnerability auditing) plus a regex IOC scan over source files.
Loading data...
total findings · but findings cluster — one repo can throw ten. Counted by repo: have any finding (%). Only repos (%) have a critical issue. The bulk is medium/low — worth knowing, not "everything is on fire."
Exploitable vs. inherent
This is the key distinction. Not every "finding" is a bug to panic about. Some are genuinely dangerous. Others are inherent to what an MCP server is.
Exploitable — for real
Unauthenticated shell exec, arbitrary code exec, credential exposure, file write, secret leakage, destructive actions. If a repo has one of these, the attack isn't theoretical — the capability is sitting in code, wired and callable.
Inherent attack surface
SSRF potential, excessive capability scope, missing input validation, prompt injection surface. Mostly a consequence of what an MCP server is. Flagging "prompt injection surface" on an MCP server is like flagging "accepts HTTP" on a web server — true, inherent, worth knowing.
The honest takeaway: the ecosystem isn't "95% hacked." Most findings are inherent surface. The smaller exploitable core has genuinely dangerous issues. That's the real story.
Categories
Loading data...
Indicators
Indicators describe what the code does, not a verdict. A 'telegram' match means it talks to Telegram — could be C2, could be legit alerts. 'crypto-wallet' is a context tag (crypto-related code, not a risk indicator). We point; we don't guess.
Conclusions
Tool poisoning is real in research and PoCs — postmark-mcp (Sept 2025), Smithery registry compromise (Oct 2025), Invariant's WhatsApp exfil PoC — but at our scale it's still demos and honeypots. Zero covert cases in repos with real traction. The attack is documented; it isn't deployed at scale yet.
The material risk today isn't covert malware. It's legitimately dangerous, insecure capability — MCP servers that exec shell, run code, or expose creds with no auth. If one gets supply-chain compromised the way postmark did, the dangerous capability is already sitting there, pre-installed and trusted.
The surface is real, the numbers are real, and the honest picture — a few genuinely dangerous servers, many inherently powerful ones, zero covert campaigns — is more useful than fear. We'll keep counting. You keep verifying.