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.
Trino MCP-Server in Go
Ein leistungsstarker Model Context Protocol (MCP)-Server für Trino, implementiert in Go. Dieses Projekt ermöglicht KI-Assistenten die nahtlose Interaktion mit der verteilten SQL-Abfrage-Engine von Trino über standardisierte MCP-Tools.
Überblick
Dieses Projekt implementiert einen Model Context Protocol (MCP)-Server für Trino in Go. Es ermöglicht KI-Assistenten den Zugriff auf die verteilte SQL-Abfrage-Engine von Trino über standardisierte MCP-Tools.
Trino (ehemals PrestoSQL) ist eine leistungsstarke verteilte SQL-Abfrage-Engine, die für die schnelle Analyse großer Datensätze entwickelt wurde.
Merkmale
- ✅ MCP-Serverimplementierung in Go
- ✅ Trino SQL-Abfrageausführung über MCP-Tools
- ✅ Katalog-, Schema- und Tabellenerkennung
- ✅ Docker-Container-Unterstützung
- ✅ Unterstützt sowohl STDIO- als auch HTTP-Transporte
- ✅ Server-Sent Events (SSE)-Unterstützung für Cursor und andere MCP-Clients
- ✅ Kompatibel mit Cursor, Claude Desktop, Windsurf, ChatWise und allen MCP-kompatiblen Clients.
Installation
Homebrew (macOS und Linux)
Der einfachste Weg, mcp-trino zu installieren, ist die Verwendung von Homebrew:
So aktualisieren Sie auf die neueste Version:
Alternative Installationsmethoden
Manueller Download
- Laden Sie die entsprechende Binärdatei für Ihre Plattform von der GitHub-Releases -Seite herunter.
- Platzieren Sie die Binärdatei in einem Verzeichnis, das in Ihrem PATH enthalten ist (z. B.
/usr/local/bin
unter Linux/macOS). - Machen Sie es ausführbar (
chmod +x mcp-trino
unter Linux/macOS)
Aus der Quelle
Downloads
Sie können vorgefertigte Binärdateien für Ihre Plattform herunterladen:
Plattform | Architektur | Download-Link |
---|---|---|
macOS | x86_64 (Intel) | Herunterladen |
macOS | ARM64 (Apple Silicon) | Herunterladen |
Linux | x86_64 | Herunterladen |
Linux | ARM64 | Herunterladen |
Windows | x86_64 | Herunterladen |
Oder sehen Sie sich alle verfügbaren Downloads auf der GitHub-Releases -Seite an.
MCP-Integration
Dieser MCP-Server kann in mehrere KI-Anwendungen integriert werden:
Docker-Image verwenden
So verwenden Sie das Docker-Image anstelle einer lokalen Binärdatei:
Hinweis : Der spezielle DNS-Name
host.docker.internal
ermöglicht dem Container die Verbindung mit Diensten, die auf dem Host-Rechner laufen. Falls Ihr Trino-Server woanders läuft, ersetzen Sie ihn durch den entsprechenden Host.
Diese Docker-Konfiguration kann in jeder der folgenden Anwendungen verwendet werden.
Cursor
Zur Verwendung mit Cursor erstellen oder bearbeiten Sie ~/.cursor/mcp.json
:
Ersetzen Sie die Umgebungsvariablen durch Ihre spezifische Trino-Konfiguration.
Für den HTTP+SSE-Transportmodus (unterstützt für die Cursor-Integration):
Starten Sie den Server dann in einem separaten Terminal mit:
Claude Desktop
Zur Verwendung mit Claude Desktop bearbeiten Sie Ihre Claude-Konfigurationsdatei:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- Windows:
%APPDATA%\Claude\claude_desktop_config.json
Starten Sie Claude Desktop nach der Aktualisierung der Konfiguration neu. Die MCP-Tools sollten im Menü „Tools“ verfügbar sein.
Windsurf
Zur Verwendung mit Windsurf erstellen oder bearbeiten Sie Ihre mcp_config.json
:
Starten Sie Windsurf neu, um die Änderungen zu übernehmen. Die Trino MCP-Tools stehen der Cascade AI zur Verfügung.
ChatWise
Zur Verwendung mit ChatWise befolgen Sie diese Schritte:
- Öffnen Sie ChatWise und gehen Sie zu Einstellungen
- Navigieren Sie zum Abschnitt „Tools“
- Klicken Sie auf das „+“-Symbol, um ein neues Werkzeug hinzuzufügen
- Wählen Sie „Command Line MCP“
- Konfigurieren Sie mit den folgenden Details:
- ID:
mcp-trino
(oder ein beliebiger Name Ihrer Wahl) - Befehl:
mcp-trino
- Argumente: (leer lassen)
- Env: Fügen Sie die folgenden Umgebungsvariablen hinzu:Copy
- ID:
Alternativ können Sie die Konfiguration aus JSON importieren:
- Kopieren Sie dieses JSON in Ihre Zwischenablage:Copy
- Klicken Sie in den ChatWise-Einstellungen > Tools auf das Symbol "+"
- Wählen Sie „JSON aus der Zwischenablage importieren“
- Schalten Sie den Schalter neben dem Werkzeug um, um es zu aktivieren
Klicken Sie nach der Aktivierung auf das Hammersymbol unter dem Eingabefeld in ChatWise, um auf die Trino MCP-Tools zuzugreifen.
Verfügbare MCP-Tools
Der Server stellt die folgenden MCP-Tools bereit:
Abfrage ausführen
Führen Sie eine SQL-Abfrage gegen Trino mit vollständiger SQL-Unterstützung für komplexe analytische Abfragen aus.
Beispiel-Eingabeaufforderung:
„Wie viele Kunden haben wir pro Region? Können Sie diese in absteigender Reihenfolge anzeigen?“
Beispiel:
Antwort:
Kataloglisten
Listen Sie alle auf dem Trino-Server verfügbaren Kataloge auf und erhalten Sie so einen umfassenden Überblick über Ihr Datenökosystem.
Beispiel-Eingabeaufforderung:
„Auf welche Datenbanken haben wir in unserer Trino-Umgebung Zugriff?“
Beispiel:
Antwort:
list_schemas
Listen Sie alle Schemata in einem Katalog auf, um effizient durch die Datenhierarchie zu navigieren.
Beispiel-Eingabeaufforderung:
„Welche Schemata oder Datensätze sind im tpch-Katalog verfügbar?“
Beispiel:
Antwort:
list_tables
Listen Sie alle Tabellen in einem Schema auf, um Einblick in die verfügbaren Datensätze zu erhalten.
Beispiel-Eingabeaufforderung:
„Welche Tabellen sind im tpch-Tiny-Schema verfügbar? Ich muss wissen, welche Daten wir abfragen können.“
Beispiel:
Antwort:
get_table_schema
Holen Sie sich das Schema einer Tabelle und verstehen Sie die Struktur Ihrer Daten für eine bessere Abfrageplanung.
Beispiel-Eingabeaufforderung:
„Welche Spalten enthält die Kundentabelle? Ich muss die Datentypen und die Struktur kennen, bevor ich meine Abfrage schreibe.“
Beispiel:
Antwort:
Diese Informationen sind von unschätzbarem Wert, um die Spaltennamen, Datentypen und Nullbarkeitsbeschränkungen zu verstehen, bevor Sie Abfragen für die Tabelle schreiben.
End-to-End-Beispiel
Hier ist ein vollständiges Interaktionsbeispiel, das zeigt, wie ein KI-Assistent diese Tools verwenden könnte, um eine Geschäftsfrage zu beantworten:
Benutzeranfrage: „Können Sie mir helfen, unsere größten Kunden zu analysieren? Ich möchte die Top 5 der Kunden mit den höchsten Kontoständen kennen.“
Arbeitsablauf des KI-Assistenten:
- Entdecken Sie zunächst die verfügbaren KatalogeCopy
- Suchen Sie dann nach verfügbaren SchemataCopy
- Verfügbare Tische erkundenCopy
- Überprüfen Sie das KundentabellenschemaCopy
- Führen Sie abschließend die Abfrage ausCopy
- Gibt die Ergebnisse an den Benutzer zurück:Copy
Dieser nahtlose Workflow zeigt, wie KI-Assistenten mithilfe der MCP-Tools Daten im Dialogmodus erkunden und abfragen können.
Konfiguration
Der Server kann mit den folgenden Umgebungsvariablen konfiguriert werden:
Variable | Beschreibung | Standard |
---|---|---|
TRINO_HOST | Hostname des Trino-Servers | lokaler Host |
TRINO_PORT | Trino-Server-Port | 8080 |
TRINO_USER | Trino-Benutzer | Trino |
TRINO_PASSWORD | Trino-Passwort | (leer) |
TRINO_KATALOG | Standardkatalog | Erinnerung |
TRINO_SCHEMA | Standardschema | Standard |
TRINO_SCHEME | Verbindungsschema (http/https) | https |
TRINO_SSL | SSL aktivieren | WAHR |
TRINO_SSL_UNSICHER | Unsicheres SSL zulassen | WAHR |
TRINO_ALLOW_WRITE_QUERIES | Nicht schreibgeschützte SQL-Abfragen zulassen | FALSCH |
MCP_TRANSPORT | Transportmethode (stdio/http) | stdio |
MCP_PORT | HTTP-Port für HTTP-Transport | 9097 |
MCP_HOST | Host für HTTP-Rückrufe | lokaler Host |
Hinweis : Wenn
TRINO_SCHEME
auf „https“ eingestellt ist, wirdTRINO_SSL
unabhängig vom angegebenen Wert automatisch auf „true“ gesetzt.
Wichtig : Der Standardverbindungsmodus ist HTTPS. Wenn Sie einen HTTP-only-Trino-Server verwenden, müssen Sie
TRINO_SCHEME=http
in Ihren Umgebungsvariablen festlegen.
Sicherheitshinweis : Standardmäßig sind nur schreibgeschützte Abfragen (SELECT, SHOW, DESCRIBE, EXPLAIN) zulässig, um SQL-Injection zu verhindern. Wenn Sie Schreibvorgänge oder andere nicht lesbare Abfragen ausführen müssen, setzen Sie
TRINO_ALLOW_WRITE_QUERIES=true
. Beachten Sie jedoch, dass dadurch dieser Sicherheitsschutz umgangen wird.
Für die Cursor-Integration : Bei Verwendung mit Cursor setzen Sie
MCP_TRANSPORT=http
und stellen Sie eine Verbindung zum/sse
-Endpunkt her. Der Server verarbeitet SSE-Verbindungen (Server-Sent Events) automatisch.
Beitragen
Beiträge sind willkommen! Senden Sie gerne einen Pull Request.
Lizenz
Dieses Projekt ist unter der MIT-Lizenz lizenziert – Einzelheiten finden Sie in der Datei LICENSE.
CI/CD und Releases
Dieses Projekt verwendet GitHub Actions für kontinuierliche Integration und GoReleaser für automatisierte Releases.
Kontinuierliche Integrationsprüfungen
Unsere CI-Pipeline führt die folgenden Prüfungen an allen PRs und Commits zum Hauptzweig durch:
Codequalität
- Linting : Verwenden von golangci-lint zum Überprüfen auf häufige Codeprobleme und Stilverletzungen
- Überprüfung des Go-Moduls : Sicherstellen, dass go.mod und go.sum ordnungsgemäß gewartet werden
- Formatierung : Überprüfen, ob der Code mit gofmt richtig formatiert ist
Sicherheit
- Schwachstellen-Scan : Verwenden von govulncheck, um Abhängigkeiten auf bekannte Schwachstellen zu prüfen
- Abhängigkeitsscan : Verwenden von Trivy zum Scannen nach Schwachstellen in Abhängigkeiten (KRITISCH, HOCH und MITTEL)
- SBOM-Generierung : Erstellen einer Software-Stückliste zur Abhängigkeitsverfolgung
- SLSA-Herkunft : Erstellen einer überprüfbaren Build-Herkunft für die Sicherheit der Lieferkette
Testen
- Unit-Tests : Ausführen von Tests mit Race-Erkennung und Code-Coverage-Reporting
- Build-Verifizierung : Sicherstellen, dass die Codebasis erfolgreich erstellt wird
CI/CD-Sicherheit
- Geringste Berechtigungen : Workflows werden mit den minimal erforderlichen Berechtigungen ausgeführt
- Angeheftete Versionen : Alle GitHub-Aktionen verwenden bestimmte Versionen, um Angriffe auf die Lieferkette zu verhindern
- Abhängigkeitsaktualisierungen : Automatisierte Abhängigkeitsaktualisierungen über Dependabot
Freigabeprozess
Wenn Änderungen in den Hauptzweig integriert werden:
- CI-Prüfungen werden durchgeführt, um die Codequalität und -sicherheit zu validieren
- Bei Erfolg wird automatisch eine neue Version erstellt mit:
- Semantische Versionierung basierend auf Commit-Nachrichten
- Binärbuilds für mehrere Plattformen
- Docker-Image-Veröffentlichung im GitHub Container Registry
- SBOM und Herkunftsnachweis
This server cannot be installed
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
Ein leistungsstarker Model Context Protocol (MCP)-Server für Trino, implementiert in Go.
Related MCP Servers
- -securityAlicense-qualityGo server implementing Model Context Protocol (MCP) for filesystem operations.Last updated -228GoMIT License
- -securityAlicense-qualityThis server implements the Model Context Protocol (MCP) to handle asynchronous tasks with real-time status tracking, robust error handling, and automatic resource management.Last updated -21JavaScriptMIT License
- AsecurityFlicenseAqualityA Model Context Protocol (MCP) server that provides a simple sleep/wait tool, useful for adding delays between operations such as waiting between API calls or testing eventually consistent systems.Last updated -167JavaScript
- -security-license-qualityA Model Context Protocol (MCP) server that interacts with system APIs, allowing users to check connections, search employees, register breakfast, and update chemical information by shifts.Last updated -2