MCP servers that fail: no unsafe deserialization
100 of the 24,453 Model Context Protocol servers where this control could be evaluated fail it — that is 0% of the evaluated corpus on the Canopii Trust Index.
- Servers failing
- 100
- Failure rate
- 0%
- Average score when failing
- 35/100
A further 13 servers warn on this control — a weaker signal we could not confirm, counted at half weight rather than as a failure.
Why this matters
pickle/yaml.load/etc. on untrusted data can execute code.
How to pass it
Use safe loaders (yaml.safe_load, JSON) on untrusted input.
Control id code.no_unsafe_deserialize — a guard control, so a confirmed failure caps the server's score at the high ceiling no matter what else passes.
Affected servers
We publish this count, not a list of targets. A confirmed high-severity failure of this control is a directly exploitable weakness. Each affected server's own page carries its result and evidence, so nothing is hidden from someone evaluating a specific server — but we will not publish a ranked list of exploitable systems, which is a different artifact serving a different reader.
Running one of these? The directory and the open-source scanner will tell you where you stand.
This control is one of 29 in the published rubric — see how scoring works or how the ecosystem fails every other control.