Skip to main content

MCPShield

Secure infrastructure access for AI agents — databases, APIs, cloud platforms, and more — with deterministic policy enforcement and comprehensive auditing.

Features

  • MCP Server: Claude Code compatible stdio protocol
  • Multi-Infrastructure Support: PostgreSQL, MySQL, SQLite, MongoDB, Redis — ready for APIs, cloud, and custom systems
  • Fail-Closed Policy Engine: YAML-based security rules with default deny
  • Centralized Policy Management: Policies authored in dashboard, automatically synced
  • Audit Trail: Complete event logging to MCPShield control plane with policy_hash tracking
  • Event Spooling: Never lose audit events, even when offline
  • Developer-Friendly: Clear logs, helpful errors, easy configuration

Quick Start

Installation

pip install mcpshield

Super Quick Setup (Interactive)

The easiest way to get started:

mcpshield init

This interactive wizard will:

  • Ask which infrastructure you want to secure (PostgreSQL, MySQL, SQLite, MongoDB, Redis)
  • Configure your infrastructure connection
  • Set up your MCPShield API key
  • Automatically integrate with Claude Code and/or Cursor
  • Guide you through policy creation

No configuration file needed! Just set environment variables and run.

  1. Create project and policy in MCPShield dashboard:

  2. Set environment variables:

    macOS/Linux:

    export PG_DSN="postgresql://user:pass@localhost:5432/dbname"
    export MCPSHIELD_API_KEY="mcps_your_key"
    export PROJECT_ID="proj_your_id"
    export API_BASE_URL="https://api.mcpshield.xyz"  # Optional, this is the default
    

    Windows (PowerShell):

    $env:PG_DSN = "postgresql://user:pass@localhost:5432/dbname"
    $env:MCPSHIELD_API_KEY = "mcps_your_key"
    $env:PROJECT_ID = "proj_your_id"
    $env:API_BASE_URL = "https://api.mcpshield.xyz"  # Optional, this is the default
    

    Or use a .env file:

    # .env
    PG_DSN=postgresql://user:pass@localhost:5432/dbname
    MCPSHIELD_API_KEY=mcps_your_key
    PROJECT_ID=proj_your_id
    API_BASE_URL=https://api.mcpshield.xyz
    POLICY_SOURCE=remote
    
  3. Verify setup:

    mcpshield doctor
    
    # Or with .env file:
    mcpshield doctor --env-file .env
    
  4. Run the gateway:

    mcpshield serve
    
    # Or with .env file:
    mcpshield serve --env-file .env
    

Setup (YAML Config - Optional)

For advanced users who prefer a configuration file, you can create mcpshield.yaml:

database:
  dsn: null  # Set via PG_DSN env var

api:
  base_url: "https://api.mcpshield.xyz"
  project_id: null  # Set via PROJECT_ID env var
  api_key: null  # Set via MCPSHIELD_API_KEY env var

policy:
  source: "remote"
  refresh_seconds: 60

# Optional: local policy file for fallback
# policy:
#   source: "remote_with_fallback"
#   file: "policy.yaml"

Then run with --config:

mcpshield doctor --config mcpshield.yaml
mcpshield serve --config mcpshield.yaml

Claude Code Integration

Add to your Claude Code MCP configuration (~/.claude/mcp.json):

Option 1: Environment Variables Only (Recommended)

{
  "mcpServers": {
    "mcpshield": {
      "command": "mcpshield",
      "args": ["serve"],
      "env": {
        "PG_DSN": "postgresql://user:pass@localhost:5432/db",
        "MCPSHIELD_API_KEY": "mcps_...",
        "PROJECT_ID": "proj_...",
        "API_BASE_URL": "https://api.mcpshield.xyz"
      }
    }
  }
}

Option 2: With .env File

{
  "mcpServers": {
    "mcpshield": {
      "command": "mcpshield",
      "args": ["serve", "--env-file", "/path/to/.env"]
    }
  }
}

Option 3: With YAML Config

{
  "mcpServers": {
    "mcpshield": {
      "command": "mcpshield",
      "args": ["serve", "--config", "/path/to/mcpshield.yaml"],
      "env": {
        "PG_DSN": "postgresql://user:pass@localhost:5432/db",
        "MCPSHIELD_API_KEY": "mcps_...",
        "PROJECT_ID": "proj_..."
      }
    }
  }
}

How Policy Synchronization Works

┌──────────────────────────────────────────────────────────────┐
│                     MCPShield Dashboard                      │
│                                                              │
│  1. Author policy in UI                                      │
│  2. Save policy (stored in database)                         │
│  3. policy_hash computed (SHA-256)                           │
└──────────────────────────┬───────────────────────────────────┘
                           │
                           │ GET /projects/{id}/policy
                           │
                           ▼
                  ┌────────────────────┐
                  │  MCPShield Gateway │
                  │                    │
                  │  On startup:       │
                  │  • Fetch policy    │
                  │  • Cache locally   │
                  │  • Compute hash    │
                  │                    │
                  │  Every 60s:        │
                  │  • Re-fetch policy │
                  │  • Update cache    │
                  │  • Update hash     │
                  └────────────────────┘
                           │
                           │ Every request includes:
                           │ • decision (allow/deny)
                           │ • policy_hash
                           │
                           ▼
                  ┌────────────────────┐
                  │   Audit Events     │
                  │                    │
                  │  {                 │
                  │    decision: allow │
                  │    policy_hash:... │
                  │  }                 │
                  └────────────────────┘

Configuration

Environment Variables

MCPShield supports configuration via environment variables (no YAML file required):

Required:

  • DSN, PG_DSN, or DATABASE_URL - Infrastructure connection string (database, API, etc.)
  • MCPSHIELD_BACKEND - Infrastructure type: postgres, mysql, sqlite, mongodb, or redis
  • PROJECT_ID - Your MCPShield project ID
  • MCPSHIELD_API_KEY - Your MCPShield API key

Optional:

  • API_BASE_URL - API endpoint (default: https://api.mcpshield.xyz)
  • POLICY_SOURCE - Policy source: remote, remote_with_fallback, or local (default: remote)
  • POLICY_FILE - Path to local policy file (for fallback)
  • POLICY_REFRESH_SECONDS - Policy refresh interval (default: 60)
  • SPOOL_DIR - Event spool directory (default: ~/.mcpshield/spool)
  • POLICY_CACHE_DIR - Policy cache directory (default: ~/.mcpshield/cache)
  • LOG_LEVEL - Logging level: DEBUG, INFO, WARNING, ERROR (default: INFO)
  • LOG_DECISIONS - Log policy decisions: true or false (default: true)
  • BATCH_SIZE - Event batch size (default: 10)
  • BATCH_TIMEOUT - Event batch timeout in seconds (default: 5)

Policy Source Options

remote (Recommended - Default):

  • Fetches policy from MCPShield API only
  • No local policy file needed
  • Fails if API unreachable (fail-closed)
  • Always uses latest policy from dashboard
  • Policy cached locally at ~/.mcpshield/cache/policy.yaml

remote_with_fallback:

  • Tries API first
  • Falls back to cached policy if API fails
  • Falls back to local file if cache unavailable
  • Provides resilience during API outages

local:

  • Uses local policy file only
  • No API calls
  • Useful for offline development
  • Requires POLICY_FILE to be set

Fail-Closed Behavior

Gateway WILL NOT start if:

  • Policy source is remote and API is unreachable (and no cache exists)
  • Policy source is remote_with_fallback and ALL of: API fails, no cache, no local file
  • This ensures gateway never operates without a policy

Documentation

Available Tools by Database Type

MCPShield provides consistent tooling across all supported infrastructure types:

PostgreSQL

  • postgres_query - Execute SQL queries (SELECT, INSERT, UPDATE, DELETE)
  • postgres_describe - List tables, columns, and types
  • postgres_dump - Generate SQL DDL backup (CREATE TABLE, indexes, constraints)
  • postgres_diagram - Generate Mermaid ER diagrams

MySQL

  • mysql_query - Execute SQL queries (SELECT, INSERT, UPDATE, DELETE)
  • mysql_describe - List tables, columns, and types
  • mysql_dump - Generate SQL DDL backup (CREATE TABLE, indexes, constraints)
  • mysql_diagram - Generate Mermaid ER diagrams

SQLite

  • sqlite_query - Execute SQL queries (SELECT, INSERT, UPDATE, DELETE)
  • sqlite_describe - List tables, columns, and types
  • sqlite_dump - Generate SQL DDL backup (CREATE TABLE, indexes, constraints)
  • sqlite_diagram - Generate Mermaid ER diagrams

MongoDB

  • mongodb_query - Execute find queries on collections
  • mongodb_aggregate - Execute aggregation pipelines
  • mongodb_describe - List collections and document structure
  • mongodb_insert - Insert documents into collections
  • mongodb_update - Update documents in collections
  • mongodb_delete - Delete documents from collections
  • mongodb_dump - Export collections and optionally documents
  • mongodb_diagram - Generate Mermaid ER diagrams of collections

Redis

  • redis_get - Get value by key
  • redis_set - Set key-value pairs with optional TTL
  • redis_delete - Delete one or more keys
  • redis_keys - List keys matching a pattern (uses SCAN)
  • redis_info - Get server info and stats
  • redis_describe - Database statistics and key patterns
  • redis_backup - Export keys and values matching a pattern

Security

MCPShield is designed with security-first principles:

  • Default Deny: All operations blocked unless explicitly allowed
  • Read-Only Enforcement: Blocks destructive SQL keywords
  • Schema Validation: Only access allowed tables
  • Data Redaction: Remove sensitive data (emails, phones) from results
  • Rate Limiting: Enforce query limits and timeouts
  • Audit Everything: Complete audit trail with policy_hash tracking

CLI Commands

# Run the gateway (env vars only)
mcpshield serve

# Run the gateway (with .env file)
mcpshield serve --env-file .env

# Run the gateway (with YAML config)
mcpshield serve --config mcpshield.yaml

# Validate configuration
mcpshield validate
mcpshield validate --env-file .env
mcpshield validate --config mcpshield.yaml

# Run diagnostics
mcpshield doctor
mcpshield doctor --env-file .env
mcpshield doctor --config mcpshield.yaml

# Get version
mcpshield --version

Support

License

MIT License - see LICENSE file for details

Metadata

Release files for mcpshield 0.3.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mcpshield 0.3.3
File Size Uploaded
mcpshield-0.3.3.tar.gz 49.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for mcpshield 0.3.3
File Interpreter ABI Platform
mcpshield-0.3.3-py3-none-any.whl Python 3 none any Details

Total release size: 98.6 kB

Release files / mcpshield-0.3.3.tar.gz

Download URL mcpshield-0.3.3.tar.gz
Size 49.5 kB
Tags Source
SHA-256 checksum
How to use checksums
782d6eb9fcd07791bb863156a7f5d00ce45d1470028f4faafef68af69b7e5426
BLAKE2b-256 checksum
How to use checksums
33d7bc50a0aa4ca36585b56d07ef17b0e1f5b1e5f2f3a639f61f51fad3375db5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.14

Release files / mcpshield-0.3.3-py3-none-any.whl

Download URL mcpshield-0.3.3-py3-none-any.whl
Size 49.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3540cfaea5c8afecbf640f4914d2894645b7c3fea17e717af2e7618cda5ca129
BLAKE2b-256 checksum
How to use checksums
dce2710ace1160f78000a6a310cd134a1256c39ceaee012f4871706c6a0cd25f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.14

Release history Release notifications | RSS feed

This release

0.3.3 This release

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.9

2 release files

0.2.8

2 release files

0.2.7

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page