What MCPCheckup actually checks, how each finding turns into a penalty, and how the per-axis scores combine into the final grade.
← back to the scannerAn MCP server's tool descriptions, parameter descriptions, and connection-time instructionsaren't passive documentation — they're text injected directly into an LLM's context, read and acted on before a human ever sees it. MCPCheckup treats "quality" accordingly: alongside conventional checks (does it connect, is TLS valid, is there a license), it specifically looks for content engineered to manipulate the model reading it, and for shapes that make an agent's job harder (bloated context, missing safety hints, dishonest capability claims).
Every check belongs to exactly one of four axes. Each axis is scored independently from 0–100, then the overall score is a weighted average of the four axis scores.
Whether the server, and the context it injects into an LLM, can be trusted. This axis carries the most weight because a malicious or compromised MCP server can manipulate any agent connected to it, regardless of how well it behaves on every other axis.
Whether the server does what its handshake claims: it connects, negotiates a protocol version, and honestly reports the capabilities it lists in `initialize`.
Whether the server's tools, resources, and prompts are well-shaped for an LLM to consume: not too costly in context tokens, with metadata that helps an agent reason about what's safe to call.
Whether basic operational/legal information about the server is published.
Each axis starts at 100. For every check in that axis, MCPCheckup subtracts a penalty for the check's overall status, plus a penalty for every individual finding it raised, based on severity. The result is clamped to 0–100.
To avoid over-penalizing servers with many tools, the combined penalty from a single check's minorfindings (info / low / medium) is capped at 20 per check — flagging the same small issue across ten tools can't drain an axis on its own. High and criticalfindings are never capped: those are the ones meant to be able to tank a score. Informational findings carry no penalty at all — they're surfaced for review, not scored.
| Check status | Penalty |
|---|---|
| error | -15 |
| warning | -5 |
| ok | -0 |
| skipped | -0 |
| Finding severity | Penalty |
|---|---|
| critical | -35 |
| high | -20 |
| medium | -10 |
| low | -4 |
| info | 0 |
Grades: A ≥ 90, B ≥ 75, C ≥ 60, D ≥ 40, F below 40 — applied to the final weighted score.
Can MCPCheckup establish an MCP connection at all, and how fast?
Which version of the MCP spec did the server negotiate?
What does the server expose, and does it match what it claimed to support?
Is the model-facing text trying to manipulate the LLM reading it, and is the transport secure?
Is the transport layer itself sound?
Has anything changed since the last time MCPCheckup scanned this exact server?
How many tokens of context does this server's manifest cost on every single turn?
Can an agent reason about whether a tool call is safe, and is the input schema even valid?
Are the usage terms for this server published anywhere?
Does the server document a pay-per-call model (e.g. the x402 protocol)?