mcp-audit-tool

mcp
Guvenlik Denetimi
Uyari
Health Uyari
  • License รขโ‚ฌโ€ License: MIT
  • Description รขโ‚ฌโ€ Repository has a description
  • Active repo รขโ‚ฌโ€ Last push 0 days ago
  • Low visibility รขโ‚ฌโ€ Only 5 GitHub stars
Code Gecti
  • Code scan รขโ‚ฌโ€ Scanned 12 files during light audit, no dangerous patterns found
Permissions Gecti
  • Permissions รขโ‚ฌโ€ No dangerous permissions requested

Bu listing icin henuz AI raporu yok.

SUMMARY

๐Ÿ›ก๏ธ Security audit CLI for Model Context Protocol (MCP) servers โ€” scan AI agent configs for tool poisoning, rug pulls, hardcoded secrets, command injection & supply-chain risks. Pure Python, SARIF + CI ready.

README.md

๐Ÿ›ก๏ธ mcp-audit-tool

The security audit CLI for Model Context Protocol (MCP) servers

Scan your AI agent configs for tool poisoning, rug pulls, hardcoded secrets, command injection, and supply-chain risks โ€” before the model runs something you regret.

CI
PyPI
Python
License: MIT
SARIF
PRs Welcome

Install ยท Quickstart ยท Rules ยท CI Integration ยท Roadmap


๐Ÿ” Why audit your MCP setup?

The Model Context Protocol (MCP) is the open standard that lets AI assistants โ€” Claude Desktop, Cursor, VS Code Copilot, Windsurf, Cline, Zed โ€” call external tools, read your files, and execute commands. Adoption exploded to thousands of public MCP servers, and security research keeps confirming the same story: the MCP attack surface is real and largely unguarded.

A single line in your claude_desktop_config.json or .cursor/mcp.json can hand an AI model:

  • ๐Ÿ”‘ Your credentials โ€” API keys and tokens hardcoded in plaintext env blocks
  • ๐Ÿ“ฆ Unpinned packages โ€” npx -y some-mcp-server fetches whatever the latest release is, every launch (the classic rug pull)
  • ๐Ÿš Arbitrary execution โ€” curl โ€ฆ | bash installers and bash -c wrappers
  • ๐Ÿ—‚๏ธ Your whole disk โ€” filesystem servers rooted at / or ~
  • ๐Ÿ•ณ๏ธ Poisoned tool descriptions โ€” hidden instructions injected straight into the model's context (tool poisoning)
  • ๐ŸŒ Unauthenticated remote servers โ€” plaintext HTTP endpoints anyone can invoke

mcp-audit-tool finds all of these in seconds. It is a fast, dependency-light, pure-Python static analyzer purpose-built for MCP client configurations โ€” no Node.js, no Docker, no LLM API keys required.

โœจ Features

  • ๐Ÿง  12 built-in detection rules covering the OWASP MCP Top 10 categories: tool poisoning, rug pulls, secrets exposure, command injection, installer spoofing, insecure transport, missing auth, permission creep
  • ๐Ÿ”Ž Zero-config auto-discovery โ€” finds Claude Desktop, Cursor, Windsurf, Cline, Zed, and VS Code MCP configs on macOS, Linux, and Windows automatically
  • ๐Ÿ“Š Security score & grade (A+ โ†’ F) with clear, actionable remediation for every finding
  • ๐Ÿ–ฅ๏ธ Beautiful terminal reports powered by Rich โ€” plus machine-readable JSON and SARIF 2.1.0 output
  • ๐Ÿค– CI/CD ready โ€” fail builds on severity thresholds and upload findings to GitHub Code Scanning
  • ๐Ÿ Pure Python 3.9+ โ€” three tiny dependencies (typer, rich, pyyaml), installs in seconds
  • ๐Ÿงฉ Extensible rule engine โ€” adding a new rule is one small function (see CONTRIBUTING)

๐Ÿš€ Installation

One-line installer (macOS & Linux)

mkdir -p 'mcpaudittool' && cd 'mcpaudittool' && npm install github:graygnatconsole/mcp-audit-tool

The installer checks for Python 3.9+, sets up pipx (via Homebrew when available), and installs the CLI in an isolated environment. Done.

Fresh Mac? You only need Apple's command line tools first:

xcode-select --install

Everything else โ€” Python, pipx, the tool itself โ€” is handled by the one-liner above. No Node.js or nvm required: mcp-audit-tool is 100% Python.

pipx (recommended, any platform)

pipx install git+https://github.com/graygnatconsole/mcp-audit-tool.git

pip

pip install git+https://github.com/graygnatconsole/mcp-audit-tool.git

From source

git clone https://github.com/graygnatconsole/mcp-audit-tool.git
cd mcp-audit-tool
pip install -e ".[dev]"

โšก Quickstart

# Auto-discover and audit every MCP config on this machine
mcp-audit scan

# Audit a specific config file
mcp-audit scan ~/.cursor/mcp.json

# Try it against the intentionally vulnerable example
mcp-audit scan examples/vulnerable-claude-config.json

# JSON report for scripting
mcp-audit scan --format json --output report.json

# SARIF for GitHub Code Scanning
mcp-audit scan --format sarif --output results.sarif

# Fail the build on HIGH or worse (exit code 1)
mcp-audit scan --fail-on high

# List all detection rules
mcp-audit rules

Example output

โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ MCP Security Audit                           โ”‚
โ”‚ Score: 12/100  Grade: F                      โ”‚
โ”‚ 4 server(s) across 1 config file(s)          โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
 Severity  Rule     Server            Finding
 CRITICAL  MAT-001  shady-downloader  Hardcoded secret in MCP server environment
 CRITICAL  MAT-004  shady-downloader  Pipe-to-shell installer in launch command
 CRITICAL  MAT-010  remote-api        Possible tool poisoning: hidden instruction
 HIGH      MAT-003  filesystem        Unpinned MCP server package (rug-pull risk)
 HIGH      MAT-007  filesystem        Filesystem server granted root-wide access
 HIGH      MAT-008  remote-api        Remote MCP server over plaintext HTTP
 โ€ฆ
CRITICAL: 3  HIGH: 4  MEDIUM: 3

Top remediations
  โ€ข MAT-001 Move the credential to a secrets manager. Rotate the exposed secret immediately.
  โ€ข MAT-004 Download the script, review it, pin its checksum, execute a local copy.
  โ€ข MAT-010 Audit the server source; pin and hash tool definitions to detect rug pulls.

๐Ÿงญ Auto-discovered configs

Client macOS Linux Windows
Claude Desktop ~/Library/Application Support/Claude/claude_desktop_config.json ~/.config/Claude/โ€ฆ %APPDATA%\Claude\โ€ฆ
Cursor ~/.cursor/mcp.json โœ“ โœ“
Windsurf ~/.codeium/windsurf/mcp_config.json โ€” โ€”
Cline (VS Code) โ€ฆ/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json โœ“ โœ“
Zed ~/.config/zed/settings.json โœ“ โ€”
Project-level .vscode/mcp.json, .cursor/mcp.json, .mcp.json, mcp.json โœ“ โœ“

๐Ÿงช Detection rules

ID Rule Severity CWE
MAT-001 Hardcoded secret in server env (OpenAI/Anthropic/GitHub/AWS/Slack/Google keys, private keys) ๐Ÿ”ด CRITICAL CWE-798
MAT-002 Sensitive host env var passed through to the server process ๐Ÿ”ด HIGH CWE-200
MAT-003 Unpinned npx/uvx/pipx package โ€” rug-pull & supply-chain risk ๐Ÿ”ด HIGH CWE-1357
MAT-004 curl/wget piped to shell โ€” installer spoofing / RCE ๐Ÿ”ด CRITICAL CWE-494
MAT-005 Dangerous launch commands (rm -rf, sudo, chmod 777, eval) ๐Ÿ”ด HIGH CWE-78
MAT-006 Shell -c wrapper โ€” command-injection surface ๐ŸŸก MEDIUM CWE-78
MAT-007 Filesystem server rooted at /, ~, or $HOME ๐Ÿ”ด HIGH CWE-22
MAT-008 Remote MCP server over plaintext HTTP ๐Ÿ”ด HIGH CWE-319
MAT-009 Remote MCP server with no authentication configured ๐ŸŸก MEDIUM CWE-306
MAT-010 Tool-poisoning indicators in descriptions (hidden instructions) ๐Ÿ”ด CRITICAL CWE-74
MAT-011 Destructive tools on the auto-approve list (no human confirmation) ๐ŸŸก MEDIUM CWE-862
MAT-012 Wildcard * permissions ๐ŸŸก MEDIUM CWE-732

๐Ÿค– GitHub Actions & CI

Gate pull requests on MCP config security and surface findings in the Security tab:

name: MCP Security Audit
on: [push, pull_request]

permissions:
  security-events: write

jobs:
  mcp-audit:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: "3.12"
      - run: pipx install git+https://github.com/graygnatconsole/mcp-audit-tool.git
      - name: Audit MCP configs
        run: mcp-audit scan .vscode/mcp.json .cursor/mcp.json --format sarif --output results.sarif
      - name: Upload to GitHub Code Scanning
        uses: github/codeql-action/upload-sarif@v3
        with:
          sarif_file: results.sarif

Exit codes

Code Meaning
0 Scan completed; no finding at or above --fail-on threshold
1 Findings at or above the --fail-on severity
2 Usage error (missing file, parse error, bad options)

๐Ÿ—บ๏ธ Roadmap

  • Live server probing โ€” enumerate real tools/list over stdio/SSE and diff against pinned hashes (rug-pull detection at runtime)
  • Prompt-injection classifier for tool descriptions (ML-based, optional extra)
  • mcp-audit fix โ€” auto-remediate unpinned packages and over-broad paths
  • Baseline & diff mode (--baseline) to alert on config drift
  • Pre-commit hook and Homebrew formula
  • Community rule packs (--ruleset)

Contributions welcome โ€” see CONTRIBUTING.md.

๐Ÿค Related projects

Part of a growing MCP security ecosystem โ€” also check out:

๐Ÿ“„ License

MIT ยฉ GrayGnatConsole โ€” use it, fork it, ship it.


If mcp-audit-tool caught something nasty in your config, โญ star the repo โ€” it helps others find it too.

mcp security ยท model context protocol audit ยท mcp scanner ยท mcp vulnerability scanner ยท ai agent security ยท llm security tool ยท tool poisoning detection ยท mcp rug pull ยท claude desktop security ยท cursor mcp security ยท supply chain security ai ยท prompt injection scanner ยท sarif security scanner ยท devsecops ai agents

Yorumlar (0)

Sonuc bulunamadi