Datenbank-Tool

Assistenten SQL-Abfragen gegen Deine Datenbank ausführen lassen

Das Datenbank-Tool gibt Deinen Assistenten direkten SQL-Zugriff auf eine Datenbank — für Auswertungen, Reporting und Fragen an echte Daten statt an eine Wissensbasis.

Überblick

Das Tool bringt drei Methoden mit:

  • query_database_readonly — lesende Abfragen (SELECT, SHOW, DESCRIBE, EXPLAIN, WITH) in einer erzwungen read-only Session. Das ist der Normalfall für Analysen.
  • execute_sql — vollständige SQL-Ausführung inklusive INSERT, UPDATE, DELETE und DDL. Funktioniert nur, wenn X-Allow-Write auf true steht (Standard: false).
  • get_database_schema — Tabellen und Spalten inspizieren, bevor eine Abfrage geschrieben wird.

Unterstützte Datenbanken

ClientWert für X-Database-Client
PostgreSQLpostgres
MySQLmysql
Microsoft SQL Servermssql

Andere Systeme — etwa SQLite — sind nicht angebunden.

Einrichtung

Das Datenbank-Tool ist ein eingebautes Werkzeug. Im Assistenten-Editor aktivierst Du es in der Werkzeuge-Sektion und hinterlegst dort seine Konfiguration.

SchlüsselPflichtBedeutung
X-Database-URLjaVerbindungsstring zur Zieldatenbank. Wird als Secret gespeichert.
X-Database-ClientneinClient explizit setzen (postgres, mysql, mssql), falls er sich nicht aus der URL ergibt.
X-Max-RowsneinHarte Obergrenze für zurückgegebene Zeilen (Standard: 5000).
X-Allow-WriteneinSchreibende Operationen über execute_sql erlauben. Standard: false.

Ohne X-Database-URL bricht jeder Aufruf mit „Missing database URL" ab. Über den Verbindungstest im Editor lässt sich die Konfiguration prüfen, bevor der Assistent produktiv geht.

Was das Tool selbst begrenzt — und was nicht

Das Tool erzwingt genau zwei Dinge:

  • Read-only-Trennung: query_database_readonly weist alles ab, was nicht mit SELECT, SHOW, DESCRIBE, EXPLAIN, PRAGMA oder WITH beginnt, und setzt die Session read-only.
  • Grenzen gegen Ausreißer: ein Statement-Timeout von 30 Sekunden und die Zeilenobergrenze aus X-Max-Rows.

Achtung

Alles andere musst Du in der Datenbank durchsetzen. Es gibt keine Konfiguration für erlaubte Schemata, Tabellen oder Spalten — wer X-Allow-Write aktiviert, erlaubt dem Assistenten jede Anweisung, die der Datenbankbenutzer ausführen darf.

Zugriff richtig einschränken

Die Berechtigungen liegen beim Datenbankbenutzer, mit dem Du Dich verbindest. Drei Bausteine reichen für die meisten Fälle:

1. Ein eigener Benutzer, der nur lesen darf

CREATE USER mgpt_reader WITH PASSWORD 'ein-starkes-passwort';
GRANT CONNECT ON DATABASE meine_db TO mgpt_reader;
GRANT USAGE ON SCHEMA public TO mgpt_reader;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO mgpt_reader;

2. Views statt Rohtabellen, wo Spalten sensibel sind

CREATE VIEW kunden_sicht AS
SELECT id, name, email, land
FROM kunden;
-- ausgeschlossen: steuernummer, bankverbindung, …

3. Row Level Security, wenn Zeilen je Mandant getrennt bleiben müssen

Damit gilt die Einschränkung unabhängig davon, welche Abfrage der Assistent formuliert.

Beispiele

„Was waren letztes Quartal unsere zehn umsatzstärksten Produkte?"

SELECT p.product_name,
       SUM(s.quantity * s.unit_price) AS revenue,
       COUNT(DISTINCT s.order_id) AS order_count
FROM sales s
JOIN products p ON s.product_id = p.id
WHERE s.order_date >= '2026-01-01'
  AND s.order_date < '2026-04-01'
GROUP BY p.product_name
ORDER BY revenue DESC
LIMIT 10;

„Prüf die Bestelltabelle auf Datenqualitätsprobleme."

SELECT COUNT(*) AS total_rows,
       COUNT(*) FILTER (WHERE customer_id IS NULL) AS null_customers,
       COUNT(*) FILTER (WHERE order_date IS NULL) AS null_dates,
       COUNT(*) FILTER (WHERE total_amount < 0) AS negative_amounts
FROM orders;

Der Assistent formuliert die Abfrage, führt sie aus und erklärt das Ergebnis. Bei unbekannten Strukturen sieht er sich vorher mit get_database_schema das Schema an.

Empfehlungen für den Betrieb

  • Read-only als Standard. X-Allow-Write nur dort einschalten, wo ein Assistent wirklich schreiben soll — und dann mit einem Datenbankbenutzer, der nur die dafür nötigen Rechte hat.
  • Indizes für die häufigen Muster. Das 30-Sekunden-Timeout trifft sonst zuerst die interessanten Abfragen.
  • Vorberechnete Views für wiederkehrende Auswertungen, statt jedes Mal über die Rohdaten zu aggregieren.
  • X-Max-Rows bewusst setzen, wenn Tabellen groß sind: der Standard von 5000 Zeilen ist eine Obergrenze, kein Richtwert.

Weiterlesen

War diese Seite hilfreich?