MCP Reliability Scorecard

A model-free reliability scan of popular Model Context Protocol servers, by mcp-drill. Generated 2026-07-07T06:31:43Z.

Across 31 popular MCP servers (265 tools), only 3% of tools declare an output contract that would reject a corrupted response. For the rest, schema validation cannot catch a well-typed but wrong result.

3%
enforceable contract (7/265 tools)
42%
vacuous schema (110/265)
56%
no schema at all (148/265)
30/31
servers handle bad input correctly
ServerTransportStartedTools EnforceableVacuousError handling
everythingstdioyes130%100%100%
filesystemstdioyes147%93%100%
memorystdioyes90%100%100%
sequential-thinkingstdioyes10%100%100%
desktop-commanderstdioyes260%n/a100%
context7stdioyes20%n/a100%
mcp-server-chartstdioyes270%n/a100%
git-mcp-serverstdioyes2818%82%100%
mcp-server-commandsstdioyes10%n/a100%
playwrightstdioyes230%n/a100%
timestdioyes20%n/a100%
fetchstdioyes10%n/a100%
gitstdioyes120%n/a100%
sqlitestdioyes60%n/a67%
duckduckgostdioyes20%100%100%
calculatorstdioyes10%100%100%
wikipediastdioyes220%100%100%
arxivstdioyes50%100%100%
taskmanagerstdioyes100%n/a100%
nixosstdioyes20%100%100%
pandocstdioyes10%n/a100%
youtube-transcriptstdioyes50%n/a100%
youtube-transcript2stdioyes10%n/a100%
text-editorstdioyes20%n/a100%
tree-sitterstdioyes260%100%100%
json-mcpstdioyes20%n/a100%
deepwiki (remote)httpyes30%100%100%
microsoft-learn (remote)httpyes30%100%100%
huggingface (remote)httpyes812%0%100%
gitmcp (remote)httpyes50%n/a100%
cloudflare-docs (remote)httpyes20%n/a100%

What this measures (no language model involved)

Every number is a property of the server and the protocol, not of any agent. For each tool that declares an outputSchema, we build a payload that keeps the declared structure and types but corrupts every value, then check whether the server's own schema still validates it. A schema that validates the corruption is vacuous; one that rejects it is enforceable. We also send invalid requests to check whether the server returns a proper error. See mcp-drill vs mcp-scan for how this differs from security scanning.

Reproduce

pip install "mcp-drill[scan]"
python studies/pilot/run_pilot.py studies/pilot/servers.json
# or scan a single server:
uvx mcp-drill scan -- npx -y @modelcontextprotocol/server-filesystem /tmp