Quantum Readiness Scan
PYPI · QRP-MCP
Local crypto inventory for developers and AI agents; coverage and limits inside the CBOM.
Available components
Last scanned (13 hours ago)
Scores higher than 82% of PyPI servers
Category Security
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security100
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- Runs hatchling.build at install time, a recognised build step with no custom scripting around it. View diagnostics → Pass
- 1 of 28 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency45
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (Apache-2.0).Pass
- Actively maintained (last published 0 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability63
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 1859 tokens (~371/item across 5 items; 5 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
- No destabilizing schema changes in the last 30 days.Pass
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 5 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 5 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 25 Oct 26 +15
- Malware scan: unverified → pass ▲ security
- 24 Oct 26 0
- Malware scan: unverified → pass ▲ security
- Package version: 0.35.0 → 0.36.0 functional
- 23 Oct 26 0
- Malware scan: unverified → pass ▲ security
- Package version: 0.33.0 → 0.35.0 functional
- Package version: 0.33.0 → 0.34.0 functional
- 22 Oct 26 0
- Stability: pass → unverified ▼ security
- Tool safety: pass → unverified ▼ security
- Malware scan: unverified → pass ▲ security
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- Package version: 0.29.1 → 0.33.0 functional
- Package version: 0.29.1 → 0.32.0 functional
- Package version: 0.31.0 → 0.32.0 functional
- 21 Oct 26 −15
- Malware scan: pass → unverified ▼ security
- Package version: 0.30.0 → 0.31.0 functional
- 18 Oct 26 +15
- Malware scan: unverified → pass ▲ security
- 17 Oct 26 −15
- Malware scan: pass → unverified ▼ security
- Stability: 0.97 → pass security
- Package version: 0.29.1 → 0.30.0 functional
- 16 Oct 26 0
- Stability: pass → 0.97 functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 25 Oct 2026 · Analysed pypi/qrp-mcp@0.36.0
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | pypi |
| Reason | No attestation published |
Background: How many MCP packages publish verified provenance →
Install scripts 1 script
| Hook | Tier | Command |
|---|---|---|
| build_backend | allowlisted | hatchling.build |
Background: Why install scripts are a supply-chain risk →
Dependencies 28 packages
| Packages resolved | 28 |
|---|---|
| No linked repository | 1 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
compare_coverage ~228
Say whether two scans produced numbers that can be compared at all. Two coverage percentages can differ because the estate moved, because the instrument moved, or because the corpus was collected differently, and the percentages show none of the three. This reads the pins and conditions in both blocks and answers with one of three verdicts. `comparable` means nothing that moves the number differs. `not_comparable` lists which conditions differ, each with what it means, so the reader knows whether to re-run, re-clone or ignore it. `unestablished` means the blocks do not carry enough to decide -- an unpinned corpus, or an emitter that names no commit -- which is a different situation from a known difference and has a different repair. Use it before putting two coverage figures in one table. Do not use it to compare findings; it reads conditions, not results.
| Name | Type | Req | Description |
|---|---|---|---|
| first | object | yes | The `coverage` block from one scan result. |
| second | object | yes | The `coverage` block from another scan result. |
Structured output declared, but exposes no named fields.
No examples provided.
export_cbom ~389
Scan one directory and return a CycloneDX 1.6 CBOM that carries its own coverage. Same reading as `scan_repo`; a different document. Use this when the result has to leave the machine -- an auditor, a customer, a pipeline artefact -- and `scan_repo` when a person or an agent is going to read it here. What the document carries beyond the components: `compositions.aggregate` states how complete the list is in the schema's own vocabulary, `complete` only when every file present was examined; `properties` carries the whole coverage block flattened, including every file not examined with its reason; and each asset carries `evidence.occurrences` with file, line and matched text. The coverage block travels as `properties` because the CycloneDX root object is `additionalProperties: false` and the format has no field for it. That is the point of emitting it this way rather than a limitation to work around. The serial number is derived from the target, the two pins and a digest of the findings, so two runs of the same code over the same corpus that find the same things share it and a different result does not. The timestamp and coverage window record when each run happened. The matched text in `evidence.occurrences` is masked by default, for the reason given on `scan_repo` and one more: this document is the one built to be sent. An auditor needs the algorithm, the file and the line; the contents of the line are not part of the claim being made.
| Name | Type | Req | Description |
|---|---|---|---|
| level | string | – | How much of each matched line to carry in `evidence.occurrences`. Same three levels and the same default as `scan_repo`. |
| path | string | yes | Directory to scan and export, same argument as `scan_repo`. |
Structured output declared, but exposes no named fields.
No examples provided.
list_algorithms ~163
List every algorithm family this server can recognise, and how each is classified. Returns the whole table: family name, classification (classical and quantum-vulnerable, post-quantum, symmetric, hash, or deprecated) and the kind of use it stands for. Reads no files and takes no arguments. Use this to check coverage before trusting a scan -- whether a scheme the project depends on is one this server knows at all -- or to explain a classification without scanning. To find what a particular directory uses, use `scan_repo` instead; this tool never looks at a codebase. An algorithm absent from this table is reported as `unknown` by a scan, which is not the same as absent from the code.
Input schema present but exposes no named parameters.
Structured output declared, but exposes no named fields.
No examples provided.
prove_closure ~359
Say which findings a change actually closed, by comparing two saved scans of one tree. First it decides whether the two runs can be compared for closure at all: the same instrument commit, version, rules, file types and exclusions, both trees pinned to a commit and clean, both results quoting lines at the same level. The trees themselves may differ -- that difference is what is measured. If the runs cannot be compared, nothing is reported as closed and the repair is named. Only then does it match every occurrence without its line number: `closed` (present before, absent from every file the second run read), still open (and how many only moved lines), `relocated` to another path (renamed or moved, not fixed), `removed` (the whole file is gone from the second tree -- not counted as closed), moved into or out of test code, `new`, and `unverifiable` (in a file the second run did not read). A file the second run could not open is never counted as fixed. To keep the verdict as a file that names the two scans it judged, run `qrp-mcp closure BEFORE AFTER --out FILE`. Use it after a fix, to evidence the fix. Do not use it to compare coverage figures between two estates -- `compare_coverage` answers that. It reads two local files and nothing else.
| Name | Type | Req | Description |
|---|---|---|---|
| after | string | yes | Path to the JSON result of the scan made AFTER the change, same tree, same instrument, same level. |
| before | string | yes | Path to the JSON result of the scan made BEFORE the change (`qrp-mcp scan PATH --out FILE`). |
Structured output declared, but exposes no named fields.
No examples provided.
scan_repo ~720
Inventory the cryptography inside one local directory tree, file by file. Reads source, configuration (nginx.conf, sshd_config, .ini, .toml), CI pipelines, Terraform and Kubernetes manifests under `path`. Returns each algorithm found with its file and line, the mathematical family and standing of every post-quantum scheme, and a coverage count. Use this to answer what a specific project on this machine actually uses. Do not use it to ask whether this server knows a given algorithm, or to explain how one is classified without scanning anything -- `list_algorithms` answers that from the same table and reads no files. It is also the wrong tool for a network endpoint, a running host or a certificate store: it opens files on disk and nothing else. Coverage is reported as a fraction with a base. `files_scanned + unreadable_files + files_skipped_by_type + the linked files in symlinks_not_followed == files_present`; a link is not followed and is named, not read. A file that could not be opened is listed, never counted as scanned, because no findings in a file nobody read is not the same as a file that is clean. Files skipped because this tool does not claim their type are counted by extension, so the reader can judge the boundary rather than assume past it. Cost scales with the size of the tree, so a large monorepo takes proportionally longer; there is no cache and no partial mode. Quoted lines are masked by default. Reading happens on this machine, but this result does not stay on it: it is returned to a model, which is a place the scanned line has not been before. A secret sharing a line with a finding -- a token in the call that names the cipher -- would travel with it. Masking keeps what a reader needs (the algorithm, the file, the line number, the shape of the call) and removes what nobody asked for. Pass `level="full"` when the line itself is the thing being examined.
| Name | Type | Req | Description |
|---|---|---|---|
| level | string | – | How much of each matched line to return. `masked` (the default) keeps the characters that spell the algorithm and stars every other letter and digit; `full` returns the line as written; `trimmed` ret… |
| path | string | yes | Directory to scan, absolute or relative to the working directory: a checked-out repository, a service directory, a config tree. Vendored, build and cache directories (.git, node_modules, vendor, venv… |
| profile | string | – | Whose rules each `replacement` follows. `nist` (the default) is FIPS 203/204/205. The others read one national document each and say whom it addresses: us-cnsa2 (NSA, US National Security Systems), u… |
Structured output declared, but exposes no named fields.
No examples provided.
How do I install the Quantum Readiness Scan MCP server?
Quantum Readiness Scan runs locally as a PyPI package, launched with uvx qrp-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
pypi · qrp-mcp
claude mcp add eu-quantumreadiness-qrp-mcp -- uvx qrp-mcp
What is the Quantum Readiness Scan MCP server?
Quantum Readiness Scan is an MCP server listed in the public MCP registry as eu.quantumreadiness/qrp-mcp. Local crypto inventory for developers and AI agents; coverage and limits inside the CBOM. This page covers its PyPI package (qrp-mcp).
Is the Quantum Readiness Scan MCP server safe to use?
Quantum Readiness Scan scores 82 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 25 October 2026. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Quantum Readiness Scan MCP server expose?
Quantum Readiness Scan exposes 5 tools: scan_repo, list_algorithms, export_cbom, compare_coverage, prove_closure. Their descriptions and schemas cost roughly 1,859 tokens of context every time the server is loaded.
Is the Quantum Readiness Scan MCP server still maintained?
Quantum Readiness Scan is still listed as active in the MCP registry. We last reached this channel on 25 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the Quantum Readiness Scan MCP server under?
Quantum Readiness Scan declares the Apache-2.0 licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.