Scan, enumerate, and risk-score MCP servers configured on your machine to understand their declared capabilities and access levels.
Also known as saagpatel/MCPAudit, mcpaudit, mcp-audits
- Stars
- 4
- Tools
- —
- Downloads, 30 days
- 736
- Latest version
- 3.0.0
- Last commit
- Nov 10, 2026
- License
- MIT
What is audit MCP?
audit is an MCP server. Scan, enumerate, and risk-score MCP servers configured on your machine to understand their declared capabilities and access levels.
Summary generated from the project's README
About audit MCP server
Scanning and risk-scoring the MCP servers on your machine is what mcp-audit enables for developers and security-conscious users. This tool reviews configuration files to identify declared capabilities, instruction-based heuristics, and changes from saved pins. It helps you understand the access levels and tool exposure of your AI ecosystem without needing to manually inspect every JSON configuration.
You can run audits in several ways, starting with a static review of supported configurations or targeting a specific file with the check command. For deeper analysis, the connect and connect-all options allow the tool to start local programs or contact endpoints to list the actual tools a server exposes. The system provides findings as review signals, where higher scores indicate broader capability exposure rather than confirmed malicious intent.
Integration into automated workflows is possible through SARIF output and local policy evaluation. While the tool reports environment variable key names for context, it never reports their actual values. Users can also generate HTML share cards for quick previews of findings.
What you can do with it
- 1Perform a static configuration reviewAnalyze a specific MCP configuration file without establishing any network or process connections.
- 2Audit a fleet of local serversConnect to all configured workstation servers to discover their actual tool metadata and capabilities.
- 3Automate security policy enforcementEvaluate local policy files and output results in SARIF format for use in continuous integration pipelines.
- 4Monitor changes against a baselineCheck the current status of your servers against a previously saved pin to identify new capabilities.
Written from the project's README. Every use case is checked against a quote from it.
How to install audit MCP
Formats verified 10 Nov 2026Add to CursorAdd to GooseInstall audit MCP in Claude Code
$ claude mcp add mcpaudit -- uvx mcp-auditsInstall audit MCP in Cursor
~/.cursor/mcp.json
{
"mcpServers": {
"mcpaudit": {
"command": "uvx",
"args": [
"mcp-audits"
]
}
}
}Install audit MCP in VS Code
.vscode/mcp.json
{
"servers": {
"mcpaudit": {
"type": "stdio",
"command": "uvx",
"args": [
"mcp-audits"
]
}
}
}Install audit MCP in VS Code CLI
$ code --add-mcp '{"name":"mcpaudit","type":"stdio","command":"uvx","args":["mcp-audits"]}'Install audit MCP in Claude Desktop
claude_desktop_config.json
{
"mcpServers": {
"mcpaudit": {
"command": "uvx",
"args": [
"mcp-audits"
]
}
}
}Install audit MCP in Codex
$ codex mcp add mcpaudit -- uvx mcp-auditsInstall audit MCP in Codex config.toml
~/.codex/config.toml
[mcp_servers.mcpaudit] command = "uvx" args = ["mcp-audits"]
Install audit MCP in Gemini CLI
$ gemini mcp add -s user mcpaudit uvx -- mcp-auditsInstall audit MCP in Gemini settings.json
~/.gemini/settings.json
{
"mcpServers": {
"mcpaudit": {
"command": "uvx",
"args": [
"mcp-audits"
]
}
}
}Automated checks
Ran Nov 14, 2026Full report →Passed our automated checks. That is not a security audit: read the code and give the server the narrowest access it needs. How checks work
- Source repository linked and reachablesaagpatel/mcpaudit is public and reachablegithub.com/saagpatel/mcpaudit ↗Pass
- Package names this repository as its sourcemcp-audits names saagpatel/mcpaudit as sourcepypi.org/project/mcp-audits/ ↗Pass
- Build provenance (Sigstore attestation)Sigstore attestation for mcp-auditspypi.org/project/mcp-audits/ ↗Pass
- Open source license (OSI)MITspdx.org/licenses/MIT.html ↗Pass
- Commit or release in the last yearLast commit or release 2026-11-10github.com/saagpatel/mcpaudit ↗Pass
- OpenSSF ScorecardNot checked
- Package name not close to a popular packageNo popular package one edit away from mcp-auditsPass
- No critical advisory in the package or its dependencies35 resolved dependencies checked; no critical advisoryosv.dev ↗Pass
- No hidden instructions to the model0 tool descriptions and the README read; no override phrases, credential paths or hidden charactersPass
- Destructive tools are labelledNot checked
- Remote endpoint answers the MCP handshakeNot checked
README
View on GitHubmcp-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.
[!IMPORTANT] The package is
mcp-audits; the command ismcp-audit. The default check is static.check --connectand--connect-allcan start configured local programs or contact configured endpoints. Legacyscannever connects: it refuses connecting forms with exit 2 before discovery. Package verification, downloads, and LLM analysis are separate opt-in operations. MCPAudit does not edit configs, and reports environment variable key names, never their values. Review generated reports before sharing them.
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@v3.0.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 |
| Inspect a fleet | mcp-audit check --connect-all |
Connects to workstation servers; add --connect-project-configs for projects |
| Automate a policy | mcp-audit check --policy FILE |
Evaluates a local policy |
| Review a saved pin | mcp-audit pin --status |
Shows baseline status; pin is the visible alias for baseline pin |
The server ID is CLIENT:SCOPE:NAME; use the exact identity from inspect to avoid ambiguous selections. Connected checks can start configured local commands or contact their endpoints.
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.
Status
Stack
MCPAudit uses Python 3.11+, uv, pytest, Ruff, and mypy. JSON, SARIF, and HTML reports are versioned public surfaces. Run make check before proposing changes.
Known risks
Static findings describe configured access and served metadata; they do not prove how a server behaves later. Secret redaction is best-effort. Upgrading from 2.x? Read the 3.0 migration guide; the 3.0 boundary proposal records the decisions behind it.
Next steps
Use explicit synthetic fixtures for local changes, preserve read-only defaults, and keep coverage claims tied to completed checks. Re-enable Python 3.15 after an rpds-py/PyO3 lock refresh.
More documentation
Explore pinning, shadow review,
suppressing findings, the trust packet guide,
MCP trust packet, output contract, and
sandbox fixtures. See the documentation index, labs,
maintainer procedures in maintainers/, and older material in archive/.
audit MCP questions
How do I add audit MCP to Claude Code?
Run claude mcp add mcpaudit -- uvx mcp-audits in your terminal. Add --scope user to make it available in every project.
How do I add audit MCP to Cursor?
Open ~/.cursor/mcp.json and add the server under mcpServers, using the Cursor config shown in the install section above.
Does a high risk score mean a server is malicious?
No, a high score indicates broader capability exposure rather than confirming a server is malicious or unsafe.
Does mcp-audit edit my configuration files?
No, the tool does not perform any edits to your configuration files.
Can I use mcp-audit in my CI/CD pipeline?
Yes, it can write SARIF reports and evaluate local policy files for use in automated workflows.
Does the tool report my environment variable values?
No, it only reports the names of the environment variable keys to provide context without exposing secrets.