MCP Shield

Official registry Security

Security scanner for MCP servers. SSRF, path traversal, injection, auth, secrets. Grade A-F.

What can you do with MCP Shield?

  • Zero dependencies — Pure Python, no pip installs required
  • 20 security rules across SSRF, path traversal, injection, auth, config, and logging
  • CWE references — Every finding maps to a Common Weakness Enumeration ID
  • Actionable fixes — Each finding includes specific remediation steps
  • A-F grading — Instant security posture assessment
  • Dual mode — Run as CLI or as an MCP server inside Claude Code
  • Fast — Scans a typical MCP server in under 1 second

Install

Add this to your client's MCP configuration (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json; VS Code and others use the same "mcpServers" shape).

NPM package @sophiacave/mcp-shield
Claude Code
claude mcp add mcp-shield -- npx -y @sophiacave/mcp-shield@1.0.7
JSON configuration (Claude Desktop, Cursor, VS Code)
{
    "mcpServers": {
        "mcp-shield": {
            "command": "npx",
            "args": [
                "-y",
                "@sophiacave/mcp-shield@1.0.7"
            ]
        }
    }
}

Documentation

From the project's README on GitHub, refreshed weekly. Links open on GitHub.

Contents
  1. MCP Shield
  2. Quick Start
  3. What It Checks (20 Rules)
  4. Testing
  5. MCP Server Integration
  6. Example Output
  7. Features
  8. Why This Exists
  9. License

MCP Shield

Open-source security scanner for MCP servers. 20 rules across 6 categories. Scan any server in seconds. Get a grade from A to F.

36.7% of MCP servers are SSRF-vulnerable (BlueRock, 2026). 82% have path traversal flaws. Only 17% are production-ready. MCP Shield finds the vulnerabilities before attackers do.

Quick Start

git clone https://github.com/sophiacave/mcp-shield
cd mcp-shield

# Scan a file
python3 src/cli.py scan path/to/mcp_server.py

# Scan a project
python3 src/cli.py scan path/to/mcp-project/

What It Checks (20 Rules)

RuleSeverityWhat It Detects
SSRF-01CriticalUser input in HTTP request URLs
SSRF-02MediumDynamic URLs without validation
SSRF-03MediumDNS rebinding (URL validated but no IP pinning)
PATH-01HighUser input in file paths
PATH-02MediumNo path traversal protection
PATH-03MediumSymlink following without check
INJ-01Criticaleval/exec on user input
INJ-02CriticalSQL string interpolation
INJ-03Highsubprocess with shell=True
INJ-04HighTemplate injection via .format()
INJ-05CriticalUnsafe deserialization (pickle/yaml)
AUTH-01MediumNo auth on tool handlers
AUTH-02CriticalHardcoded secrets/API keys (OpenAI, Stripe, GitHub, AWS)
AUTH-03LowNo rate limiting on tool endpoints
SEC-01HighSSL verification disabled
SEC-02MediumWildcard CORS
SEC-03MediumStack traces/error details exposed to client
SEC-04LowNo input length validation (DoS risk)
LOG-01LowNo logging/audit trail on tool invocations

Testing

python3 tests/test_integration.py
# 28 tests, 0 failures

MCP Server Integration

Add to ~/.claude/mcp.json:

{
  "mcpServers": {
    "mcp-shield": {
      "command": "python3",
      "args": ["/path/to/mcp-shield/src/mcp_server.py"]
    }
  }
}

Claude Code tools: shield_scan_file, shield_scan_directory, shield_scan_code

Example Output

MCP Shield: my-server/ — 3 finding(s)

  [CRIT] SSRF-01: Potential SSRF: Dynamic URL from user input
    requests call with dynamic URL that may include user input
    Location: server.py:45
    Fix: Validate URL against allowlist. Block internal IPs.
    CWE: CWE-918

  [HIGH] INJ-03: Command injection: subprocess with shell=True
    subprocess called with shell=True. User input in args = RCE.
    Location: tools.py:112
    Fix: Use subprocess with shell=False and pass args as list.
    CWE: CWE-78

  [MED] AUTH-01: No authentication detected on tool handlers
    MCP tool handlers found but no auth logic detected
    Fix: Add authentication middleware.
    CWE: CWE-306

Grade: F | 1 critical, 1 high, 1 medium

Features

  • Zero dependencies — Pure Python, no pip installs required
  • 20 security rules across SSRF, path traversal, injection, auth, config, and logging
  • CWE references — Every finding maps to a Common Weakness Enumeration ID
  • Actionable fixes — Each finding includes specific remediation steps
  • A-F grading — Instant security posture assessment
  • Dual mode — Run as CLI or as an MCP server inside Claude Code
  • Fast — Scans a typical MCP server in under 1 second

Why This Exists

The MCP ecosystem has 9,400+ servers and 97M monthly SDK downloads. Security tooling hasn't kept up. We built MCP Shield because every MCP server deployed without a security scan is a liability.

Built by Like One, a 501(c)(3) nonprofit. Security tooling should be free.

License

MIT — Like One

Frequently asked questions

What is MCP Shield?

Security scanner for MCP servers. SSRF, path traversal, injection, auth, secrets. Grade A-F.

How do I install MCP Shield?

It runs on your machine. In Claude Code: claude mcp add mcp-shield -- npx -y @sophiacave/mcp-shield@1.0.7. For other clients, paste the JSON configuration from this page into their MCP settings.

Does MCP Shield need an API key?

Its registry entry lists no required key or secret. Some features may still need an account with the service it connects to.

Is MCP Shield open source?

Its code is public on GitHub, but the repository does not declare a standard license.

Who maintains MCP Shield?

It is published by sophiacave. AI.tn lists it but does not maintain or endorse it.

From the official MCP Registry. Listing is not an endorsement: review a server's code and permissions before giving it access to your data.