MCP Security Observatory

A risk index for Model Context Protocol servers. Static analysis over published servers, with the scanner’s own accuracy measured on a random sample of its output and published beside the results.

What was examined

Scanned on 2026-10-04T09:46:20Z. Sample drawn by ordering every repository by sha256("20260923:<server>") and taking the first 2,000, so the same set can be regenerated.

What was found

How often is this right? Not yet measured. 566 findings have been drawn at random from this output and frozen, and 116 are queued for a person to label; per-rule precision and recall will be published here with the threshold they were measured at, and the labelled set will ship as an open benchmark. Until then, treat every finding below as a candidate rather than a confirmed problem.

745 of 916 findings are not shown. Every high and critical finding is withheld, so the table below is the least severe part of what was found and is not a picture of the ecosystem’s worst problems. No maintainer has been notified yet. Only findings a person has verified are reported, privately; each finding’s 90-day window opens only when a notice naming it is recorded, and so nothing above medium severity has ever been published. The gate failing closed is the intended direction. Maintainer opt-out is honoured unconditionally.

By rule - published

Found is every finding the rule produced. Published is what cleared the disclosure gate. A rule can find hundreds and publish none, which is what four of these five do.
RuleFoundPublishedWithheldServers
Characters hidden from human review
UNICODE-CONCEAL · every language
910910
Tool input reaching a command interpreter
SHELL-EXEC-UNSAFE · TypeScript and JavaScript
12901290
Tool input reaching the filesystem unchecked
PATH-TRAVERSAL · TypeScript and JavaScript
14301430
Instructions planted in tool metadata
TOOL-DESC-INJECTION · TypeScript and JavaScript
38203820
Server reach wider than its tools require
SCOPE-OVERBROAD · TypeScript and JavaScript
171171099

A rule showing zero has published nothing, not found nothing: four of the five emit above medium severity and are withheld in full by the disclosure gate.

Language coverage

Every aggregate figure on this page is bounded by this table. A percentage derived from TypeScript is never presented as an ecosystem-wide one.
RuleDetectsExamines
UNICODE-CONCEALCharacters hidden from human reviewevery language
SHELL-EXEC-UNSAFETool input reaching a command interpreterTypeScript and JavaScript
PATH-TRAVERSALTool input reaching the filesystem uncheckedTypeScript and JavaScript
TOOL-DESC-INJECTIONInstructions planted in tool metadataTypeScript and JavaScript
SCOPE-OVERBROADServer reach wider than its tools requireTypeScript and JavaScript

Most repeated decisions - published

One misconfiguration set on many response paths. Counting the rows instead of the decisions would overstate these servers roughly twofold.
ServerWhat the rule reportedLines
io.github.docracy1/runwayleftaccepts any origin ('*')9
com.universalagentforum/forumaccepts any origin ('*')6
io.github.vuluu2k/webcake-storefront-mcpaccepts any origin ("*")6
live.pulsarsignal/pulsaraccepts any origin ('*')6
com.onkernel/kernel-mcp-serveraccepts any origin ("*")5
io.github.BrightbeamAI/chapaccepts any origin (*)5
io.github.meltingpixelsai/harvey-budgetaccepts any origin ("*")4
io.github.meltingpixelsai/harvey-verifyaccepts any origin ("*")4
com.expense-budget-tracker/expense-budget-trackerlistens on 0.0.0.03
io.github.atul-fusionpact/fusionpact-vectordbaccepts any origin (*)3