MCP Trino Server
Se integra con Trino e Iceberg para exploración avanzada de datos, consultas y mantenimiento de tablas.
Documentación
MCP Trino Server
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
- Un servidor Trino en ejecución (o Docker Compose para desarrollo local)
- Python 3.12 o superior
- 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:
| Transporte | Descripción | Caso de Uso |
|---|---|---|
stdio | E/S estándar (predeterminado) | VS Code, Claude Desktop, clientes MCP locales |
streamable-http | HTTP con streaming | Acceso remoto, clientes web, Docker |
sse | Eventos enviados por el servidor | Transporte 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
| Variable | Descripción | Predeterminado |
|---|---|---|
| TRINO_HOST | Nombre de host del servidor Trino | localhost |
| TRINO_PORT | Puerto del servidor Trino | 8080 |
| TRINO_USER | Nombre de usuario de Trino | trino |
| TRINO_CATALOG | Catálogo predeterminado | None |
| TRINO_SCHEMA | Esquema predeterminado | None |
| TRINO_HTTP_SCHEME | Esquema HTTP (http/https) | http |
| TRINO_PASSWORD | Contraseña de Trino | None |
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.
