remote-capable server
The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.
Integrations
Allows AI assistants to execute SQL queries against a Trino distributed SQL query engine, with support for catalog/schema/table discovery and schema inspection.
Servidor Trino MCP en Go
Un servidor de Protocolo de Contexto de Modelo (MCP) de alto rendimiento para Trino, implementado en Go. Este proyecto permite que los asistentes de IA interactúen fluidamente con el motor de consultas SQL distribuido de Trino mediante herramientas MCP estandarizadas.
Descripción general
Este proyecto implementa un servidor de Protocolo de Contexto de Modelo (MCP) para Trino en Go. Permite a los asistentes de IA acceder al motor de consultas SQL distribuido de Trino mediante herramientas MCP estandarizadas.
Trino (anteriormente PrestoSQL) es un potente motor de consulta SQL distribuido diseñado para análisis rápidos en grandes conjuntos de datos.
Características
- ✅ Implementación del servidor MCP en Go
- ✅ Ejecución de consultas SQL de Trino a través de herramientas MCP
- ✅ Descubrimiento de catálogos, esquemas y tablas
- ✅ Compatibilidad con contenedores Docker
- ✅ Admite transportes STDIO y HTTP
- ✅ Compatibilidad con eventos enviados por el servidor (SSE) para Cursor y otros clientes MCP
- ✅ Compatible con Cursor, Claude Desktop, Windsurf, ChatWise y cualquier cliente compatible con MCP.
Instalación
Homebrew (macOS y Linux)
La forma más fácil de instalar mcp-trino es usando Homebrew:
Para actualizar a la última versión:
Métodos de instalación alternativos
Descarga manual
- Descargue el binario apropiado para su plataforma desde la página de versiones de GitHub .
- Coloque el binario en un directorio incluido en su PATH (por ejemplo,
/usr/local/bin
en Linux/macOS) - Hazlo ejecutable (
chmod +x mcp-trino
en Linux/macOS)
De la fuente
Descargas
Puede descargar binarios prediseñados para su plataforma:
Plataforma | Arquitectura | Enlace de descarga |
---|---|---|
macOS | x86_64 (Intel) | Descargar |
macOS | ARM64 (silicio de Apple) | Descargar |
Linux | x86_64 | Descargar |
Linux | ARM64 | Descargar |
Ventanas | x86_64 | Descargar |
O consulte todas las descargas disponibles en la página de lanzamientos de GitHub .
Integración MCP
Este servidor MCP se puede integrar con varias aplicaciones de IA:
Uso de la imagen de Docker
Para utilizar la imagen de Docker en lugar de un binario local:
Nota : El nombre DNS especial
host.docker.internal
permite que el contenedor se conecte a los servicios que se ejecutan en el host. Si su servidor Trino se ejecuta en otro lugar, reemplácelo con el host correspondiente.
Esta configuración de Docker se puede utilizar en cualquiera de las siguientes aplicaciones.
Cursor
Para usar con Cursor , cree o edite ~/.cursor/mcp.json
:
Reemplace las variables de entorno con su configuración específica de Trino.
Para el modo de transporte HTTP+SSE (compatible con la integración del cursor):
Luego inicie el servidor en una terminal separada con:
Escritorio de Claude
Para utilizar con Claude Desktop , edite su archivo de configuración de Claude:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- Ventanas:
%APPDATA%\Claude\claude_desktop_config.json
Después de actualizar la configuración, reinicie Claude Desktop. Debería ver las herramientas de MCP disponibles en el menú de herramientas.
Windsurf
Para usar con Windsurf , crea o edita tu mcp_config.json
:
Reinicie Windsurf para aplicar los cambios. Las herramientas Trino MCP estarán disponibles para la IA de Cascade.
ChatWise
Para utilizar con ChatWise , siga estos pasos:
- Abra ChatWise y vaya a Configuración
- Vaya a la sección Herramientas
- Haga clic en el icono "+" para agregar una nueva herramienta
- Seleccione "Línea de comandos MCP"
- Configurar con los siguientes detalles:
- ID:
mcp-trino
(o cualquier nombre que prefieras) - Comando:
mcp-trino
- Argumentos: (dejar vacío)
- Env: Agregue las siguientes variables de entorno:Copy
- ID:
Alternativamente, puede importar la configuración desde JSON:
- Copia este JSON a tu portapapeles:Copy
- En Configuración de ChatWise > Herramientas, haga clic en el ícono "+"
- Seleccione "Importar JSON desde el portapapeles".
- Mueva el interruptor junto a la herramienta para habilitarla.
Una vez habilitado, haga clic en el ícono del martillo debajo del cuadro de entrada en ChatWise para acceder a las herramientas de Trino MCP.
Herramientas MCP disponibles
El servidor proporciona las siguientes herramientas MCP:
ejecutar_consulta
Ejecute una consulta SQL contra Trino con soporte SQL completo para consultas analíticas complejas.
Ejemplo de mensaje:
¿Cuántos clientes tenemos por región? ¿Podrías mostrarlos en orden descendente?
Ejemplo:
Respuesta:
lista_catálogos
Enumere todos los catálogos disponibles en el servidor Trino, proporcionando una vista integral de su ecosistema de datos.
Ejemplo de mensaje:
"¿A qué bases de datos tenemos acceso en nuestro entorno Trino?"
Ejemplo:
Respuesta:
esquemas de lista
Enumere todos los esquemas en un catálogo, lo que le ayudará a navegar a través de la jerarquía de datos de manera eficiente.
Ejemplo de mensaje:
"¿Qué esquemas o conjuntos de datos están disponibles en el catálogo tpch?"
Ejemplo:
Respuesta:
listas_de_tablas
Enumere todas las tablas de un esquema, lo que le dará visibilidad de los conjuntos de datos disponibles.
Ejemplo de mensaje:
¿Qué tablas están disponibles en el esquema tpch tiny? Necesito saber qué datos podemos consultar.
Ejemplo:
Respuesta:
obtener_esquema_de_tabla
Obtenga el esquema de una tabla, comprendiendo la estructura de sus datos para una mejor planificación de consultas.
Ejemplo de mensaje:
¿Qué columnas hay en la tabla de clientes? Necesito conocer los tipos de datos y la estructura antes de escribir mi consulta.
Ejemplo:
Respuesta:
Esta información es invaluable para comprender los nombres de las columnas, los tipos de datos y las restricciones de nulabilidad antes de escribir consultas en la tabla.
Ejemplo de extremo a extremo
A continuación se muestra un ejemplo de interacción completo que muestra cómo un asistente de IA podría usar estas herramientas para responder una pregunta comercial:
Consulta del usuario: "¿Pueden ayudarme a analizar a nuestros clientes más importantes? Quiero saber quiénes son los 5 clientes con los saldos de cuenta más altos".
Flujo de trabajo del Asistente de IA:
- Primero, descubre los catálogos disponiblesCopy
- Luego, busque los esquemas disponiblesCopy
- Explorar las mesas disponiblesCopy
- Comprobar el esquema de la tabla de clientesCopy
- Por último, ejecute la consulta.Copy
- Devuelve los resultados al usuario:Copy
Este flujo de trabajo continuo demuestra cómo las herramientas MCP permiten a los asistentes de IA explorar y consultar datos de forma conversacional.
Configuración
El servidor se puede configurar utilizando las siguientes variables de entorno:
Variable | Descripción | Por defecto |
---|---|---|
TRINO_HOST | Nombre de host del servidor Trino | host local |
TRINO_PORT | Puerto del servidor Trino | 8080 |
TRINO_USUARIO | Usuario de Trino | trino |
TRINO_CONTRASEÑA | Contraseña de Trino | (vacío) |
CATÁLOGO TRINO | Catálogo predeterminado | memoria |
ESQUEMA TRINO | Esquema predeterminado | por defecto |
ESQUEMA TRINO | Esquema de conexión (http/https) | https |
TRINO_SSL | Habilitar SSL | verdadero |
TRINO_SSL_INSEGURA | Permitir SSL inseguro | verdadero |
TRINO_PERMITIR_CONSULTAS_DE_ESCRITURA | Permitir consultas SQL que no sean de solo lectura | FALSO |
MCP_TRANSPORT | Método de transporte (stdio/http) | estudio |
PUERTO MCP | Puerto HTTP para transporte http | 9097 |
Host MCP | Host para devoluciones de llamadas HTTP | host local |
Nota : Cuando
TRINO_SCHEME
se establece en "https",TRINO_SSL
se establece automáticamente en verdadero independientemente del valor proporcionado.
Importante : El modo de conexión predeterminado es HTTPS. Si utiliza un servidor Trino que solo admite HTTP, debe configurar
TRINO_SCHEME=http
en sus variables de entorno.
Nota de seguridad : De forma predeterminada, solo se permiten consultas de solo lectura (SELECT, SHOW, DESCRIBE, EXPLAIN) para evitar la inyección de SQL. Si necesita ejecutar operaciones de escritura u otras consultas que no sean de lectura, configure
TRINO_ALLOW_WRITE_QUERIES=true
, pero tenga en cuenta que esto omite esta protección de seguridad.
Para la integración con Cursor : Al usar Cursor, configure
MCP_TRANSPORT=http
y conéctese al punto final/sse
. El servidor gestionará automáticamente las conexiones SSE (Eventos enviados por el servidor).
Contribuyendo
¡Agradecemos sus contribuciones! No dude en enviar una solicitud de incorporación de cambios.
Licencia
Este proyecto está licenciado bajo la licencia MIT: consulte el archivo de LICENCIA para obtener más detalles.
CI/CD y versiones
Este proyecto utiliza GitHub Actions para la integración continua y GoReleaser para lanzamientos automatizados.
Comprobaciones de integración continua
Nuestra canalización CI realiza las siguientes comprobaciones en todos los PR y se compromete con la rama principal:
Calidad del código
- Linting : uso de golangci-lint para verificar problemas de código comunes y violaciones de estilo
- Verificación del módulo Go : garantizar que go.mod y go.sum se mantengan correctamente
- Formato : Verificar que el código esté correctamente formateado con gofmt
Seguridad
- Análisis de vulnerabilidades : uso de govulncheck para comprobar vulnerabilidades conocidas en dependencias
- Escaneo de dependencias : uso de Trivy para buscar vulnerabilidades en dependencias (CRÍTICAS, ALTAS y MEDIAS)
- Generación de SBOM : creación de una lista de materiales de software para el seguimiento de dependencias
- Procedencia SLSA : Creación de una procedencia de construcción verificable para la seguridad de la cadena de suministro
Pruebas
- Pruebas unitarias : ejecución de pruebas con detección de carrera e informes de cobertura de código
- Verificación de compilación : garantizar que la base de código se compile correctamente
Seguridad de CI/CD
- Privilegio mínimo : los flujos de trabajo se ejecutan con los permisos mínimos requeridos
- Versiones fijadas : todas las acciones de GitHub usan versiones específicas para prevenir ataques a la cadena de suministro
- Actualizaciones de dependencias : actualizaciones de dependencias automatizadas a través de Dependabot
Proceso de liberación
Cuando los cambios se fusionan con la rama principal:
- Se ejecutan comprobaciones de CI para validar la calidad y la seguridad del código.
- Si tiene éxito, se creará automáticamente una nueva versión con:
- Versiones semánticas basadas en mensajes de confirmación
- Construcciones binarias para múltiples plataformas
- Publicación de imágenes de Docker en GitHub Container Registry
- SBOM y certificación de procedencia
This server cannot be installed
Un servidor de Protocolo de Contexto de Modelo (MCP) de alto rendimiento para Trino implementado en Go.