Security scores and tool-definition history for Model Context Protocol servers.
An MCP client injects every tool's name, description and JSON schema straight into the model's context. A tool description is therefore untrusted input arriving with system authority. MCPAudit reads what each server tells the model, checks it against eight attack classes, and — the part a local scanner structurally cannot do — fingerprints every tool on every scan, so a server that ships clean descriptions, gets adopted, then quietly rewrites them gets caught.
| Grade | Server | Score | Tools | Findings |
|---|---|---|---|---|
| F | Weather (poisoned example)
local:weather-poisoned |
0 | 4 | 2 crit 2 high 2 medi 1 low |
| D | Docs (rug-pull, caught)
local:docs-rugpull |
40 | 1 | 1 crit 1 high |
| A | Notes (clean example)
local:notes-benign |
100 | 2 | clean |
| A | Everything (reference server) (scan failed)
npm:@modelcontextprotocol/server-everything |
100 | 0 | clean |
| A | Filesystem (scan failed)
npm:@modelcontextprotocol/server-filesystem |
100 | 0 | clean |
| A | Memory (scan failed)
npm:@modelcontextprotocol/server-memory |
100 | 0 | clean |
| A | Sequential Thinking (scan failed)
npm:@modelcontextprotocol/server-sequential-thinking |
100 | 0 | clean |
| A | Fetch
pypi:mcp-server-fetch |
100 | 1 | clean |
| A | Git (scan failed)
pypi:mcp-server-git |
100 | 0 | clean |
| A | Time
pypi:mcp-server-time |
100 | 2 | clean |