MCP-Gatekeeper
🛡️ MCP-Gatekeeper
Puerta de enlace de seguridad en tiempo de ejecución y servidor FastMCP para clientes de Model Context Protocol (MCP) y servidores de origen (upstream).
MCP-Gatekeeper es un proxy de defensa en profundidad y un servidor FastMCP que inspecciona el 100% de las actualizaciones de la lista de herramientas y de las respuestas de las herramientas, evitando el envenenamiento de herramientas, la inyección de prompts a través de las respuestas (por ejemplo, ataques MCPoison / CurXecute), la modificación silenciosa de esquemas de herramientas («rug pulls») y las operaciones no autorizadas de alto riesgo.
Diseñado para un despliegue inmediato en fastmcp.cloud o para su ejecución local mediante la CLI de fastmcp.
🚀 Características y capacidades principales
Listo para FastMCP Cloud: punto de entrada FastMCP de un solo archivo (
server.py) desplegable directamente en fastmcp.cloud con transporte SSE y HTTP.Protección de esquemas contra «rug pulls»: captura de la línea base del esquema de herramientas en el momento de la conexión; compara el 100% de las actualizaciones de la lista de herramientas con las líneas base aprobadas y bloquea los cambios de herramientas no aprobados de forma predeterminada.
Escáner de inyección en respuestas en dos etapas:
Etapa 1: prefiltro de alto rendimiento basado en reglas, orientado a secuestros de instrucciones conocidos, trampas de exfiltración e inyección de comandos de shell.
Etapa 2: clasificación semántica profunda mediante LLM que utiliza cualquier API compatible con OpenAI (
LLM_API_KEYdel fichero.env, compatible con OpenAI, Grok, DeepSeek, Anthropic u Ollama local).
Seguridad de bloqueo ante fallos (fail-closed): cualquier fallo del clasificador, un tiempo de espera de red o una excepción no controlada bloquea la carga útil por defecto y genera un incidente de seguridad.
Motor de políticas: evaluación de reglas configurable por herramienta y por servidor (
allow,block,confirm,rate_limit).Puerta de confirmación humana: mantiene en espera las acciones de alto riesgo pendientes de aprobación del administrador; se bloquea (deniega) si no se responde dentro de un plazo de tiempo configurable.
Pista de auditoría con detección de manipulaciones: todas las llamadas, respuestas, dictámenes de políticas y decisiones del administrador se almacenan con encadenamiento de hashes SHA-256.
Panel de Cloud Control Center: panel HTML de administración en vivo servido directamente a través de FastMCP en
/dashboard.
Related MCP server: shadowgate-mcp
🛠️ Resumen de la arquitectura
Arquitectura del sistema de alto nivel
flowchart TD
subgraph Clients["AI Clients & Interfaces"]
C1["Claude Desktop"]
C2["Claude Code CLI"]
C3["Google Antigravity"]
C4["ChatGPT / Custom App"]
end
subgraph Gateway["🛡️ MCP-Gatekeeper (FastMCP Cloud)"]
direction TB
S["FastMCP Server\nserver.py"]
subgraph Engine["Security & Policy Engines"]
B["Schema Baseline Manager\n(Rug-Pull Detector)"]
POL["Policy Engine\n(Allow/Block/Confirm/Rate-Limit)"]
CONF["Confirmation Manager\n(Human Approval Gate)"]
subgraph Classifier["Two-Stage Response Classifier"]
R1["Stage 1: Rule Prefilter\n(Fast Pattern Match)"]
R2["Stage 2: LLM Classifier\n(OpenAI / Grok / DeepSeek / Ollama)"]
end
end
UI["Admin Control Center UI\n/dashboard"]
end
subgraph External["Upstream Services & AI APIs"]
UP["Upstream MCP Servers\n(GitHub, SQL, Web Search, APIs)"]
LLM["LLM Classifier API\n(OpenAI / Grok / DeepSeek / Ollama)"]
end
subgraph Storage["Datastore & Audit"]
DB[("PostgreSQL / SQLite DB")]
AUDIT[("Tamper-Evident Audit Log\n(SHA-256 Hash Chained)")]
end
Clients -->|MCP SSE / stdio / JSON-RPC| S
S --> B
S --> POL
POL -->|Held Action| CONF
POL -->|Allowed| UP
UP -->|Tool Response| Classifier
Classifier --> R1
R1 -->|Ambiguous / Suspicious| R2
R2 -->|API Query| LLM
Classifier -->|Clean / Safe| Clients
Classifier -->|Malicious / Timeout| Block["Fail-Closed Block Response"]
UI -->|Manage Policies & Baselines| DB
Engine -->|Record Calls & Incidents| DB
Engine -->|Write Chain Record| AUDITFlujo de ejecución detallado y pipeline de seguridad
sequenceDiagram
autonumber
actor Client as AI Agent Client
participant FastMCP as FastMCP Server (server.py)
participant Base as Schema Baseline Manager
participant Policy as Policy Engine
participant Gate as Human Confirmation Gate
participant Admin as Admin Dashboard (/dashboard)
participant Upstream as Upstream MCP Server
participant Stage1 as Stage 1: Rule Prefilter
participant Stage2 as Stage 2: LLM Classifier
participant Audit as SHA-256 Audit Log
Client->>FastMCP: 1. Request check_tool_security (tool_name, payload)
FastMCP->>Base: 2. Check tool baseline schema status
alt Schema modified or unapproved (Rug-Pull)
Base-->>FastMCP: Flagged schema mismatch
FastMCP->>Audit: Log Rug-Pull Incident
FastMCP-->>Client: Return Error: Tool schema unapproved
else Approved Baseline
Base-->>FastMCP: Baseline OK
end
FastMCP->>Policy: 3. Evaluate Call Policy
alt Policy = Blocked / Rate-Limited
Policy-->>FastMCP: Action Blocked
FastMCP-->>Client: Return Error: Blocked by security policy
else Policy = Held for Confirmation
Policy->>Gate: 4. Create Pending Approval Request
Gate->>Admin: Notify Admin on Dashboard
Admin->>Gate: 5. Admin Approves / Denies (or Timeout)
alt Denied or Timed Out (Fail-Closed)
Gate-->>FastMCP: Action Denied
FastMCP-->>Client: Return Error: High-risk action denied
else Approved
Gate-->>FastMCP: Action Approved
end
end
FastMCP->>Stage1: 6. Scan Response (Stage 1 Rule Prefilter)
alt Stage 1 Matches Known Attack Vector
Stage1-->>FastMCP: Verdict: Malicious
FastMCP->>Audit: Record Security Incident & Audit Log
FastMCP-->>Client: Return Safe Error: Response blocked
else Stage 1 Suspicious / Ambiguous
FastMCP->>Stage2: 7. Escalate to Stage 2 LLM Classifier
Stage2-->>FastMCP: Verdict & Reason (or Fail-Closed on Error)
alt Verdict = Malicious / Error
FastMCP->>Audit: Record Security Incident & Audit Log
FastMCP-->>Client: Return Safe Error: Response blocked
else Verdict = Clean
FastMCP->>Audit: Write Hash-Chained Audit Entry
FastMCP-->>Client: 8. Return Verified Clean Response
end
else Stage 1 Clean
FastMCP->>Audit: Write Hash-Chained Audit Entry
FastMCP-->>Client: 8. Return Verified Clean Response
end🔑 Configuración de entorno (.env)
La puerta de enlace lee la configuración genérica de entorno del LLM desde .env:
# LLM Security Classifier API Key (Supports OpenAI, DeepSeek, Grok, Ollama)
LLM_API_KEY="your-llm-api-key-here"
LLM_API_URL="https://api.openai.com/v1/chat/completions" # or https://api.x.ai/v1/chat/completions, https://api.deepseek.com/v1/chat/completions
LLM_MODEL="gpt-4o-mini" # or grok-2-latest, deepseek-chat, llama3, etc.
ADMIN_API_KEY="trust-gateway-admin-key-secret"
DATABASE_URL="sqlite+aiosqlite:///mcp_trust_gateway.db"
FAIL_CLOSED=true
CLASSIFIER_TIMEOUT_SECONDS=3.0
CONFIRMATION_TIMEOUT_SECONDS=60☁️ Despliegue e integración de clientes
1. Desplegar en FastMCP Cloud
Sube este repositorio a GitHub.
Ve a fastmcp.cloud y crea un nuevo servidor:
Punto de entrada:
server.pyVariable de entorno:
LLM_API_KEY=your-api-key-here
Haz clic en Deploy. FastMCP Cloud te proporciona los endpoints:
Servidor MCP SSE:
https://mcp.fastmcp.cloud/your-username/mcp-trust-gateway/ssePanel de administración:
https://mcp.fastmcp.cloud/your-username/mcp-trust-gateway/dashboard
2. Configuraciones de clientes
🤖 Google Antigravity y Claude Desktop (mcp_config.json)
{
"mcpServers": {
"mcp-trust-gateway": {
"url": "https://mcp.fastmcp.cloud/your-username/mcp-trust-gateway/sse"
}
}
}💻 Claude Code (CLI)
claude mcp add mcp-trust-gateway --transport sse \
https://mcp.fastmcp.cloud/your-username/mcp-trust-gateway/sse🧪 Suite de pruebas y regresión adversarial
Ejecuta la suite completa de pytest-mcp, incluida la suite de pruebas de regresión adversarial:
pytest -vMétricas obtenidas
📊 Tasa de detección adversarial: 100% (Objetivo: ≥95%)
📊 Tasa de falsos positivos: 0% (Objetivo: <2%)
📝 Decisiones de diseño
Cierre ante fallos por defecto (fail-closed): todas las respuestas ambiguas, los tiempos de agotamiento de espera de red o las excepciones no controladas se bloquean por defecto (se deniega y se alerta a los administradores).
Ofuscación de credenciales: los secretos, tokens de API y contraseñas que coinciden con claves sensibles se ofuscan automáticamente antes de guardarse en el almacenamiento de auditoría.
Filtro rápido de la Etapa 1 + escalada a LLM: los patrones maliciosos conocidos se interceptan inmediatamente en la Etapa 1, lo que elimina la latencia y la sobrecarga de API para ataques evidentes, mientras se recurre a un LLM para el análisis semántico complejo.
Encadenamiento de hashes con detección de manipulaciones: cada entrada de registro calcula
SHA256(actor | action | target | details | prev_hash | timestamp), lo que garantiza la no repudiación y la detección de manipulación del registro.
This server cannot be deployed
Maintenance
Related MCP Connectors
- gatewayOAuthai.sealgate
MCP gateway with runtime security policy, tool-call-level control, and audit of agent actions.
Security & DLP proxy for MCP: tool-poisoning scans, PII redaction on tool args/results. Beta.
Real-time MCP & A2A prompt-injection, jailbreak, and tool-schema poisoning firewall for AI agents.
Find, vet, and run MCP tools through a secure audited gateway with prompt-injection risk scoring
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceSecurity gateway for MCP tool calls. Sits between your LLM client and MCP servers, enforcing per-tool policies (allow/block/approve/read-only), logging every call, and pausing dangerous operations for human approval in terminal or Slack.1 npm1MIT
- AlicenseNot gradedqualityDmaintenanceA defensive gateway and firewall for AI agents using MCP servers, scanning tool calls, responses, and manifests for prompt injection, secrets, dangerous commands, and drift before allowing execution.MIT

evav-gatewayofficial
AlicenseNot gradedqualityDmaintenanceGoverned MCP gateway that lets AI agents call tools with policy enforcement, prompt-injection screening, a kill-switch, and tamper-evident signed audit logs.Apache 2.0- FlicenseNot gradedqualityCmaintenanceMCP server that provides a security gateway for AI agents, enforcing allow/confirm/deny policies on tool calls and requiring human approval for risky operations, with full audit logging.-