Skip to main content
Glama
mcp-gateway

mcp-gateway

by wxsh-hub

MCP Gateway

Capa de seguridad intermedia del ecosistema MCP — establece una barrera de protección entre los LLM y los servidores de herramientas

License: MIT Python 3.10+

¿Qué problema resuelve?

Cuando un agente LLM invoca herramientas externas a través del protocolo MCP, existen tres riesgos principales:

  1. Fuga de credenciales — Las respuestas devueltas por las herramientas pueden contener información sensible, como API Keys, tokens, etc., expuesta directamente al contexto del LLM.

  2. Exfiltración de datos privados — La información personal del usuario (nombre, número de identificación, número de tarjeta bancaria) puede transmitirse en la cadena de invocación de herramientas.

  3. Inyección de herramientas maliciosas — Las descripciones de las herramientas pueden ocultar instrucciones de inyección de prompts que inducen al agente a ejecutar operaciones peligrosas.

MCP Gateway actúa como capa de proxy que intercepta todo el tráfico y aplica filtros de seguridad antes de que las solicitudes/respuestas lleguen al agente.

Related MCP server: @guardbee/mcp-security-proxy

Descripción general de la arquitectura

┌─────────────┐      ┌──────────────────────────────────┐      ┌─────────────┐
│             │      │          MCP Gateway             │      │             │
│   LLM Agent │ ───► │  ┌──────────┐  ┌──────────────┐  │ ───► │  MCP Server │
│             │      │  │ Sanitize │  │   Plugin     │  │      │  (tools)    │
│             │ ◄─── │  │ Request  │  │   Pipeline   │  │ ◄─── │             │
└─────────────┘      │  └──────────┘  └──────────────┘  │      └─────────────┘
                     │         ▲               │         │
                     │         │    ┌──────────▼──┐      │
                     │         │    │  Sanitize   │      │
                     │         │    │  Response   │      │
                     │         │    └─────────────┘      │
                     └──────────────────────────────────┘

Flujo principal:

  • Dirección de solicitud: El Plugin Pipeline desensibiliza los parámetros (p. ej., elimina PII, filtra instrucciones de inyección).

  • Dirección de respuesta: Aplica enmascaramiento de tokens y filtrado de información sensible a los valores devueltos por las herramientas.

  • Fase de inicio: El Security Scanner evalúa la reputación de todos los servidores MCP configurados.

Inicio rápido

Instalación

git clone <your-repo-url>
cd mcp-gateway
pip install -e .

Dependencias opcionales:

pip install -e .[presidio]   # 启用 PII 检测(基于 Microsoft Presidio)

Configuración mínima

Crea un archivo mcp.json en la raíz del proyecto:

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "."]
    }
  }
}

Inicio

# 启用基础 Token 掩码
mcp-gateway -p basic

# 启用 Token 掩码 + PII 检测
mcp-gateway -p basic -p presidio

# 调试模式
LOGLEVEL=DEBUG mcp-gateway -p basic

Integración con Cursor / Claude Desktop

{
  "mcpServers": {
    "mcp-gateway": {
      "command": "mcp-gateway",
      "args": [
        "--mcp-json-path", "~/.cursor/mcp.json",
        "-p", "basic",
        "-p", "xetrack"
      ],
      "servers": {
        "filesystem": {
          "command": "npx",
          "args": ["-y", "@modelcontextprotocol/server-filesystem", "."]
        }
      }
    }
  }
}
{
  "mcpServers": {
    "mcp-gateway": {
      "command": "<python-path>",
      "args": [
        "-m", "mcp_gateway.server",
        "--mcp-json-path", "<path-to-config>",
        "-p", "basic"
      ],
      "servers": {
        "filesystem": {
          "command": "npx",
          "args": ["-y", "@modelcontextprotocol/server-filesystem", "."]
        }
      }
    }
  }
}

Capacidades de protección de seguridad

Enmascaramiento de tokens (plugin basic)

Detecta y reemplaza automáticamente las credenciales sensibles en las respuestas. Compatible con los formatos de clave de 12 plataformas de nube y herramientas de desarrollo populares:

Tipo

Formato de ejemplo

Clave de acceso de AWS

AKIA...

Token de GitHub

ghp_..., gho_...

Secreto de cliente de Azure

*.azure.com relacionado

Clave de API de GCP

AIza...

Token JWT

eyJ...

Token de HuggingFace

hf_...

Cookie de sesión de GitLab

_gitlab_session=...

Token de aplicación de Slack

xapp-...

Webhook de Microsoft Teams

*.webhook.office.com

mcp-gateway -p basic

Detección de PII (plugin presidio)

Basado en el motor Microsoft Presidio, detecta y anonimiza automáticamente la información de identificación personal en el texto:

  • Números de tarjeta de crédito, direcciones IP, correos electrónicos

  • Números de teléfono, números de identificación (SSN)

  • Más tipos de entidades en la documentación de Presidio

pip install -e .[presidio]
mcp-gateway -p presidio

Escáner de seguridad (--scan)

Antes del inicio, evalúa la reputación y analiza las descripciones de herramientas de todos los servidores MCP:

mcp-gateway --scan -p basic

Dimensiones del escaneo:

  • Evaluación de reputación — Calcula una puntuación integral basada en datos de GitHub (estrellas, forks, actividad de issues) y descargas de NPM.

  • Escaneo de descripciones de herramientas — Detecta instrucciones ocultas de inyección de prompts, referencias a rutas de archivos sensibles y comandos de operaciones peligrosas.

  • Bloqueo automático — Los servidores con una puntuación de reputación inferior al umbral (30 puntos por defecto) se marcan como blocked y se bloquea su carga.

Los resultados del escaneo se escriben en el archivo de configuración:

{
  "servers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "."],
      "blocked": "passed"
    }
  }
}

Valores de estado: "passed" (seguro) | "blocked" (bloqueado) | "skipped" (omitido manualmente) | null (no escaneado)

Seguimiento de llamadas

Plugin de seguimiento Xetrack

Registra el contexto completo de todas las invocaciones de herramientas, con soporte para consultas SQLite y DuckDB:

pip install xetrack
mcp-gateway -p xetrack

Configuración de variables de entorno:

  • XETRACK_DB_PATH — Ruta de la base de datos SQLite

  • XETRACK_LOGS_PATH — Directorio de archivos de registro

{
  "mcpServers": {
    "mcp-gateway": {
      "command": "mcp-gateway",
      "args": ["--mcp-json-path", "~/.cursor/mcp.json", "-p", "xetrack"],
      "env": {
        "XETRACK_DB_PATH": "tracing.db",
        "XETRACK_LOGS_PATH": "logs/"
      }
    }
  }
}

Ejemplo de consulta:

from xetrack import Reader
df = Reader("tracing.db").to_df()
-- DuckDB
INSTALL sqlite; LOAD sqlite; ATTACH 'tracing.db' (TYPE sqlite);
SELECT server_name, capability_name, content_text FROM db.events LIMIT 10;

Herramientas de proxy

Gateway expone dos herramientas estandarizadas al LLM:

Herramienta

Función

get_metadata

Obtiene la lista de capacidades de todos los servidores MCP registrados, lo que ayuda al LLM a elegir la herramienta adecuada.

run_tool

Ejecuta cualquier invocación de herramienta MCP a través de Gateway, aplicando automáticamente el procesamiento de seguridad de solicitudes/respuestas.

Desarrollo de plugins

El sistema de plugins se basa en el patrón de clase base ABC + registro mediante decoradores:

from mcp_gateway.plugins.base import GuardrailPlugin
from mcp_gateway.plugins.manager import register_plugin

@register_plugin
class MyPlugin(GuardrailPlugin):
    @property
    def name(self) -> str:
        return "my-plugin"

    def process_request(self, context):
        # 请求方向的处理逻辑
        return context.arguments

    def process_response(self, context, response):
        # 响应方向的处理逻辑
        return response

Los plugins se descubren y cargan automáticamente a través de PluginManager, con soporte para intercepción bidireccional de solicitudes/respuestas.

Estructura del proyecto

mcp_gateway/
├── __init__.py              # 包入口
├── server.py                # MCP Server 生命周期管理
├── gateway.py               # 动态工具注册、CLI 参数解析
├── config.py                # 配置文件加载
├── sanitizers.py            # 请求/响应安全分发
├── plugins/
│   ├── base.py              # Plugin ABC 基类
│   ├── manager.py           # 插件发现、注册、Pipeline
│   ├── guardrails/
│   │   ├── basic.py         # Token 掩码插件
│   │   └── presidio.py      # PII 检测插件
│   └── tracing/
│       └── xetrack.py       # 调用追踪插件
├── security_scanner/
│   ├── scanner.py           # 扫描器主入口
│   ├── github_collector.py  # GitHub API 数据采集
│   ├── npm_collector.py     # NPM Registry 数据采集
│   ├── smithery_collector.py# Smithery 市场数据采集
│   ├── project_analyzer.py  # 综合信誉评分算法
│   └── tool_poisoning_analyzer.py  # 工具描述安全分析
└── tests/
    ├── test_sanitizers.py
    ├── test_tool_poisoning_analyzer.py
    ├── test_plugin_pipeline.py
    └── test_config.py

Licencia

MIT

Maintenance

ActivityStale
ResponsivenessNo recent community issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables safe use of any MCP server by proxying and live-scanning all tool requests and responses, blocking or redacting poison descriptions, indirect prompt injection, malicious arguments, and unauthorized destinations.
    -
  • A
    license
    Not graded
    quality
    F
    maintenance
    Enables transparent security for any MCP server by intercepting tool calls, blocking prompt injection attempts, masking PII in responses, and writing immutable audit logs.
    2,302 npm
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enforces MCP security by proxying between AI agents and MCP servers, scanning tools and results for prompt injection, enforcing allow/deny policies, redacting sensitive arguments, and logging all traffic.
    22 PyPI
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables secure, low-latency proxying of MCP tool calls by detecting and blocking malicious requests such as path traversals and command injections, while redacting leaked credentials.
    11 npm
    MIT