mcp-audit
See what your AI tools' MCP servers can reach.
MCPAudit reviews MCP server configuration and, when asked, lists the tools a server exposes. It highlights declared capabilities, instruction-shaped text heuristics, and changes from a saved pin so you can decide what to investigate. Findings are review signals: a high score means broader capability exposure, not that a server is malicious or unsafe.
Try it
mcp-audit # static review of supported configs
mcp-audit check --config ./mcp.json # review this file only; no connections
mcp-audit demo # see a bundled synthetic example
mcp-audit explain MCP007 # explain a finding offline; no config reads
Install with uv:
uv tool install mcp-audits
Or run without installing:
uvx --from mcp-audits mcp-audit demo
What to do with a finding
Start with the suggested action and inspect the named capability or evidence. For example, if a filesystem server can write broadly, restrict its configured directory and review the report again. Pattern-based instruction checks can miss reworded or obfuscated text and can also need human review. A clean report is not a safety certificate.
Review the server's configured access, narrow it if needed, then run the check again.
Use Start here for a guided walkthrough and Reading results to interpret scores, findings, and coverage. How it works explains the check boundary.
Each rule's meaning, possible consequences, manual fix and confidence limits are
in the finding reference; mcp-audit explain MCP013
prints the same entry offline. Explicit --config sources are labeled
"explicit file; parsed as Claude-style config"; the parser identity does not
establish which client uses that file.
Static tool metadata checks also flag malformed MCP header annotations, credential parameters mapped to headers, external schema references and unexpected icon sources. These checks inspect served metadata without fetching schemas or icons.
Use in CI
MCPAudit can write SARIF and evaluate local policy files. Begin with config-only CI, then enable connected checks only where the workflow should start those servers. See the CI guide and policy examples.
For a pinned release example, the composite Action can upload SARIF to GitHub code scanning:
- uses: saagpatel/MCPAudit@v2.9.0
The release checklist calls out Action references so maintainers can update examples when a new public release is available. Review the action's permissions and inputs before enabling it in a repository.
Choose a review path
| Goal | Starting point | What it does |
|---|---|---|
| Learn the output | mcp-audit demo |
Uses bundled synthetic input |
| Review one file | mcp-audit check --config FILE |
Static check of the selected config |
| Make a share card | mcp-audit checkup --config FILE --card checkup.html |
Writes a local counts-only HTML Preview |
| See discovered sources | mcp-audit inspect |
Lists identities and source status |
| Inspect one server | mcp-audit check --connect --server ID |
Connects to one unambiguous identity |
| Automate a policy | mcp-audit check --policy FILE |
Evaluates a local policy |
The ID for a connected check has the form CLIENT:SCOPE:NAME. Use the exact
identity shown by inspect; the command refuses ambiguous selections. A
connected check can start the configured local command or contact its endpoint.
checkup writes a local, counts-only share card with no names by default; see
the checkup guide.
Keep the evidence in context
Configuration-based findings describe declared access. A connected listing
adds the tool metadata the server provides, but does not prove what the server
will do later. Connected HTTP scans also send one credential-free
server/discover request and, on 401, review bounded public authorization
metadata. The probe never uses configuration header values and does not run
with --skip-connect or for project sources without connection opt-in.
These observations do not prove a completed OAuth flow. The optional canary is bounded and exercises only eligible
tools under its documented limits. See How it works
for the boundary between those observations.
Reports can contain configuration shape, tool names, and evidence text. Secret redaction is best-effort (known issues); review a report before sharing it. Configs are parsed in full, but environment variable values are discarded during parsing and never reported; reports keep key names for context. The output contract lists stable fields and the limits of these outputs.
More documentation
The documentation index links current guides and references.
The sandbox walkthrough is safe to try without
connecting to a server. Experimental fixture-based work is grouped under
labs; maintainer-only procedures are in
maintainers/, with older 1.x material in archive/.
Learn more
- Pinning and drift checks
- Trust packet walkthrough and the MCP trust packet
- Adjusting permission findings
- Sandbox walkthrough using the
examples/sandbox/fixtures - Output contract
- Documentation index
Experimental, fixture-based tools are documented in the labs.
Maintainer procedures and project history live in maintainers/
and archive/.
Metadata
Release files for mcp-audits 2.9.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| mcp_audits-2.9.0.tar.gz | 435.1 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mcp_audits-2.9.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 924.5 kB
Release files / mcp_audits-2.9.0.tar.gz
| Download URL | mcp_audits-2.9.0.tar.gz |
|---|---|
| Size | 435.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f0b6dea9ceb3dfd3a36f4666781f6b28f74843d65fe314936540a891c2a84669
|
|
BLAKE2b-256 checksum How to use checksums |
abce53930411dbc6f52f676c1fb7f0fa4750961eaf216bc38f5a62df21d5f599
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.
Transparency logRelease files / mcp_audits-2.9.0-py3-none-any.whl
| Download URL | mcp_audits-2.9.0-py3-none-any.whl |
|---|---|
| Size | 489.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9de6dba75f7318867b1b5b78b59bb6657a75d96fa33f8e7da200357eca5a79c0
|
|
BLAKE2b-256 checksum How to use checksums |
7f08a16dfd596b644aed8cbb7953430367d78c85f07178a56a3246e76dba9b4e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.
Transparency logSecurity for mcp-audits 2.9.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for mcp_audits-2.9.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.