hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
Integrations
Offers containerized deployment of the MCP server with a REST API exposed on port 9097, enabling seamless integration with Docker environments.
Planned support for Hive connector to query and analyze data stored in Hive metastore through Trino.
Supports data visualization through Mermaid charts, enabling the generation of graph visualizations and pie charts from query results.
Servidor Trino MCP
Servidor de protocolo de contexto de modelo para Trino, que proporciona modelos de IA con acceso estructurado al motor de consulta SQL distribuido de Trino.
⚠️ VERSIÓN BETA (v0.1.2) ⚠️
Este proyecto se está estabilizando y sus funciones principales funcionan y están probadas. ¡Siéntete libre de bifurcar y contribuir!
Características
- ✅ ¡Se solucionó el problema de inicialización de la API del contenedor Docker! (inicialización confiable del servidor)
- ✅ Expone recursos de Trino a través del protocolo MCP
- ✅ Permite que las herramientas de IA consulten y analicen datos en Trino
- ✅ Proporciona opciones de transporte (el transporte STDIO funciona de manera confiable; el transporte SSE tiene problemas)
- ✅ Se corrigió el manejo del catálogo para la correcta ejecución de consultas Trino
- ✅ Opciones de servidor API de Python independiente y API de contenedor Docker
Inicio rápido
¿Necesita una versión sin contenedor? Ejecute la API independiente:
Integración de LLM
¿Quieres que un LLM tenga acceso directo para consultar tu instancia de Trino? ¡Hemos creado herramientas sencillas para ello!
Interfaz LLM de línea de comandos
La forma más sencilla de permitir que un LLM consulte a Trino es a través de nuestra herramienta de línea de comandos:
API REST para LLM
Ofrecemos dos opciones de API para la integración con aplicaciones LLM:
1. API de contenedor Docker (Puerto 9097)
El contenedor Docker expone una API REST en el puerto 9097:
2. API independiente de Python (puerto 8008)
Para implementaciones más flexibles, ejecute el servidor API independiente:
Esto crea puntos finales en:
GET http://localhost:8008/
- Información de uso de la APIPOST http://localhost:8008/query
- Ejecutar consultas SQL
Luego puede hacer que su LLM realice solicitudes HTTP a este punto final:
Este enfoque permite que los LLM se concentren en generar SQL, mientras nuestras herramientas manejan toda la complejidad del protocolo MCP.
Scripts de demostración y validación 🚀
Hemos creado algunos scripts de demostración increíbles que muestran cómo los modelos de IA pueden usar el protocolo MCP para ejecutar consultas complejas en Trino:
1. Generación y carga de datos basura
El script tools/create_bullshit_data.py
genera un conjunto de datos de 10 000 empleados con cargos ridículos, salarios inflados y una calificación de "factor de estupidez" (del 1 al 10):
2. Ejecución de consultas complejas a través de MCP
El script test_bullshit_query.py
demuestra la interacción MCP de extremo a extremo:
- Se conecta al servidor MCP mediante el transporte STDIO
- Inicializa el protocolo siguiendo la especificación MCP
- Ejecuta una consulta SQL compleja con WHERE, GROUP BY, HAVING, ORDER BY
- Procesa y formatea los resultados
Ejemplo de salida que muestra los mejores trabajos de BS con salarios altos:
3. Pruebas de API
El script test_llm_api.py
valida la funcionalidad de la API:
Esto realiza una verificación exhaustiva de:
- Descubrimiento de puntos finales de API
- Disponibilidad de la documentación
- Ejecución de consulta válida
- Manejo de errores para consultas no válidas
Uso
El servidor estará disponible en:
- Trino: http://localhost:9095
- Servidor MCP: http://localhost:9096
- Servidor API: http://localhost:9097
Conexión del cliente
✅ IMPORTANTE : Los scripts del cliente se ejecutan en tu equipo local (FUERA de Docker) y se conectan a los contenedores Docker. Los scripts gestionan esto automáticamente mediante comandos docker exec. ¡No necesitas estar dentro del contenedor para usar MCP!
Ejecutar pruebas desde su máquina local:
Opciones de transporte
Este servidor admite dos métodos de transporte, pero actualmente solo STDIO es confiable:
Transporte STDIO (recomendado y funcional)
El transporte STDIO funciona de manera confiable y actualmente es el único método recomendado para pruebas y desarrollo:
Transporte SSE (NO RECOMENDADO - Presenta problemas críticos)
SSE es el transporte predeterminado en MCP, pero presenta graves problemas con la versión actual de MCP 1.3.0, que provocan fallos del servidor al desconectarse el cliente. No se recomienda su uso hasta que se resuelvan estos problemas :
Problemas conocidos y soluciones
Corregido: Inicialización de la API del contenedor Docker
SOLUCIONADO : Se solucionó un problema por el cual la API del contenedor Docker devolvía respuestas 503 "Servicio no disponible". El problema se debía a que la función app_lifespan
no inicializaba correctamente app_context_global
ni la conexión del cliente Trino. La solución garantiza que:
- El cliente Trino se conecta explícitamente durante el inicio
- La variable global AppContext se inicializa correctamente
- Los controles de salud ahora funcionan correctamente
Si encuentra errores 503, verifique que su contenedor se haya reconstruido con el código más reciente:
Fallos del transporte SSE de MCP 1.3.0
Hay un problema crítico con el transporte SSE de MCP 1.3.0 que provoca fallos del servidor cuando los clientes se desconectan. Hasta que se integre una versión más reciente de MCP, utilice exclusivamente el transporte STDIO. El error se manifiesta como:
Manejo del catálogo Trino
Se solucionó un problema con la gestión del catálogo en el cliente Trino. La implementación original intentaba usar sentencias USE catalog
, lo cual no funcionaba correctamente. La solución establece el catálogo directamente en los parámetros de conexión.
Estructura del proyecto
Este proyecto está organizado de la siguiente manera:
src/
- Código fuente principal del servidor Trino MCPexamples/
- Ejemplos sencillos que muestran cómo utilizar el servidorscripts/
- Scripts útiles de diagnóstico y pruebatools/
- Scripts de utilidad para la creación y configuración de datostests/
- Pruebas automatizadas
Archivos clave:
llm_trino_api.py
: servidor API independiente para la integración de LLMtest_llm_api.py
- Script de prueba para el servidor APItest_mcp_stdio.py
- Script de prueba principal que utiliza el transporte STDIO (recomendado)test_bullshit_query.py
- Ejemplo de consulta compleja con datos falsosload_bullshit_data.py
- Script para cargar datos generados en Trinotools/create_bullshit_data.py
- Script para generar datos de prueba divertidosrun_tests.sh
- Script para ejecutar pruebas automatizadasexamples/simple_mcp_query.py
- Ejemplo simple para consultar datos usando MCP
Desarrollo
IMPORTANTE : Todos los scripts se pueden ejecutar desde su máquina local: se comunicarán automáticamente con los contenedores Docker a través de comandos docker exec.
Pruebas
Para probar que las consultas Trino funcionan correctamente, utilice el script de prueba de transporte STDIO:
Para realizar pruebas más complejas con datos falsos:
Para probar el punto final de la API de LLM:
Cómo los LLM pueden usar esto
Los LLM pueden utilizar el servidor Trino MCP para:
- Obtener información del esquema de la base de datos :Copy
- Ejecutar consultas analíticas complejas :Copy
- Realizar análisis de datos y presentar resultados :Copy
Ejemplo de análisis real de LLM: trabajos basura por empresa
He aquí un ejemplo real de lo que un LLM podría producir cuando se le pide "Identificar las empresas con la mayor cantidad de empleados en trabajos de mierda y crear un gráfico de sirena":
Paso 1: LLM genera y ejecuta la consulta
Paso 2: LLM obtiene y analiza los resultados
Paso 3: LLM genera una visualización del gráfico de sirena
Gráfico de barras alternativo:
Paso 4: LLM proporciona información clave
El LLM puede analizar los datos y proporcionar información:
- "Unknown Co" tiene la mayor cantidad de empleados en roles de mierda (2), mientras que todos los demás tienen solo uno
- La mayoría de las empresas han conseguido una puntuación perfecta de 10,0 en el factor de estupidez.
- Las empresas centradas en la tecnología (BitEdge, CyberWare, etc.) parecen crear roles particularmente insignificantes
- Los roles de mierda aparecen concentrados en niveles ejecutivos o de puestos especializados
Este ejemplo demuestra cómo un LLM puede:
- Generar consultas SQL apropiadas basadas en preguntas en lenguaje natural
- Procesar e interpretar los resultados de Trino
- Crear representaciones visuales de los datos
- Proporcionar información y análisis significativos
Accediendo a la API
El servidor Trino MCP ahora incluye dos opciones de API para acceder a los datos:
1. API de contenedor Docker (Puerto 9097)
2. API independiente de Python (puerto 8008)
Ambas API ofrecen los siguientes puntos finales:
GET /api
- Documentación de la API y ejemplos de usoPOST /api/query
- Ejecutar consultas SQL contra Trino
Estas API eliminan la necesidad de scripts envolventes y permiten que los LLM consulten a Trino directamente mediante llamadas REST, lo que hace que sea mucho más sencilla la integración con servicios como Claude, GPT y otros sistemas de IA.
Solución de problemas
La API devuelve el error 503: Servicio no disponible
Si la API del contenedor Docker devuelve errores 503:
- Asegúrese de haber reconstruido el contenedor con el código más reciente:Copy
- Verifique los registros del contenedor para detectar errores:Copy
- Verifique que Trino esté funcionando correctamente:Copy
Conflictos de puertos con API independientes
La API independiente usa el puerto 8008 por defecto para evitar conflictos. Si ve el error "Dirección ya en uso":
- Edite
llm_trino_api.py
y cambie el número de puerto en la última línea:Copy - Ejecutar con un puerto personalizado a través de la línea de comando:Copy
Trabajo futuro
Esta versión ahora está en versión beta con las siguientes mejoras planificadas:
- [ ] Integrar con versiones más nuevas de MCP cuando estén disponibles para solucionar problemas de transporte de SSE
- [ ] Agregar/Validar soporte para Hive, JDBC y otros conectores
- [ ] Agregue una validación de consultas más completa en diferentes tipos y complejidades
- [ ] Implementar soporte para más tipos de datos y funciones avanzadas de Trino
- [ ] Mejorar los mecanismos de gestión y recuperación de errores
- [ ] Agregar controles de permisos y autenticación de usuarios
- [ ] Crear ejemplos y documentación más completos
- [ ] Desarrollar interfaces de gestión y monitoreo administrativo
- [ ] Agregar métricas de rendimiento y sugerencias de optimización de consultas
- [ ] Implementar soporte para consultas de larga duración y transmisión de resultados
Desarrollado por Stink Labs, 2025
You must be authenticated.
Proporciona modelos de IA con acceso estructurado al motor de consulta SQL distribuido de Trino, lo que permite a los LLM consultar y analizar directamente los datos almacenados en las bases de datos de Trino.
- Features
- Quick Start
- LLM Integration
- Demo and Validation Scripts 🚀
- Usage
- Client Connection
- Transport Options
- Known Issues and Fixes
- Project Structure
- Development
- Testing
- How LLMs Can Use This
- Accessing the API
- Troubleshooting
- Future Work