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 inklusiveINSERT,UPDATE,DELETEund DDL. Funktioniert nur, wennX-Allow-Writeauftruesteht (Standard:false).get_database_schema— Tabellen und Spalten inspizieren, bevor eine Abfrage geschrieben wird.
Unterstützte Datenbanken
| Client | Wert für X-Database-Client |
|---|---|
| PostgreSQL | postgres |
| MySQL | mysql |
| Microsoft SQL Server | mssql |
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üssel | Pflicht | Bedeutung |
|---|---|---|
X-Database-URL | ja | Verbindungsstring zur Zieldatenbank. Wird als Secret gespeichert. |
X-Database-Client | nein | Client explizit setzen (postgres, mysql, mssql), falls er sich nicht aus der URL ergibt. |
X-Max-Rows | nein | Harte Obergrenze für zurückgegebene Zeilen (Standard: 5000). |
X-Allow-Write | nein | Schreibende 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_readonlyweist alles ab, was nicht mitSELECT,SHOW,DESCRIBE,EXPLAIN,PRAGMAoderWITHbeginnt, 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-Writenur 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-Rowsbewusst setzen, wenn Tabellen groß sind: der Standard von 5000 Zeilen ist eine Obergrenze, kein Richtwert.