Skip to main content
Glama

📘 DataGate — Sicherer KI-fähiger Daten-Gateway

Build Release License

DataGate ist ein kopfloses, sicheres, policy-gesteuertes Gateway, das Datenbanken kontrolliert, vorhersehbar und ohne freies SQL für KI-Tools (wie GitHub Copilot) bereitstellt.

DataGate fungiert als Vermittler zwischen einem LLM und einer realen Datenbank: Es erlaubt keinen direkten Datenbankzugriff, setzt keine beliebigen Abfragen aus und gestattet keine Schreiboperationen. Es ist als read-only, schema-aware, multi-database und vollständig LLM-sicher konzipiert.

🎯 Hauptziele

  • Sicherer Datenzugriff — read-only garantiert über DB-Rollen, Policy-Engine und kontrollierten Query Builder.

  • Datenbankabstraktion — das Modell erzeugt kein SQL: DataGate baut sichere und validierte Abfragen.

  • Multi-Datenbank — kann sich mit verschiedenen Datenbanken verschiedener Anwendungen verbinden, wie ein kopfloser DBeaver.

  • Policy-Engine — granulare Kontrolle über Tabellen, Spalten, Filter, Limits und Komplexität der Operationen.

  • Schema-Bewusstsein — lädt automatisch das Datenbankschema und wendet Sicherheitsregeln an.

  • Echte Nebenläufigkeit — asynchrone und sichere Architektur, ideal für parallele Anfragen von Copilot.

  • Metriken und Audit — Nachverfolgung von Anfragen, Zeiten, Fehlern und Limits für Debugging und Beobachtbarkeit.

  • Leistungsprofilierung — In-Process-Latenzprofil (min/avg/p50/p95/p99/max) für die evolutionäre Leistungsüberwachung.

  • Abstraktes Backend — gemeinsames read-only Trait für Datenbank-Backends, mit konkreten Implementierungen für PostgreSQL, MySQL/MariaDB und SQLite.

Related MCP server: DB MCP Gateway

🧩 Hauptfunktionen

  • Kontrollierter Query Builder — semantische Operationen wie select, search, aggregate, mit automatischer Validierung.

  • Typisiertes MCP select — JSON-Vertrag, read-only Ausführung mit JSON-Zeilen, Policy, Audit und bereinigte Fehler; der MCP-Transport bleibt der nächste Schritt.

  • Typisiertes MCP search — semantische Suche mit ILIKE auf erlaubten Spalten, parametrisierte Abfragen, Policy/Rate-Limit/Metriken/Audit und serverseitig begrenzte Ausgabe.

  • Typisiertes MCP aggregatecount, sum, avg, min und max auf erlaubten Spalten, mit parametrisierten Filtern und ohne Unterstützung für freies SQL oder GROUP BY.

  • Versionierte MCP-API — stabiler Deskriptor für API-Version und verfügbare Tools.

  • MCP-stdio-Transport — Handshake, Discovery und Aufrufe von select, search und aggregate über den policy-sicheren Pfad.

  • Erweiterte Filter — Unterstützung für Muster (LIKE/ILIKE), Bereiche (BETWEEN) und Volltext (to_tsvector + plainto_tsquery), immer parametrisiert und durch Policy validiert.

  • Kontrollierter Schema-Katalog — policy-gefilterte Introspektion von Tabellen, Ansichten, Indizes, Constraints (PK/FK/UNIQUE/CHECK/EXCLUSION), Triggern, Funktionen, Prozeduren und Sequenzen; DDL-Definitionen nur wenn sicher.

  • Rate Limiting — Schutz vor Modell-Schleifen und zu schweren Abfragen.

  • Ausgabelimits — Antworten immer begrenzt, sicher und strukturiert.

  • Deterministische Fehler — kein Schema-Leak, kein exponierter SQL-Code, kein Stack Trace.

  • Strukturierte Fehler — stabiler Envelope mit Code, generischer Meldung und retryable-Angabe.

  • Externe Konfiguration — TOML-Datei für Policy, Limits und benannte Profile (dev/staging/prod).

  • MCP-Input-Härtung — Validierung von request_id, Limits für Text-Payloads und Kardinalität zur Reduzierung von DoS-/Input-Missbrauchsflächen.

  • Dynamische Policy — die aktive Policy kann atomar ersetzt werden, auch durch Neuladen aus TOML, ohne die MCP-Tools neu zu erstellen.

DataGate stellt keine MCP-Funktion für freie SQL-Abfragen bereit: Der Agent sendet ausschließlich strukturierte Parameter, die vor der Erstellung der parametrisierten Abfrage gegen Schema und Policy validiert werden.

Öffentliche Fehler verwenden die Codes invalid_request, policy_denied, backend_unavailable und internal_error. SQL, Stack Traces, Passwörter, Filterwerte und nicht autorisierte Objektnamen überschreiten nicht die MCP-Grenze.

PostgreSQL-Konfiguration

PostgreSQL-Anmeldeinformationen werden nicht in Konfigurationsdateien oder im Code gespeichert. Der Dienst liest die Verbindung aus der Laufzeitumgebung:

  • kompakte Variante: DB_URL

  • Komponenten-Variante: DB_HOST, DB_PORT (Standard 5432), DB_USER, DB_PASSWORD, DB_NAME

  • PostgreSQL-Optionen: DB_OPTIONS, im Format key=value&key=value

  • Pool: DB_MAX_CONNECTIONS und DB_ACQUIRE_TIMEOUT_SECS

SQLite-Konfiguration

Um SQLite im read-only Modus zu verwenden, konfiguriere eine der beiden Varianten:

  • vollständige URL: SQLITE_URL

  • Dateipfad: SQLITE_PATH

SQLite-Pool-Optionen:

  • SQLITE_MAX_CONNECTIONS

  • SQLITE_ACQUIRE_TIMEOUT_SECS

MySQL/MariaDB-Konfiguration

Um MySQL oder MariaDB im read-only Modus zu verwenden, konfiguriere eine der beiden Varianten:

  • vollständige URL: MYSQL_URL

  • Komponenten-Variante: MYSQL_HOST, MYSQL_PORT (Standard 3306), MYSQL_USER, MYSQL_PASSWORD, MYSQL_DATABASE

MySQL/MariaDB-Pool-Optionen:

  • MYSQL_MAX_CONNECTIONS

  • MYSQL_ACQUIRE_TIMEOUT_SECS

Auswahl des Multi-Datenbank-Backends

Um explizit auszuwählen, welches Backend aktiviert werden soll, setze DATAGATE_BACKEND:

  • auto (Standard): Reihenfolge postgres -> mysql -> sqlite

  • postgres

  • mysql (oder mariadb)

  • sqlite

Wenn DATAGATE_BACKEND auf ein bestimmtes Backend gesetzt ist, verlangt DataGate die entsprechende Umgebungskonfiguration; andernfalls wird mit einem expliziten Fehler beendet.

Backend-Reihenfolge beim Bootstrap:

  1. PostgreSQL

  2. MySQL/MariaDB

  3. SQLite

Das erste konfigurierte Backend in der Liste wird aktiviert.

Das optionale serverseitige Rate Limiting verwendet RATE_LIMIT_REQUESTS und RATE_LIMIT_WINDOW_SECS. Das Limit wird pro request_id vor Policy, Query Builder und Datenbank angewendet; Anfragen über der Schwelle erhalten rate_limited und erzeugen kein SQL.

Der Query Builder wendet auch ein konfigurierbares Budget in der Policy über max_query_complexity an: Jede Spalte kostet 1 und jeder Filter kostet 2. Anfragen über dem Budget werden abgelehnt, bevor SQL erzeugt wird.

Die select-Antwort unterliegt auch max_output_bytes in der Policy: Wenn das endgültige JSON-Payload das Limit überschreitet, lehnt DataGate die Anfrage mit einem Policy-Fehler ab, ohne SQL oder interne Details preiszugeben.

Die Metrik-Schicht registriert auch Zähler und serverseitige Latenz für das select-Tool: Gesamt-/akzeptierte/abgelehnte Anfragen, Backend-Fehler, p95-Latenz im Speicher und Snapshot des PostgreSQL-Pools (size, idle).

Die Anwendungsprotokollierung unterstützt zwei Formate:

  • LOG_FORMAT=pretty (Standard)

  • LOG_FORMAT=json (strukturiert, geeignet für Log-Collector)

Die Mindeststufe der Logs kann mit LOG_LEVEL (trace|debug|info|warn|error) oder über RUST_LOG konfiguriert werden.

Wenn DB_URL vorhanden ist, hat es Vorrang vor den Komponenten. Die PostgreSQL-Rolle muss nur Leserechte haben; außerdem setzt jede Verbindung default_transaction_read_only = on.

Das aktive Profil wird mit profile = "dev" ausgewählt und kann die Policy in [profiles.dev.policy] definieren. Wenn keine benannten Profile vorhanden sind, bleibt die Legacy-Form [policy] unterstützt. Ein deklariertes, aber nicht vorhandenes Profil aktiviert eine Deny-all-Policy, ohne Datenbankoperationen zu starten.

Die veröffentlichten Releases enthalten Binärdateien für Linux x64/ARM64, Windows x64/ARM64 und macOS Intel/Apple Silicon, mit plattformbenannten Archiven und SHA256SUMS-*- Dateien zur Verifizierung der Artefakte.

🛡️ Warum DataGate?

LLMs sollten nicht direkt mit Datenbanken sprechen. Es wird eine sichere, vorhersehbare, kontrollierte, prüfbare, erweiterbare und Multi-Anwendungs-Schicht benötigt. DataGate ist diese Schicht.

🔧 Technologien

  • Sprache: Rust

  • Datenbanken: PostgreSQL, MySQL/MariaDB und SQLite (heute), weitere DBs morgen

  • Protokoll: MCP (Model Context Protocol)

  • Architektur: asynchron, policy-gesteuert, schema-bewusst

🚀 Projektstatus

DataGate befindet sich in der Entwurfsphase. Das Repository enthält die anfängliche Struktur, die Dokumentation und die technische Roadmap.

🧪 Multi-Backend-Integrationstests

Die Backend-Integrationstests verwenden optionale Umgebungsvariablen:

  • DATAGATE_TEST_POSTGRES_URL

  • DATAGATE_TEST_MYSQL_URL

Wenn eine Variable vorhanden ist, prüft der entsprechende Test, dass das Backend read-only kontrollierte SELECT-Abfragen ausführt und Schreibanweisungen ablehnt. Wenn die Variable nicht vorhanden ist, wird der Test ohne Fehler übersprungen.

Vollständige Dokumentation:

Für den Start aus VS Code mit MCP:

  • der lokale Standardtransport ist stdio

  • die mcp.json-Vorlagen für lokales stdio befinden sich in docs/mcp-tools.md und docs/configuration.md

  • entfernter HTTP-Zugriff liegt außerhalb des 1.0-Standards und erfordert eine dedizierte Sicherheitsentscheidung

📍 Roadmap (Zusammenfassung)

  • Definition der Policy-Engine

  • Implementierung des kontrollierten Query Builders (parametrisiertes select)

  • Garantierte read-only Verbindung

  • Automatisches Schema-Bewusstsein (interner PostgreSQL-Katalog)

  • Audit-Log-Grundlage (JSONL über AUDIT_LOG_PATH)

  • MCP-Tools (select, search, aggregate)

  • Multi-Datenbank-Unterstützung (PostgreSQL, MySQL/MariaDB, SQLite)

  • Initiale Enterprise-Schicht (Beobachtbarkeit, Härtung, dynamische Policy)

  • MCP-API-Stabilität (versionierter Deskriptor; stdio-Transport)

  • MCP-stdio-Transport

  • Benchmarks

  • Finale Härtung

  • Version 1.0-Kandidat

📄 Lizenz

Apache License 2.0

A
license - permissive license
Not graded
quality - not tested
A
maintenance

Maintenance

Maintainers
Response time
0dRelease cycle
4Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Provides a read-only PostgreSQL SQL surface for LLM agents via MCP, with defense-in-depth security layers for safe database queries.
    3
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides read-only access to databases for MCP-compatible AI tools, allowing schema exploration and SELECT queries without exposing credentials or risking data changes.
    92
    3
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides read-only access to PostgreSQL databases via MCP, enforcing least-privilege roles, row-level security, masked views, and SQL AST guardrails to prevent data leakage and unauthorized operations, enabling AI agents to safely query sensitive production data.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides governed, read-only PostgreSQL access for AI agents via MCP. Enforces schema/table allowlists, query limits, and audit events.
    MIT

View all related MCP servers

Related MCP Connectors

  • A paid remote MCP for AI SDK data query MCP, built to return verdicts, receipts, usage logs, and aud

  • Read-only MCP server for wafergraph.com's semiconductor & AI supply-chain data: 30 tools, no auth.

  • Read-only Remote MCP for externally grounded AI agent trust receipts.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/afurlane/copilot-datagate'

If you have feedback or need assistance with the MCP directory API, please join our Discord server