Skip to main content

Security scanner for MCP bundles. Powers mpak Certified verification.

Project description

mpak-scanner

CI PyPI Python License

Security scanner for MCP bundles (.mcpb). Reference implementation of the mpak Trust Framework (MTF), an open security standard for MCP server packaging.

Built by NimbleBrain, mpak-scanner powers the mpak Certified verification on the mpak registry, analyzing bundles for supply chain risks, code quality issues, and compliance with the MTF specification.

What it does

mpak-scanner analyzes MCP bundles (.mcpb files) for security issues before installation:

  • Supply Chain: SBOM generation, vulnerability scanning, dependency analysis
  • Code Quality: Secret detection, malicious pattern detection, static analysis
  • Artifact Integrity: Manifest validation, content hashes, signatures
  • Provenance: Source repository verification, author identity, build attestation
  • Capability Declaration: Tool declarations, permission scopes

Compliance Levels

The scanner evaluates bundles against four compliance levels defined in the MTF specification:

Level Name Target Controls
L1 Basic Personal projects 6
L2 Standard Team tools, published packages 12
L3 Verified Production, enterprise 17
L4 Attested Critical infrastructure 20

Installation

# Install with uv (recommended)
uv pip install mpak-scanner

# Or with pip
pip install mpak-scanner

External Tools

The scanner integrates with these tools for deeper analysis. Controls gracefully skip if a tool is not installed.

Tool Purpose Install
Syft SBOM generation brew install syft
Grype Vulnerability scanning brew install grype
TruffleHog Secret detection brew install trufflehog
GuardDog Malicious package detection uv pip install guarddog
Bandit Python static analysis uv pip install bandit
ESLint JavaScript static analysis npm install -g eslint eslint-plugin-security

Usage

Command Line

# Scan a bundle
mpak-scanner scan bundle.mcpb

# Output JSON report
mpak-scanner scan bundle.mcpb --json

# Check specific compliance level
mpak-scanner scan bundle.mcpb --level 2

Python API

from mpak_scanner import scan_bundle

report = scan_bundle("bundle.mcpb")
print(f"Compliance Level: {report.compliance_level}")
print(f"Risk Score: {report.risk_score}")

for finding in report.findings:
    print(f"[{finding.severity}] {finding.control}: {finding.message}")

Specification

This scanner implements the mpak Trust Framework (MTF). See the full specification for details on compliance levels, controls, and verification methods.

Development

# Install dev dependencies
uv sync --dev

# Run all tests
uv run pytest

# Lint and format
uv run ruff check src/ tests/
uv run ruff format --check src/ tests/

# Type check
uv run ty check src/

# Full verification
uv run ruff check src/ tests/ && uv run ruff format --check src/ tests/ && uv run ty check src/ && uv run pytest

Test Fixtures

The scanner ships with test fixtures for validation:

Fixture Tests Expected
clean-l1-bundle/ Valid L1 bundle All controls pass
has-secrets-bundle/ CQ-01 detection Fails with secret findings
invalid-manifest-bundle/ AI-01 validation Fails on missing fields
missing-tools-bundle/ CD-01 validation Fails on tool issues
has-vulns-bundle/ SC-02 detection Fails with CVE findings
node-server-bundle/ Node.js bundle All controls pass
unsafe-node-bundle/ CQ-05 detection Fails with unsafe patterns

See tests/fixtures/README.md for details.

Related Projects

Contributing

See CONTRIBUTING.md for how to add new controls or improve detection rules.

License

Apache License 2.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mpak_scanner-0.2.4.tar.gz (138.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mpak_scanner-0.2.4-py3-none-any.whl (79.0 kB view details)

Uploaded Python 3

File details

Details for the file mpak_scanner-0.2.4.tar.gz.

File metadata

  • Download URL: mpak_scanner-0.2.4.tar.gz
  • Upload date:
  • Size: 138.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.13

File hashes

Hashes for mpak_scanner-0.2.4.tar.gz
Algorithm Hash digest
SHA256 2fed89d5200175dfd53e3ab0a04a3aa51b0a5bf925999e516997e5245e0f0ebd
MD5 4856c826a9c072d0dbb521ab23c7d64d
BLAKE2b-256 ec505e640b37cd39e6badfd86c564d8b35af13087fddfa45c0b5b5e510f71454

See more details on using hashes here.

File details

Details for the file mpak_scanner-0.2.4-py3-none-any.whl.

File metadata

File hashes

Hashes for mpak_scanner-0.2.4-py3-none-any.whl
Algorithm Hash digest
SHA256 3df87a10bfadcb5a3913feb7c667acfa330951ce00f74a5956fad73634a12c23
MD5 fd64248fe9ec4b9b64399e3c117dbd7b
BLAKE2b-256 57a315605c6bb9af97d9d4b58d0fd50cf4f6ef536425c9294e2e3d12e49ac491

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page