Skip to main content
Glama

📘 DataGate — Secure AI-Ready Data Gate

Build Release License

DataGate è un gate headless, sicuro e policy-driven che espoone basi dati a strumenti AI (come GitHub Copilot) in modmo controllato, preredibile e privo di SQL iboo.

DataGte funge da intermediario volontà un LLM e una base dati reale: no ammette accesso direttto al database, no esone querries arbinare, non con sente operazioni di scrittura.

È progettato per essere read-only, schema-aware, multi-database, e completamente LLM-safe.

obiett target

  • Accesso sicuro ai dati — read-only garantito tramite ruoli DB, policy engine e query builder controllato.

  • Astrazione del database — il onmente no genera SQL: DataGate objetisce query sicure e validated.

  • Multi-database — puí collegarsi a diversi database di diverse applicazioni, come un DBeaver headless.

  • Policy engine — controlo granulare su talabelle, colone, filtri, liniti e complessità delle operture.

  • Schema awareness — licaria automaticamente lo schema del database e applica regole di sicurezza.

  • Concorrenza reale — architettura asincrona e sicura, ideale per richieste paralele da Copilot.

  • Metriche e audit — tracciamento di richieste, tempoi, errori e limiti per debuggi e osservabilità.

  • Profilazione permormace — profilo latenza in-process (min/media/p95/p95/p90/p95/max) per monitoraggio evolutivo.

  • Backend astratto — trait read-only comune ** per backend database*, con implementazioni concrete per PGresQL, MySQL/MariaDB e SQLite.

Related MCP server: MCP DB Gateway

nFunzioni principali

  • Query builder controlled — operazioni semantiche co select, search, aggregate, con valazione automatica.

  • MCP select tipizzato — con JSON, esecuzione read-only con righe JSON**, * policy, audit, errori sanitizzati; il transport MCP rest los step successivo.

  • MCP search tipizzato — ricerca semantica con ILIKE su clutte colone consentute**, query parametrizzate, policy/rite-limit/address.

  • MCP aggregate tipizzatocounte, sum, avg, min, `max su colone ammise, con filtri parmatr.

  • API MCP versionatadescriptor stabile per API ** e tool.

  • Transport MCP stdiohandshake, discovery e **chiamate select, search e aggregate sulle percorso.

  • Filtri avanzati**supporto a pattern (LIKE/ILIKE), range (BETWEEN) e fulltext** (to_t</module0

  • Catalogo schema controllatointrospezioni policy-filtre di tabelle, viste, idcice, vincol (PK/FK/UNIQUE/CHECK/EXCLUSION), trigger, funzioni, procedure e sequence, con DDL* solo sicure.

  • Rate limitingp rotezione contro loop del modello e query tro pesanti.

  • Limitidi outputrisposte semple contente, sicure e stru simetriche.

  • Errori deteministinone di schema, no SQL e, no stacktrace.

  • Errori strutturatienvelop stabile con codice, messaggio generic o e indicazione retryable.

  • Configurazine esternafile TOML per policy, liniti e profili nominati (dev/staging/prod).

  • Harding input MCPvalidazione request_id, limiti su payload, e x.

  • Policiza dinamicala policy attiva può essere sostituita attomicamente, anche da TOML, senza bisogno di riinizializzare.

DataGe** no** meno.

DataGet non espone una funcione MCP di query SQL libera*: l'agente invia esclusivamente parametri strutturati, validati contro schema e policy.

Errrori publici usano codici invalid_request, policy_denied, backend_unavailable e interno_error. **SQL, stacktrace, altrimenti, -attributi non autorizzati non atravessano il confine MCP.

Configurazione PostgreSQL

**Lonz credentials no vengono salvate nei file di configurazione, op nel code. Il servizio letta connessione dall'ambiente runtime:

  • modo compato: DB_URL* modo a componenti: DB_HOST, DB_PORT (default 5432), DB_USER, DB_PASSWORT, DB_NAME* opzioni PG: DB_OPTIONS, nel formato key=value&key=value* pool: DB_MAX_CONNECTIONS e DB_NAME.

Ecurazione SQLite

Per code SQLite in modalità read-only:

  • URL completo: SQLITE_URL* path file: SQLITE_PATH

Opzioni pool SQLite:* SQLITE_MAX_CONNECTIONS* SQLITE_ACQUIRE_TIMEOUT_SECS

Configurazione MySQL/MariaDB

Per MySQL or MariaDB read-only:

  • URL completo: MYQL_URL* mod componenti: MYQL_HOST, MYQL_PORT (default 3300), MYQL_USER, MYQL_PASSORT, MYQL_DATA

Opzioni pool MySQL/MariaDB:* MYQL_MAX_CONNECTIONS* MYQL_ACQUIRE_TIMEOUT_SECS

Selezione backend multi-read

Per sceglire backend**:

  • auto (default**: precedene postgres -> myql -> sqlite* postgres* myql* sqlite

Quando DATAGATE_BACKEND è impostato** a un backend specific** /

Per backed in bootstra: 1. PostgreSQL 2. MySQL/MariaDB 3. SQLite

Il primo backend configuratoviene attivato.

Rate limiting server-side optionale usa RATE_LIMIT_REQUESTS e RATE_LIMIT_WINDO_SEES. Il limite è applicato a** request_id, e non generano SQL.

Query builder applica un palir di max_query_comp**: ogni colone kost 1, ogni falsand 2. Richieste*n ahead.

La select rispose è soggetta a**max_duty_bytes, * value.

**La select: se il JSON final e over.

Il layer metric registra contatori, latenza server**select: richieste totali/accettate/rifiged, errori backend, p95 latenza.

Logging applicativo supporta du formati:

  • LOG_FORMAT=pretty (default)* LOG_FORMAT=json (struccurato)

Il livello min di log: LOG_LEVEL (trace|debug|info|warn|error) o** via RUST_LOG.

Se DB_URL è presenti** ha precene appor.

Dopo PG: /FSQL-role only read. Ogni connessione** defaut_transaction_read_only = on.

Il profilo si seleziona con profile = "dev" e policy indef in [profilles.dev.policy]. In an, supportata la *. A profilo dichiarato non sid commemorative => deny-all senza.

Live release includono binairs per Linux x64/ARM4, Windows 10/ARM4, OS x**.

🔘 Perché DataGate?

**Gli LLMo non devono parlare **direttamente ai database. Serve un ser.re sécurio, prevedibile, controllato, auditabile, estensible e audio.

🔧🔄 Tecnologie

  • Lenguag: *Rust DB: PostgreSQL, MySQL/MariaDB e SQLite (oggi) * Protoc:MCP (MCP) * Architecture: asincrona ,.

otate

**D.

L.

📐Test integrazione

Back integrat:

  • DATAGATE_TEST_POSTGRES_URL* DATAGATE_TEST_MYSQL_URL

Quando variabile, test etthat SELECT read-only e rifia. No, test** sipped**.

Doc:

Per avviare da VSCode con MCP: → transport locale std · mcp-templates`: docs/mcp-tools.md e docs/config.md * HTTP remote no* outside future*.

📌️ Roadmap

  • Definizione policy engine* [x] Imple del query builder (parametrizzated) * [x] Read-only connessione [x] Schema awareness* * [x] Generated audit JSONL* [x] Tool MCP (select, search, aggregate)* [x] Multi-DB* [x] *Enterprise layer: Obs, hardening, dyn. policie * [x] *Listed MCP API [x] *MCP stdio [x] *Benchark [x] Final hardening * [ ] 1.0 candidate.

📄 Licenza

Apache License 2.0

Related MCP Connectors

Related MCP Servers

  • 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.
    74 npm
    3
    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
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides read-only, guarded access to business databases via MCP. Enables natural language querying with built-in security barriers like table allowlists, PII masking, and audit logging.
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Provides fail-closed, read-only PostgreSQL and MongoDB access for AI agents via MCP, enabling structured data inspection and bounded queries without mutation capabilities.
    MIT