Open-source MCP and AI agent security scanner
Is it safe to point an AI agent at this repo?
mcp-audit reads the files an AI coding agent will run or obey, such as MCP server configs, agent settings and instruction files, and tells you what they allow. It runs on your machine. A default scan reads files, never runs them, and makes no network calls.
pip install mcp-audit-scannermcp-audit scan --project . --include-agent-filesThe package is mcp-audit-scanner; the command is mcp-audit. It needs Python 3.11 or later. Standalone binaries for macOS (Apple silicon), macOS (Intel), Linux (x86-64) and Windows (x86-64) are on GitHub Releases.
Install and run For security teams
Current release: 0.21.1, released 2026-10-25. Apache 2.0, every feature free.
What it reads in a repository
your-repo/- Can start a program:
.mcp.json - Read as instructions:
CLAUDE.md .amazonq/- Can start a program:
mcp.json
- Can start a program:
.claude/- Can start a program:
settings.json - Can start a program:
settings.local.json - Read as instructions:
commands/*.md - Read as instructions:
skills/**/SKILL.md - Read as instructions:
CLAUDE.md
- Can start a program:
.cursor/- Can start a program:
mcp.json - Can start a program:
settings.json - Read as instructions:
rules/*.mdc
- Can start a program:
.github/- Read as instructions:
copilot-instructions.md - Read as instructions:
instructions/*.instructions.md - Read as instructions:
prompts/*.prompt.md
- Read as instructions:
.vscode/- Can start a program:
mcp.json - Can start a program:
tasks.json - Can start a program:
settings.json
- Can start a program:
can start a program on your machine is read by the agent as instructions
Taken from the scanner's own discovery lists. The tags are the finding families checked in each file.
Security properties you can check
Each one links to the evidence in the source repository.
- Offline by designA default scan makes no network calls. Every network check is a flag you add.
- Reads, never runsScanned files are parsed, never executed: no servers started, no scripts, no git.
- No telemetryNo usage data, no crash reports and no account to create.
- Signed advisory feedOSV 1.6.0 records signed with the project's minisign key, published weekly.
- Attested releasesPyPI Trusted Publishing with PEP 740 attestations, and a CycloneDX SBOM for every binary.
- 3,818 automated testsThe suite runs on Linux, macOS and Windows with Python 3.11 and 3.12 on every push and pull request.
- OWASP MCP Top 10Findings map to 10 of 10 categories, and CI checks the mapping on every change.
- Measured in publicOur false positives on the top 100 npm servers are published, and GAPS.md lists what we miss.
What it checks
126 finding IDs, grouped by what mcp-audit reads. The catalog shows what each one flags, its severity and its OWASP MCP Top 10 category.
- Repository files that run code5 checks
Files a cloned repository can use to start programs when you open or trust it in an AI editor: project MCP configs, VS Code tasks that run when the folder opens, and symlinks that point somewhere else.
TRUST- Coding-agent settings9 checks
Claude Code settings that skip permission prompts, approve every project server, pre-approve commands that can write or reach the network, or run hook commands that reach the network or touch agent config files.
CFHYGHARNESSHOOK- Agent instruction files6 checks
Text the agent reads as instructions: Claude Code commands, skills and CLAUDE.md, Cursor rules, and Copilot instruction and prompt files. mcp-audit looks for injected orders, hidden characters, outside links and bundled scripts.
MEMSKILL- Claude Code plugins and mods8 checks
Installed plugins whose recorded version does not match their marketplace pin or that follow an unpinned branch, and mods that can approve tool calls, read secrets and send data out, change what Claude reads, or start programs. Mods are read, never run.
MODPLUGIN- MCP server configs14 checks
How each configured server is launched and reached: secrets written into the config, plain-HTTP endpoints, sudo launches, unpinned package fetches, remote servers with no authentication, and config files other users can read or write.
AUTHCFHYGCREDTRANSPORT- Tool descriptions15 checks
Orders hidden in the descriptions an agent reads: exfiltration instructions, prompt-format injection, behaviour overrides, invisible Unicode and lookalike characters. With
--connectit reads live tool lists and flags a tool name claimed by two servers.COLLIDEPOISON- Dangerous combinations of servers8 checks
Servers that are harmless alone but together let an injected prompt read data and send it out, or write a file another server can run.
killchainranks the changes that break the most paths.INTEGTOXIC- Packages and supply chain11 checks
Lookalike package names, recorded advisories for a package, deprecated versions, and missing or mismatched Sigstore provenance. Provenance and hash checks use the network, so they are opt-in.
ATTESTSC- Approved servers and drift14 checks
What changed since you approved a setup: servers added, removed or launched differently, a hand-edited lock file, and, with
--connect, tools added or changed since approval.BLLOCKRUGPULL- Community rules36 checks
YAML rules in an open format that run on every scan: risky launch commands, inline code, shell metacharacters, sensitive variable names, sampling, and more.
COMMSTDIO
Two ways in
The same scanner, from one developer's laptop to every repository and machine in an organisation. Anything that uses the network is opt-in.
For developers
Check a server before you install it
mcp-audit vet @modelcontextprotocol/server-filesystemPublisher, recorded advisories, capabilities and lookalike names, offline.
Scan a cloned repo before your editor trusts it
mcp-audit scan --project . --include-agent-filesProject MCP configs, agent settings, editor auto-run files and instruction files.
Grade your setup and apply safe fixes
mcp-audit checkThe top findings with a fix for each.
mcp-audit fixshows the safe fixes as a diff;--applywrites them.See findings as you work
Use the editor extension for VS Code and Cursor and pre-commit hooks.
For security teams
Gate pull requests in CI
The GitHub Action uploads SARIF to code scanning, fails at the severity you choose and verifies
mcp-lock.jsonagainst the servers you approved.Enforce what is allowed
A
.mcp-audit-policy.ymlfile sets approved servers, a minimum score, transport rules and finding tolerances. Scans find it on their own.See every machine
mcp-audit shadowlists servers nobody approved;mcp-audit mergeturns many machines' scans into one fleet report.Keep evidence
CycloneDX SBOMs, Sigstore-signed snapshots you can replay later, and a PDF report from
scan --report pdf.Feed your vulnerability management
SARIF, Nucleus Security FlexConnect through
push-nucleus, and NDJSON streams for a SIEM.
Fits the tools you already run
Open formats in, open formats out. No agent to deploy and no service to connect.
- GitHub code scanningSARIF output with the OWASP MCP Top 10 taxonomy.
- GitHub ActionsA composite Action, pinned to
v0.21.1, that scans, uploads SARIF and gates the job. - pre-commit2 hooks: a scan, and lock verification that blocks drift.
- VS Code and CursorAn Open VSX extension that shows findings inline as you edit.
- Nucleus SecurityFlexConnect output and a direct push for vulnerability management programs.
- CycloneDXSBOMs and AI/ML-BOM snapshots, optionally signed with Sigstore.
- OSVA signed advisory feed with a bundle osv-scanner can read.
- SIEMNDJSON from
snapshot --streamandshadow --continuous, with Splunk and Sentinel recipes.
Look up a server before you install it
The registry lists 55 MCP server packages (45 npm, 10 PyPI). 26 have a verified publisher. 14 have recorded advisories, and 5 of those have at least one with no fix. Each package has a page and a JSON verdict.
Browse the registry Add your server
Why remote servers matter
- A measurement study found that 40.55% of 7,973 live remote MCP servers expose tools without authentication (arXiv 2605.22333).
AUTH-001flags a remote server in your config that sends no credentials. - Censys counted 12,520 MCP services reachable from the internet (MCP Servers on the Internet).
We publish our false positives
We scanned the 100 most-downloaded MCP servers on npm and published every aggregate number. mcp-audit's poisoning rules raised 661 findings, and none of them was a real attack. 488 of them came from one rule, POISON-060, which the data shows misfiring.
Recent releases
The lead lines of the newest entries in the changelog.
0.21.1 2026-10-25
- Releases: merging a version bump to
mainnow tags and publishes it setuptools84.0.0 → 84.2.1 in the lockfile- Registry: five advisories added from OSV
- Refreshed vulnerable dependencies in the lockfile, which is what the standalone binaries are built from
0.21.0 2026-10-13
scan --connectdropped every tool's input schema withmcp2.xscan --connectread only the first page of a paginated tool list
0.20.0 2026-10-13
- What replaced the approval prompt
- Claude Code mods audit
- Weekly registry advisory check
- Rug-pull docs say what the code hashes
Open source, with nothing held back
mcp-audit is Apache 2.0. Every command ships in the free package: no license keys, no seats, no account and no paid tier. The source, the test suite, the detection sources and the known gaps are all public.
The community rule format is open. Accepted rules are credited in the changelog and in the contributors list.