Every signal below comes from actually scanning the published source of each Model Context Protocol server with one deterministic engine — 50,796 findings across 11,908 flagged packages, each with a rule id, a severity and a confidence, each linking to its evidence on the server’s page. This is the triage view: review signals, not verdicts. Nothing here is an LLM’s guess — the same input produces the same finding again.
Counts are individual findings, so one package can appear under several. The engine graded critical at exactly zero across the whole catalog — a measured result, not a gap in coverage — while the long tail is low-severity supply-chain hygiene. The rows above are the shape of the work; the feed further down is the work itself.
Every rule id belongs to one of three families. Bars count the servers each family flagged; the number beside each is raw findings, because one family can fire many times inside one package.
Bar length is servers affected; the note is raw findings.
MTC-SRC — What the shipped code does — shell and command execution, dynamic code evaluation, and network sinks read straight out of the published source.MTC-SUP — How a package is shipped, before a line of it runs — missing source repository, no license, install-time scripts and names that combosquat a popular one.MTC-CAP — a family of deterministic rulesMTC-FLOW — The lethal trifecta across a server’s tools: untrusted input + sensitive-data read + external egress compose into a data-exfiltration path a prompt-injected model could drive.MTC-NET — a family of deterministic rulesMTC-INJ — Instructions aimed at the model hidden in a tool’s description or parameters — instruction overrides, concealment (“don’t tell the user”), forced sequencing and credential-path targeting. Read from the tool surface statically extracted from the published source.MTC-TOFU — Trust-on-first-use: the package’s bytes moved under a version you already trusted. Rare by design, and the signal worth watching.MTC-UNI — Hidden payloads in tool metadata — Tags-block characters, zero-width joiners, bidi overrides and homoglyphs that a reviewer’s eye cannot see but the model reads.The worst-graded, most-flagged packages in the catalog — where triage starts. Each links to its full scan, where every finding carries its evidence, location and confidence. A grade describes the exact version that was scanned, never the project in general.
| Server | Grade | Findings | High |
|---|---|---|---|
| Secure Mcp Gateway | F | 19 | 11 |
| Alexandriashai Mcp Guardian | F | 12 | 7 |
| Guardian | F | 12 | 7 |
| Rate-My-Agent | F | 3 | 3 |
| Notion | F | 3 | 3 |
| Zeph To | F | 3 | 2 |
| Atom — Premium Domains | F | 2 | 2 |
| Demand Discovery AI | F | 2 | 2 |
| Banking Intelligence | F | 2 | 2 |
| Infomaniak Mcp Agent | F | 2 | 1 |
| Shellward | D | 18 | 18 |
| Code Executor | D | 20 | 15 |
The most recently scanned high and critical findings, limited to confirmed and strong confidence — the rows worth reading first. Each is one finding on one server; follow the name for the evidence behind it.
MTC-UNI-009
Mixed-script (homoglyph) text in inputSchema.properties.csv_text.description
MTC-INJ-SECRECY-1
Secrecy directive (conceal action from the user)
Ranked by how many servers each rule flagged, not by how alarming it sounds. Titles are the engine’s own — a combosquat rule names the package it shadows, so a title can be specific to one server.
Bar length is servers affected; colour is the rule’s severity.
| Rule | What it catches | Servers |
|---|---|---|
MTC-SRC-002 low |
Shell/command execution in server code (__main__.py) | 8,422 |
MTC-SUP-011 low |
Package has no source repository | 5,575 |
MTC-SUP-012 info |
Package has no license | 4,442 |
MTC-SRC-003 medium |
Hardcoded egress to an external endpoint in packaging/dev tooling (worker/test/mcp.test.ts) | 1,706 |
MTC-SRC-001 low |
Dynamic code execution in server code (zotero-plugin/bootstrap.js) | 1,568 |
MTC-SRC-005 medium |
Dynamic module load from a non-literal in packaging/dev tooling (v3/@claude-flow/cli/dist/src/benchmarks/gaia-hardness/predictor.smoke.js) | 1,144 |
MTC-CAP-005 low |
Mutating tool "zerodb_delete_file" declares no destructiveHint | 1,102 |
MTC-SUP-010 low |
Package runs install-time scripts (preinstall, postinstall) | 1,046 |
MTC-SRC-009 medium |
Untrusted input concatenated into a command sink (webasyst-mcp.js) | 878 |
MTC-NET-005 info |
Remote HTTP MCP endpoint | 859 |
This is the honest part. Every finding is deterministic and evidence-backed — never an LLM’s opinion — but not every one is equally certain. 8 findings are confirmed: the engine reproduced the behaviour rather than matching a pattern near it. That is the difference between this and a heuristic code-analysis score.
Counts are individual findings; the note is each level’s share.
Scanning runs on a queue, not on page load. These figures are recomputed at most once a minute from the stored scans, and this snapshot was built 2026-09-07 15:44 UTC. Re-check any package yourself with the free API or the CLI — same input, same finding, no account needed.