Apache Doris MCP Server – Detaillierte Projektbeschreibung
Projektübersicht
Der Apache Doris MCP (Model Context Protocol) Server ist ein auf Python und FastAPI basierender Backend-Service, der die nahtlose Integration mit der Apache Doris Datenbank über das Model Context Protocol (MCP) ermöglicht. Er bietet eine standardisierte Schnittstelle für KI-Agenten und Clients und unterstützt Funktionen wie Natural Language to SQL (NL2SQL), SQL-Abfrageausführung, Metadatenverwaltung und Datenanalyse. Das Projekt ist eine wichtige Erweiterung der Apache Doris Community und eignet sich besonders für Geschäftsszenarien, die eine effiziente Dateninteraktion und intelligente Analyse erfordern.
Seit der Veröffentlichung der Version 0.3.0 im Jahr 2025 hat das Projekt eine bedeutende Architekturaktualisierung erfahren, die von einer auf SSE (Server-Sent Events) basierenden Kommunikation zu einem einheitlichen Streamable HTTP-Protokoll übergegangen ist. Außerdem wurden ein Enterprise-Security-Framework und Funktionen zur Leistungsoptimierung hinzugefügt. Das Hauptziel des Projekts ist die Überbrückung von KI-Systemen und der Apache Doris Datenbank über das MCP-Protokoll, um eine intelligente Datenerkundung und -analyse zu ermöglichen.
Kernfunktionen
Der Apache Doris MCP Server bietet die folgenden Hauptfunktionen:
-
Natural Language to SQL (NL2SQL)
- Unterstützt die Generierung von SQL-Abfragen durch natürliche Spracheingabe in Kombination mit Large Language Models (LLMs) zur intelligenten Abfragegenerierung.
- Geeignet für Szenarien, in denen Geschäftsanwender Daten abfragen können, ohne komplexe SQL-Abfragen schreiben zu müssen.
-
SQL-Abfrageausführung
- Unterstützt die direkte Ausführung von SQL-Befehlen über das Tool
exec_querymit anpassbarer Datenbankauswahl, Zeilenbeschränkung und Timeout-Einstellungen. - Integrierte Sicherheitsprüfungen (wie SQL-Injection-Schutz) und automatische LIMIT-Hinzufügung gewährleisten Abfragesicherheit und -effizienz.
- Unterstützt die direkte Ausführung von SQL-Befehlen über das Tool
-
Metadatenverwaltung
- Bietet umfangreiche Tools zur Metadatenextraktion, darunter:
- Auflisten aller Datenbanken und Tabellen (
get_all_databases,get_database_tables). - Abrufen von Tabellenstruktur, Kommentaren und Indexinformationen (
get_table_schema,get_table_comment,get_column_comments,get_table_indexes). - Unterstützung der Erkennung mehrerer Kataloge (
get_catalog_list).
- Auflisten aller Datenbanken und Tabellen (
- Bietet umfangreiche Tools zur Metadatenextraktion, darunter:
-
Audit-Log-Abfrage
- Abrufen der letzten Audit-Einträge über
get_recent_audit_logsmit Unterstützung für benutzerdefinierte Zeiträume und Aufzeichnungsbeschränkungen.
- Abrufen der letzten Audit-Einträge über
-
Enterprise-Security-Framework
- Unterstützt verschiedene Authentifizierungsmethoden (Token, Basic Auth, OAuth).
- Rollenbasierte Zugriffskontrolle (RBAC) mit vier Sicherheitsstufen.
- Integrierter SQL-Injection-Schutz, Abfragevalidierung und Datendesensibilisierung.
-
Leistungsoptimierung
- Optimierung der Abfrageausführung durch verbesserte Caching-Mechanismen und Verbindungspool-Verwaltung zur Leistungssteigerung.
- Unterstützung von Leistungsüberwachung und statistischer Analyse (
performance_stats).
-
Mehrere Kommunikationsmodi
- Streamable HTTP: Unterstützt Request/Response und Streaming über einen einheitlichen
/mcpEndpunkt (src/streamable_server.py). - SSE (veraltet): Frühere Versionen unterstützten die Kommunikation über die Endpunkte
/sseund/mcp/messages(src/sse_server.py). - Stdio (optional): Interaktion über Standard Input/Output (
src/stdio_server.py).
- Streamable HTTP: Unterstützt Request/Response und Streaming über einen einheitlichen
-
Experimentelle Funktionen
- Spaltenstatistische Analyse (
column_analysis) zur Bereitstellung von Dateneinblicken. - Unterstützung für Katalogverbünde, geeignet für Umgebungen mit mehreren Katalogen.
- Spaltenstatistische Analyse (
Technische Architektur
Die Architektur des Projekts ist modular und effizient gestaltet und umfasst die folgenden Komponenten:
- Kernframework: Basiert auf Python 3.12 und FastAPI und bietet einen hochperformanten API-Service.
- MCP-Protokollimplementierung:
- Bietet standardisierte Schnittstellen für Tool-Aufrufe, Ressourcenverwaltung und Prompt-Interaktion.
- Verarbeitet alle Anfragen über einen einheitlichen
/mcpEndpunkt, um die Integration zu vereinfachen.
- Datenbankinteraktion:
doris_mcp_server/utils/db.py: Bietet Datenbankverbindung (get_db_connection) und Abfrageausführung (execute_query,execute_query_df).doris_mcp_server/utils/schema_extractor.py: Die KlasseMetadataExtractorist für die Metadatenextraktion zuständig und enthält einen Caching-Mechanismus.doris_mcp_server/utils/sql_executor_tools.py: Die Funktionexecute_sql_querykapselt die Abfragelogik und enthält Sicherheitsprüfungen und Ergebnisserialisierung.
- Sicherheitsmanagement:
- Unterstützt mehrere Authentifizierungsmethoden und RBAC.
- Bietet SQL-Injection-Schutz, Abfragevalidierung und Audit-Log-Aufzeichnung.
- Bereitstellungsunterstützung:
- Docker-Image-basierte Bereitstellung mit einheitlicher Portkonfiguration (3000, 3001, 3002).
- Umgebungsvariablenkonfiguration (z. B.
DB_HOST,DB_PORT,DB_USER,DB_PASSWORD).
Architekturänderungen: In Version 0.3.0 wurden ca. 300 Zeilen Legacy-SSE-Code entfernt und auf Streamable HTTP migriert, die Tool-Benennung vereinheitlicht (Entfernung des Präfixes
mcp_doris_) und der Modularisierungsgrad erhöht.
Installation und Verwendung
Systemanforderungen
- Python 3.12 oder höher
- Apache Doris Datenbank (Verbindung über das MySQL-Protokoll)
- Paketverwaltungstool (z. B.
uvoderpip) - Optional: Docker (für die Container-basierte Bereitstellung)
Installationsschritte
-
Repository klonen:
git clone https://github.com/apache/doris-mcp-server.git cd doris-mcp-server -
Abhängigkeiten installieren:
Verwenden Sieuv(empfohlen) oderpipzur Installation:uv syncoder
pip install -r requirements.txt -
Umgebungsvariablen konfigurieren:
Erstellen Sie eine.env-Datei oder legen Sie die Umgebungsvariablen direkt fest:export DORIS_HOST=<doris-host> export DORIS_PORT=<port> export DORIS_USER=<doris-user> export DORIS_PASSWORD=<doris-pwd> export SERVER_PORT=3000 -
Server starten:
uv run --with mcp-doris --python 3.13 mcp-dorisoder
python -m mcp_doris.mcp_server -
Start überprüfen:
Nach erfolgreichem Start kann die Interaktion über einen MCP-Client (z. B. Cursor) oder einen integrierten MCP-Browser (http://localhost:5173) erfolgen.
Verbindung testen
Führen Sie ein Testskript aus, um die Datenbankverbindung zu überprüfen:
python src/doris-mcp-server/test.py
Erwartete Ausgabe:
🚀 Doris MCP Server is starting...
[DorisConnector] Connected to 127.0.0.1:9030
✅ Database connection successful.
[DorisConnector] Connection closed.
Anwendungsfälle
-
Echtzeit-Datenanalyse
- In Kombination mit der NL2SQL-Funktion können Geschäftsanwender Echtzeitdaten in natürlicher Sprache abfragen und Berichte oder Dashboards erstellen.
- Geeignet für die Echtzeit-Entscheidungsunterstützung in Branchen wie Einzelhandel, Finanzen und Telekommunikation.
-
Metadatenerkundung
- Dateningenieure können schnell Datenbankschema, Tabellenstruktur und Indexinformationen abrufen, um die Datenmodellierung und -optimierung zu beschleunigen.
-
KI-gesteuerte Business Intelligence
- Integration von KI-Agenten (wie Claude, Cursor) zur Automatisierung von Datenabfrage- und Analyse-Workflows über das MCP-Protokoll.
-
Sicherheits- und Compliance-Management
- Enterprise-Security-Framework und Audit-Log-Funktionen erfüllen die Anforderungen von Branchen wie Finanzen und Gesundheitswesen an Datensicherheit und Compliance.
-
Umgebungen mit mehreren Katalogen
- Unterstützung für Katalogverbünde, geeignet für die Metadatenverwaltung und -abfrage in komplexen Data-Warehouse-Umgebungen.
Projektvorteile und -einschränkungen
Vorteile
- Intelligenz: NL2SQL und LLM-Integration senken die Hürde für die Datenabfrage.
- Sicherheit: Mehrfache Authentifizierung, RBAC und SQL-Schutz gewährleisten Sicherheit auf Enterprise-Niveau.
- Hohe Leistung: Caching, Verbindungspools und Abfrageoptimierung steigern die Effizienz.
- Flexibilität: Unterstützung mehrerer Kommunikationsmodi und modularer Tool-Erweiterungen.
Einschränkungen
- Stabilität früherer Versionen: Einige Funktionen (wie
column_analysis) sind experimentell und können Fehler enthalten. - Abhängigkeit von der Doris-Datenbank: Hauptsächlich für Apache Doris konzipiert, die Kompatibilität mit anderen MySQL-Protokoll-Datenbanken ist begrenzt.
- SSE veraltet: Version 0.3.0 entfernt die SSE-Unterstützung, eine Migration zu Streamable HTTP ist erforderlich.
Zusammenfassung
Der Apache Doris MCP Server ist ein leistungsstarkes und flexibles Tool, das die Apache Doris Datenbank mit KI-gesteuerten Analyseanforderungen verbindet. Seine Funktionen wie NL2SQL, Metadatenverwaltung, Sicherheit und Leistungsoptimierung machen ihn in Echtzeit-Datenanalysen, Business Intelligence und Enterprise-Anwendungen vielversprechend.