MCP servers that fail: no unsafe deserialization
87 of the 14,987 Model Context Protocol servers where this control could be evaluated fail it — that is 1% of the evaluated corpus on the Canopii Trust Index.
- Servers failing
- 87
- Failure rate
- 1%
- Average score when failing
- 34/100
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.