Skip to main content
Glama
kartik-augusta

Redshift MCP Server

Redshift MCP Server

Este servidor MCP (Model Context Protocol) proporciona acceso seguro y de solo lectura a bases de datos de Amazon Redshift para su uso con Claude Desktop y otros clientes compatibles con MCP. Actúa como un puente inteligente que permite a los asistentes de IA navegar, comprender y extraer información directamente de su almacén de datos de forma independiente.

✨ Características principales

  • 10 herramientas especializadas: Un conjunto completo de herramientas para descubrimiento de datos, extracción de metadatos, consultas y exportación.

  • Configuración dinámica: Totalmente configurable mediante .env (listas de permitidos, límites de filas, parámetros de conexión).

  • Modos de transporte: Admite tanto stdio (para clientes locales como Claude Desktop) como sse (Server-Sent Events sobre HTTP para conexiones remotas).

  • Caché de conexiones: Gestión eficiente de conexiones con conexiones únicas de larga duración y verificación de estado hacia Redshift.

  • Seguridad empresarial:

    • Validación estricta de SQL de solo lectura.

    • Lista de permitidos de esquemas (restringe la IA a esquemas preaprobados).

    • Límites estrictos en el número de filas de consultas y exportaciones para proteger el rendimiento de la base de datos.

  • Compatibilidad con túneles SSH: Se conecta sin problemas a clústeres de Redshift en VPC privadas mediante un sshtunnel integrado.

Related MCP server: safedb-mcp

🛠️ Herramientas MCP disponibles

Descubrimiento y navegación de datos

  1. get_allowed_schemas: Devuelve la configuración de acceso a esquemas del servidor (lista de permitidos, esquema predeterminado, límites).

  2. list_schemas: Descubre los esquemas accesibles en la base de datos (filtrados por la lista de permitidos configurada).

  3. list_tables: Enumera todas las tablas de un esquema. Solo los esquemas de la lista de permitidos son accesibles.

  4. describe_table: Obtiene nombres de columnas, tipos de datos, nulabilidad y valores predeterminados de una tabla.

  5. search_columns: Busca columnas cuyo nombre coincida con una palabra clave (sin distinción de mayúsculas y minúsculas) en todas las tablas de los esquemas permitidos.

Análisis y extracción de datos

  1. sample_data: Devuelve una muestra rápida de filas de una tabla para exploración de datos.

  2. table_row_count: Obtiene el recuento exacto de filas de una tabla mediante COUNT(*).

  3. query_data: Ejecuta una consulta SELECT de solo lectura. Envuelve y limita automáticamente los resultados según la configuración del servidor.

  4. explain_query: Muestra el plan EXPLAIN de una consulta para comprender el rendimiento antes de ejecutarla.

  5. export_to_csv: Exporta los resultados de una consulta a formato CSV con un límite de filas dedicado más alto (MAX_EXPORT_ROWS).

🚀 Configuración e instalación

1. Instalar dependencias

# Clone the repository
git clone <repository-url>
cd redshift-mcp-server

# Create virtual environment
python3 -m venv .venv
source .venv/bin/activate

# Install dependencies
pip install -r requirements.txt

2. Configurar el entorno

Copie el archivo de entorno de ejemplo y edítelo con sus credenciales:

cp .env.example .env

Edite el archivo .env para configurar su conexión a Redshift y los límites del servidor:

# --- Redshift Connection ---
RS_HOST=your-cluster.region.redshift.amazonaws.com
RS_DB=your_database_name
RS_USER=your_readonly_user
RS_PASS=your_password
RS_PORT=5439

# --- Security & Limits ---
ALLOWED_SCHEMAS=gold_capsaai,report_capsaai
DEFAULT_SCHEMA=gold_capsaai
MAX_ROWS=500
MAX_EXPORT_ROWS=5000

# --- SSH Tunnel (For Private VPCs) ---
SSH_TUNNEL=false
# If true, provide SSH_HOST, SSH_USER, SSH_KEY_FILE, etc.

3. Iniciar el servidor

Modo 1: stdio (predeterminado) Ideal cuando el cliente MCP (p. ej., Claude Desktop) se ejecuta en la misma máquina.

python server.py

Modo 2: sse (HTTP) Ideal para acceder al servidor de forma remota mediante HTTP o túneles.

# Start SSE on port 8000
python server.py --sse --host 0.0.0.0 --port 8000

🔌 Conexión al servidor

Opción A: Claude Desktop local (stdio)

Si su Claude Desktop se ejecuta en la misma máquina que el servidor, edite el archivo de configuración de Claude Desktop:

  • Mac: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "redshift": {
      "command": "/absolute/path/to/redshift-mcp-server/.venv/bin/python",
      "args": ["/absolute/path/to/redshift-mcp-server/server.py"]
    }
  }
}

Opción B: Conexión remota (SSE + IDE)

Si el servidor se ejecuta en una instancia EC2 remota, inicie el servidor en modo --sse.

Para IDEs que admiten conexiones SSE directas (como VS Code con Cline):

  1. Añada un nuevo servidor MCP.

  2. Establezca el tipo de transporte en SSE.

  3. Utilice la URL: http://<EC2-IP>:8000/sse (o la URL de su túnel).

🧪 Pruebas y validación

El repositorio incluye un conjunto completo de pruebas y herramientas de diagnóstico:

  • client.py: Un cliente CLI que ejecuta una prueba de humo de extremo a extremo contra las 10 herramientas.

  • test_connection.py: Validación básica de conectividad.

  • test_restricted_access.py: Garantiza que las restricciones de seguridad de esquemas funcionan correctamente.

  • monitor_mcp.sh: Monitorización lista para producción con reinicio automático, comprobaciones de estado y registro de eventos.

🏗️ Arquitectura

graph TB
    subgraph "Client Layer"
        CD["Claude Desktop / MCP Client"]
    end
    
    subgraph "MCP Server Layer"
        MCP["FastMCP Server"]
        CONFIG["config.py / .env"]
        VALIDATION["SQL & Schema Validation"]
    end
    
    subgraph "Network Layer"  
        SSH["SSH Tunnel<br/>(Optional)"]
        CONN["Connection Cache"]
    end
    
    subgraph "Database Layer"
        RS["Amazon Redshift"]
        SCHEMA["Allowed Schemas"]
    end
    
    CD -->|"JSON-RPC (stdio/sse)"| MCP
    MCP --> CONFIG
    MCP --> VALIDATION
    VALIDATION --> CONN
    CONN --> SSH
    SSH --> RS
    RS --> SCHEMA

🔐 Consideraciones de seguridad

  • Solo lectura: El envoltorio _validate_read_only_sql restringe estrictamente las consultas a sentencias SELECT y EXPLAIN.

  • Motor de límites: Los errores de sintaxis de doble LIMIT se evitan mediante análisis de expresiones regulares en _apply_limit, lo que garantiza que los escaneos de tablas grandes estén limitados al umbral de su .env.

  • Aislamiento de esquemas: La IA no puede ver ni consultar tablas fuera de la lista separada por comas de ALLOWED_SCHEMAS.

  • Mantenga las credenciales seguras: Nunca confirme sus archivos de configuración .env o .json en el control de versiones. Están ignorados en .gitignore de forma predeterminada.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    A production-ready server that connects LLMs and AI agents (Claude, ChatGPT) to Amazon Redshift databases with configurable access controls and zero code changes.
    4
    -
  • A
    license
    A
    quality
    B
    maintenance
    Secure MCP server for safe, read-only DB access by AI agents, with SQL guardrails, table allowlists, PII masking, and audit logs
    6
    17 npm
    9
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    A read-only MCP server for Amazon Redshift that leverages column comments for guided data discovery, with slash commands for profiling, exploration, and lineage.
    13
    1
    MIT