Home
Login

Der Apache Doris MCP-Server ist ein auf Python und FastAPI basierender Backend-Dienst, der das Model Context Protocol (MCP) unterstützt, um eine Verbindung zur Apache Doris-Datenbank herzustellen und Natural Language to SQL (NL2SQL), Query Execution und Metadatenverwaltung zu realisieren.

Apache-2.0Python 94apachedoris-mcp-server Last Updated: 2025-06-23

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:

  1. 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.
  2. SQL-Abfrageausführung

    • Unterstützt die direkte Ausführung von SQL-Befehlen über das Tool exec_query mit anpassbarer Datenbankauswahl, Zeilenbeschränkung und Timeout-Einstellungen.
    • Integrierte Sicherheitsprüfungen (wie SQL-Injection-Schutz) und automatische LIMIT-Hinzufügung gewährleisten Abfragesicherheit und -effizienz.
  3. 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).
  4. Audit-Log-Abfrage

    • Abrufen der letzten Audit-Einträge über get_recent_audit_logs mit Unterstützung für benutzerdefinierte Zeiträume und Aufzeichnungsbeschränkungen.
  5. Enterprise-Security-Framework

    • Unterstützt verschiedene Authentifizierungsmethoden (Token, Basic Auth, OAuth).
    • Rollenbasierte Zugriffskontrolle (RBAC) mit vier Sicherheitsstufen.
    • Integrierter SQL-Injection-Schutz, Abfragevalidierung und Datendesensibilisierung.
  6. Leistungsoptimierung

    • Optimierung der Abfrageausführung durch verbesserte Caching-Mechanismen und Verbindungspool-Verwaltung zur Leistungssteigerung.
    • Unterstützung von Leistungsüberwachung und statistischer Analyse (performance_stats).
  7. Mehrere Kommunikationsmodi

    • Streamable HTTP: Unterstützt Request/Response und Streaming über einen einheitlichen /mcp Endpunkt (src/streamable_server.py).
    • SSE (veraltet): Frühere Versionen unterstützten die Kommunikation über die Endpunkte /sse und /mcp/messages (src/sse_server.py).
    • Stdio (optional): Interaktion über Standard Input/Output (src/stdio_server.py).
  8. Experimentelle Funktionen

    • Spaltenstatistische Analyse (column_analysis) zur Bereitstellung von Dateneinblicken.
    • Unterstützung für Katalogverbünde, geeignet für Umgebungen mit mehreren Katalogen.

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 /mcp Endpunkt, 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 Klasse MetadataExtractor ist für die Metadatenextraktion zuständig und enthält einen Caching-Mechanismus.
    • doris_mcp_server/utils/sql_executor_tools.py: Die Funktion execute_sql_query kapselt 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. uv oder pip)
  • Optional: Docker (für die Container-basierte Bereitstellung)

Installationsschritte

  1. Repository klonen:

    git clone https://github.com/apache/doris-mcp-server.git
    cd doris-mcp-server
    
  2. Abhängigkeiten installieren: Verwenden Sie uv (empfohlen) oder pip zur Installation:

    uv sync
    

    oder

    pip install -r requirements.txt
    
  3. 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
    
  4. Server starten:

    uv run --with mcp-doris --python 3.13 mcp-doris
    

    oder

    python -m mcp_doris.mcp_server
    
  5. 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

  1. 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.
  2. Metadatenerkundung

    • Dateningenieure können schnell Datenbankschema, Tabellenstruktur und Indexinformationen abrufen, um die Datenmodellierung und -optimierung zu beschleunigen.
  3. KI-gesteuerte Business Intelligence

    • Integration von KI-Agenten (wie Claude, Cursor) zur Automatisierung von Datenabfrage- und Analyse-Workflows über das MCP-Protokoll.
  4. 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.
  5. 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.

Star History Chart