mcpField
M
MCP Blast-Radius Auditor

MCP Blast-Radius Auditor

Local
raw.githubusercontent.comSecurity0Updated 15w ago

About MCP Blast-Radius Auditor

A static analysis tool for reviewing the capabilities an MCP server may access, including files, network, environment variables, and subprocesses. It helps MCP server maintainers and reviewers inspect exposure, and can compare observed access with a declared manifest.

Key features

  1. 01Static capability and dependency scanning
  2. 02Manifest-to-access divergence checks
  3. 03Advisory and blocking gate modes
  4. 04Confidence labels in JSON reports
  5. 05Optional full-repository scan

Use cases

  1. 01Review an MCP server before installing it
  2. 02Fail CI when access exceeds manifest boundaries
  3. 03Inspect declared and observed capabilities

MCP support

Provides the `aos_compliance_validate` and `aos_compliance_self_test` tools to MCP clients. The stdio server scans a target MCP server directory and reports its static capability surface and any manifest divergences.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"aos-standard-mcp-blast-radius": {
"command": "uvx",
"args": [
"mcp-blast-radius"
]
}
}
}
Run commanduvx mcp-blast-radius

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
pypimcp-blast-radius0.2.8

Tools

5

Saved tool list · updated 2w ago

ParameterTypeRequiredDescription
mockbooleanNo
tool_idanyNo
gate_modeenumNoadvisory | blocking
target_diranyNo

Details

From the project README

MCP Blast-Radius Auditor

AOS audited

See what any MCP server can actually touch — before you add it to your agent.

No manifest? You still get the full blast-radius report. Add a manifest to also catch divergences.

Also, if the server declares a manifest: Catch an MCP server that touches files it said it wouldn't — and block the merge in CI.

Statically extract what a third-party MCP server can reach (files, network, subprocess, env) via surface-level analysis. Compare against declared boundaries when a manifest is present.

Scan scope (default): production package only — excludes tests/, docs/, examples/, scripts/, benchmarks/, .github/, and test_*.py patterns; JSON output includes scan_scope and excluded_file_count. Pass --include-peripheral to scan the full repo.

Try it in 3 steps

① Scan your server in one command

pip install mcp-blast-radius==0.2.5
mcp-blast-radius-gate --gate-mode advisory --target-dir /path/to/your-mcp-server

Point --target-dir at your shipping package root (e.g. src/). Default scope excludes tests, docs, and scripts.

② Read the JSON

FieldWhat it means
gate_passScan finished (advisory = report either way; blocking = exit 1 on divergences)
blocking_reasonsLines starting with DIVERGENCE: = declared vs. observed mismatch (if you ship a manifest)
blast_radiusStatic capability surface (network, subprocess, env, filesystem)
confidence labelsdeclared / observed-static / cannot-determine — static only, upper bounds

Undeclared capability is usually drift, not malice. Treat network/subprocess counts as upper bounds, not confirmed traffic.

③ Apply for an audit badge (optional, opt-in)

Ran a clean scan and want a signed README badge? Open a badge application — paste your command and JSON. Free, 90-day attestation, no phone-home. Criteria: BADGE_CRITERIA.md.

To verify any published attestation independently: pip install cryptography, then run packaging/scripts/verify_attestation.py (accepts local paths or HTTPS URLs). See BADGE_CRITERIA.md §Verify.


Machine-readable metadata

Example walkthrough

git clone --depth 1 https://github.com/oraios/serena.git /tmp/serena
mcp-blast-radius-gate --gate-mode advisory --target-dir /tmp/serena

Inspect blast_radius and any DIVERGENCE: lines in blocking_reasons.

Report a scan question

Open a GitHub issue with your JSON output (structured template loads automatically).

30-second scan

pip install mcp-blast-radius
mcp-blast-radius-gate --gate-mode blocking --target-dir /path/to/mcp-server

pipx run mcp-blast-radius starts the MCP stdio server (for Claude Desktop / Cursor). For CLI scanning, use mcp-blast-radius-gate as above.

  • Red (blocking): divergence detected — code touches paths or capabilities not declared in manifest.
  • Green: no divergences (or no manifest — blast radius report only, advisory pass).

Install

python3 -m venv .venv
source .venv/bin/activate
pip install .

CLI entry

mcp-blast-radius          # MCP stdio server
mcp-blast-radius-gate     # CI gate (default blocking, exit 1 on fail)
CI blocking gate
mcp-blast-radius-gate --gate-mode blocking --target-dir .
# no divergences → exit 0 / divergences or declaration violations → exit 1

MCP tools

  • aos_compliance_validate — scan one MCP server directory (target_dir required; tool_id optional label)
  • aos_compliance_self_test — wiring smoke test

Default gate_mode=advisory. Use gate_mode=blocking in CI to fail on divergences.

What is extracted

LayerScopeConfidence
Dependenciesrequirements.txt, pyproject.toml, package.jsondeclared
Python ASTimports, file I/O, network, env, subprocess; MCP tool attributionobserved-static / cannot-determine
Divergencemanifest permitted_output_paths / oracle_paths vs observed accessblocking when mismatch

Limitations: Static analysis only. Dynamic imports, getattr/eval, obfuscation, and native extensions may hide capabilities. We do not claim complete coverage — every finding includes a confidence label.

Environment

VariablePurpose
AOS_VALIDATOR_TARGET_DIRDefault scan root when target_dir is omitted
AOS_VALIDATOR_MCP_LOGJSONL path for local tool call log (never sent externally)
AOS_VALIDATOR_CALLERCaller label (ci, smoke_self_call, etc.)

Example

aos_compliance_validate target_dir=/path/to/my-mcp-server gate_mode=blocking

License

MIT

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.