MCP Trino Server

Se integra con Trino e Iceberg para exploración avanzada de datos, consultas y mantenimiento de tablas.

Documentación

MseeP.ai Security Assessment Badge

MCP Trino Server

smithery badge Python 3.12+ VS Code Docker License

El servidor MCP Trino Server es un servidor de Protocolo de Contexto de Modelo (MCP) que proporciona una integración perfecta con Trino e Iceberg, permitiendo capacidades avanzadas de exploración de datos, consultas y mantenimiento de tablas a través de una interfaz estándar.

Casos de Uso

  • Exploración y análisis interactivo de datos en Trino
  • Mantenimiento y optimización automatizada de tablas Iceberg
  • Construcción de herramientas impulsadas por IA que interactúan con bases de datos Trino
  • Ejecución y gestión de consultas SQL con formato de resultados adecuado

Requisitos Previos

  1. Un servidor Trino en ejecución (o Docker Compose para desarrollo local)
  2. Python 3.12 o superior
  3. Docker (opcional, para despliegue en contenedores)

Inicio Rápido

1. Clonar el Repositorio

git clone https://github.com/alaturqua/mcp-trino-python.git
cd mcp-trino-python

2. Crear el Archivo de Entorno

Cree un archivo .env en el directorio raíz:

TRINO_HOST=localhost
TRINO_PORT=8080
TRINO_USER=trino
TRINO_CATALOG=tpch
TRINO_SCHEMA=tiny

3. Ejecutar Trino Localmente (Opcional)

docker-compose up -d trino

Esto inicia un servidor Trino en localhost:8080 con datos de muestra TPC-H y TPC-DS.

Instalación

Instalación mediante Smithery

Para instalar MCP Trino Server para Claude Desktop automáticamente mediante Smithery:

npx -y @smithery/cli install @alaturqua/mcp-trino-python --client claude

Usando uv (Recomendado)

uv sync
uv run src/server.py

Usando pip

pip install -e .
python src/server.py

Modos de Transporte

El servidor admite tres modos de transporte:

TransporteDescripciónCaso de Uso
stdioE/S estándar (predeterminado)VS Code, Claude Desktop, clientes MCP locales
streamable-httpHTTP con streamingAcceso remoto, clientes web, Docker
sseEventos enviados por el servidorTransporte HTTP heredado

Ejecución con Diferentes Transportes

# stdio (default) - for VS Code and Claude Desktop
python src/server.py

# Streamable HTTP - for remote/web access
python src/server.py --transport streamable-http --host 0.0.0.0 --port 8000

# SSE - legacy HTTP transport
python src/server.py --transport sse --host 0.0.0.0 --port 8000

Uso con VS Code

Agregue a la configuración de VS Code (Ctrl+Shift+P → Preferences: Open User Settings (JSON)):

{
  "mcp": {
    "servers": {
      "mcp-trino-python": {
        "command": "uv",
        "args": [
          "run",
          "--with",
          "mcp[cli]",
          "--with",
          "trino",
          "--with",
          "loguru",
          "mcp",
          "run",
          "/path/to/mcp-trino-python/src/server.py"
        ],
        "envFile": "/path/to/mcp-trino-python/.env"
      }
    }
  }
}

O agregue a .vscode/mcp.json en su espacio de trabajo (sin la clave contenedora mcp).

Uso con Claude Desktop

Agregue a su configuración de Claude Desktop:

{
  "mcpServers": {
    "trino": {
      "command": "python",
      "args": ["./src/server.py"],
      "env": {
        "TRINO_HOST": "your-trino-host",
        "TRINO_PORT": "8080",
        "TRINO_USER": "trino"
      }
    }
  }
}

Uso de Docker

Construir la Imagen

docker build -t mcp-trino-python .

Ejecutar con stdio (para VS Code)

docker run -i --rm \
  -e TRINO_HOST=host.docker.internal \
  -e TRINO_PORT=8080 \
  -e TRINO_USER=trino \
  mcp-trino-python

Ejecutar con HTTP Transmisible

docker run -p 8000:8000 \
  -e TRINO_HOST=host.docker.internal \
  -e TRINO_PORT=8080 \
  mcp-trino-python \
  --transport streamable-http --host 0.0.0.0 --port 8000

Docker Compose

# Start Trino + MCP server with Streamable HTTP
docker-compose up -d

# Start with SSE transport
docker-compose --profile sse up -d

# Run stdio for testing
docker-compose --profile stdio run --rm mcp-trino-stdio

VS Code con Docker

{
  "mcp": {
    "servers": {
      "mcp-trino-python": {
        "command": "docker",
        "args": [
          "run",
          "-i",
          "--rm",
          "--network",
          "mcp-trino-python_trino-network",
          "-e",
          "TRINO_HOST=trino",
          "-e",
          "TRINO_PORT=8080",
          "-e",
          "TRINO_USER=trino",
          "mcp-trino-python"
        ]
      }
    }
  }
}

Configuración

Variables de Entorno

VariableDescripciónPredeterminado
TRINO_HOSTNombre de host del servidor Trinolocalhost
TRINO_PORTPuerto del servidor Trino8080
TRINO_USERNombre de usuario de Trinotrino
TRINO_CATALOGCatálogo predeterminadoNone
TRINO_SCHEMAEsquema predeterminadoNone
TRINO_HTTP_SCHEMEEsquema HTTP (http/https)http
TRINO_PASSWORDContraseña de TrinoNone

Herramientas

Herramientas de Consulta y Exploración

  • show_catalogs

    • Listar todos los catálogos disponibles
    • No se requieren parámetros
  • show_schemas

    • Listar todos los esquemas en un catálogo
    • Parámetros:
      • catalog: Nombre del catálogo (cadena, obligatorio)
  • show_tables

    • Listar todas las tablas en un esquema
    • Parámetros:
      • catalog: Nombre del catálogo (cadena, obligatorio)
      • schema: Nombre del esquema (cadena, obligatorio)
  • describe_table

    • Mostrar estructura detallada de la tabla e información de columnas
    • Parámetros:
      • table: Nombre de la tabla (cadena, obligatorio)
      • catalog: Nombre del catálogo (cadena, opcional)
      • schema: Nombre del esquema (cadena, opcional)
  • execute_query

    • Ejecutar una consulta SQL y devolver resultados formateados
    • Parámetros:
      • query: Consulta SQL a ejecutar (cadena, obligatorio)
  • show_catalog_tree

    • Mostrar una vista jerárquica de árbol de catálogos, esquemas y tablas
    • Devuelve una estructura de árbol formateada con indicadores visuales
    • No se requieren parámetros
  • show_create_table

    • Mostrar la sentencia CREATE TABLE para una tabla
    • Parámetros:
      • table: Nombre de la tabla (cadena, obligatorio)
      • catalog: Nombre del catálogo (cadena, opcional)
      • schema: Nombre del esquema (cadena, opcional)
  • show_create_view

    • Mostrar la sentencia CREATE VIEW para una vista
    • Parámetros:
      • view: Nombre de la vista (cadena, obligatorio)
      • catalog: Nombre del catálogo (cadena, opcional)
      • schema: Nombre del esquema (cadena, opcional)
  • show_stats

    • Mostrar estadísticas de una tabla
    • Parámetros:
      • table: Nombre de la tabla (cadena, obligatorio)
      • catalog: Nombre del catálogo (cadena, opcional)
      • schema: Nombre del esquema (cadena, opcional)

Mantenimiento de Tablas Iceberg

  • optimize

    • Optimizar una tabla Iceberg compactando archivos pequeños
    • Parámetros:
      • table: Nombre de la tabla (cadena, obligatorio)
      • catalog: Nombre del catálogo (cadena, opcional)
      • schema: Nombre del esquema (cadena, opcional)
  • optimize_manifests

    • Optimizar archivos de manifiesto para una tabla Iceberg
    • Parámetros:
      • table: Nombre de la tabla (cadena, obligatorio)
      • catalog: Nombre del catálogo (cadena, opcional)
      • schema: Nombre del esquema (cadena, opcional)
  • expire_snapshots

    • Eliminar instantáneas antiguas de una tabla Iceberg
    • Parámetros:
      • table: Nombre de la tabla (cadena, obligatorio)
      • retention_threshold: Umbral de antigüedad (p. ej., "7d") (cadena, opcional)
      • catalog: Nombre del catálogo (cadena, opcional)
      • schema: Nombre del esquema (cadena, opcional)

Inspección de Metadatos Iceberg

  • show_table_properties

    • Mostrar propiedades de la tabla Iceberg
    • Parámetros:
      • table: Nombre de la tabla (cadena, obligatorio)
      • catalog: Nombre del catálogo (cadena, opcional)
      • schema: Nombre del esquema (cadena, opcional)
  • show_table_history

    • Mostrar historial/cambios de la tabla Iceberg
    • Contiene información de tiempos de instantáneas, linaje y ascendencia
    • Parámetros:
      • table: Nombre de la tabla (cadena, obligatorio)
      • catalog: Nombre del catálogo (cadena, opcional)
      • schema: Nombre del esquema (cadena, opcional)
  • show_metadata_log_entries

    • Mostrar entradas de registro de metadatos de la tabla Iceberg
    • Contiene ubicaciones de archivos de metadatos e información de secuencia
    • Parámetros:
      • table: Nombre de la tabla (cadena, obligatorio)
      • catalog: Nombre del catálogo (cadena, opcional)
      • schema: Nombre del esquema (cadena, opcional)
  • show_snapshots

    • Mostrar instantáneas de la tabla Iceberg
    • Contiene detalles de instantáneas, incluidas operaciones y archivos de manifiesto
    • Parámetros:
      • table: Nombre de la tabla (cadena, obligatorio)
      • catalog: Nombre del catálogo (cadena, opcional)
      • schema: Nombre del esquema (cadena, opcional)
  • show_manifests

    • Mostrar manifiestos de la tabla Iceberg para instantáneas actuales o todas
    • Contiene detalles de archivos de manifiesto y estadísticas de archivos de datos
    • Parámetros:
      • table: Nombre de la tabla (cadena, obligatorio)
      • catalog: Nombre del catálogo (cadena, opcional)
      • schema: Nombre del esquema (cadena, opcional)
      • all_snapshots: Incluir todas las instantáneas (booleano, opcional)
  • show_partitions

    • Mostrar particiones de la tabla Iceberg
    • Contiene estadísticas de particiones y recuentos de archivos
    • Parámetros:
      • table: Nombre de la tabla (cadena, obligatorio)
      • catalog: Nombre del catálogo (cadena, opcional)
      • schema: Nombre del esquema (cadena, opcional)
  • show_files

    • Mostrar archivos de datos de la tabla Iceberg en la instantánea actual
    • Contiene metadatos detallados de archivos y estadísticas de columnas
    • Parámetros:
      • table: Nombre de la tabla (cadena, obligatorio)
      • catalog: Nombre del catálogo (cadena, opcional)
      • schema: Nombre del esquema (cadena, opcional)
  • show_entries

    • Mostrar entradas de manifiesto de la tabla Iceberg para instantáneas actuales o todas
    • Contiene estado de entrada y métricas detalladas de archivos
    • Parámetros:
      • table: Nombre de la tabla (cadena, obligatorio)
      • catalog: Nombre del catálogo (cadena, opcional)
      • schema: Nombre del esquema (cadena, opcional)
      • all_snapshots: Incluir todas las instantáneas (booleano, opcional)
  • show_refs

    • Mostrar referencias de la tabla Iceberg (ramas y etiquetas)
    • Contiene configuración de referencias y mapeo de instantáneas
    • Parámetros:
      • table: Nombre de la tabla (cadena, obligatorio)
      • catalog: Nombre del catálogo (cadena, opcional)
      • schema: Nombre del esquema (cadena, opcional)

Historial de Consultas

  • show_query_history
    • Obtener el historial de consultas ejecutadas
    • Parámetros:
      • limit: Número máximo de consultas a devolver (número, opcional)

Licencia

Este proyecto está licenciado bajo la Licencia Apache 2.0. Consulte el archivo LICENSE para conocer los términos completos.