Become a member!

MCP Firebird: finde und behebe die Probleme deiner Datenbank im Gespräch mit deiner KI

🌐
Dieser Artikel ist auch in anderen Sprachen verfügbar:
🇬🇧 English  •  🇮🇹 Italiano  •  🇪🇸 Español  •  🇧🇷 Português

MCP Firebird ist ein MCP-Server, mit dem dein KI-Assistent eine Firebird-Datenbank wirklich diagnostizieren kann: Ausführungspläne, Index-Beratung, Schema-Audit, Transaktionsgesundheit. Version 0.2.4 ist draußen, kostenlos für den internen Einsatz, getestet von Firebird 2.5 bis 5.0.

Logo von MCP Firebird, dem MCP-Server, mit dem KI-Assistenten Firebird-Datenbanken diagnostizieren.

Eine Abfrage ist langsam. Der Plan sagt CUSTOMERS NATURAL, und auf der gefilterten Spalte gibt es einen Index. Siehst du die Falle?

Der Index ist INACTIVE. An diesem Punkt rät fast jeder, Mensch wie KI, einen neuen Index anzulegen. Folge dem Rat, und du besitzt zwei Indizes über derselben Spalte, beide bei jedem INSERT geschrieben, einer davon tot. Die echte Lösung war ein ALTER INDEX ... ACTIVE entfernt, und niemand hat es dir gesagt.

MCP Firebird sagt es dir. Es ist ein MCP-Server, mit dem dein KI-Assistent (Claude, Gemini CLI, Cursor, was auch immer MCP spricht) eine Firebird-Datenbank wirklich diagnostizieren kann: das Schema lesen, einen Ausführungsplan erklären, einen Index vorschlagen, sich weigern, einen vorzuschlagen, den es schon gibt, und hinterher messen, ob das Ziel tatsächlich erreicht wurde. Heute habe ich Version 0.2.4 veröffentlicht.

Kurz gesagt

  • Was es ist: ein MCP-Server über stdio, eine einzelne Windows-Exe, geschrieben in Delphi, die deinen KI-Assistenten in einen arbeitsfähigen Firebird-DBA verwandelt.
  • Für wen: alle, die Firebird 2.5, 3.0, 4.0 oder 5.0 im Einsatz haben und Antworten zu Plänen, Indizes und Schema-Gesundheit wollen statt Vermutungen.
  • Funktioniert mit: Claude Desktop, Claude Code, Gemini CLI, OpenCode, Cursor und jedem MCP-Client.
  • Installation: entpacken, .env.example nach .env kopieren, auf deine Datenbank zeigen lassen, die Exe als stdio-Server registrieren.
  • Lizenz: PolyForm Internal Use, kostenlos für die internen Abläufe deiner Firma in jeder Größenordnung. Quellcode auf GitHub.

Was es kann

Neun Tools, alle nur lesend: fb_info, fb_list_tables, fb_generate_documentation, fb_analyze_query, fb_suggest_indexes, fb_suggest_index_drops, fb_audit_table, fb_evaluate_goal, fb_monitor_transactions. Jeder Befund trägt eine ausführbare Abhilfe und einen Weg zu überprüfen, ob sie wirklich geholfen hat, denn ein Bericht, auf den man nicht reagieren kann, ist nur eine längere Art zu sagen: “Die Datenbank ist langsam.”

Zwei Designentscheidungen zählen mehr als die Funktionsliste.

Es ist auf Firebird 2.5, 3.0, 4.0 und 5.0 getestet, nicht nur auf dem neuesten. Die komplette Suite läuft vor jedem Release auf allen vier Engines. Die Versionen verhalten sich unterschiedlich: andere Standardwerte, andere Funktionen. Ein Tool, das nur auf 5.0 getestet ist, gibt auf einem 2.5-Server falsche Antworten, und viele Firmen betreiben 2.5 noch in Produktion.

Es erfindet keine Antworten. Wenn dein SQL einen Fehler enthält, bekommst du die Fehlermeldung der Engine selbst zurück, nicht einen leeren Bericht, der wie eine Entwarnung aussieht. Und wenn es etwas nicht messen kann, sagt es dir das: so weißt du immer, ob “keine Probleme gefunden” bedeutet, dass die Datenbank in Ordnung ist, oder dass das Tool nicht nachsehen konnte.

Wie eine Arbeitssitzung aussieht

Eine echte Sitzung gegen die Testdatenbank der Suite, Engine Firebird 5.0.4. So sieht sie in Claude Desktop aus:

Echte Sitzung in Claude Desktop: auf die Frage, warum eine Firebird-Abfrage langsam ist, zeigt der Assistent den Plan PLAN (CUSTOMERS NATURAL), findet den inaktiven Index IDX_CUST_CITY und schlägt ALTER INDEX ACTIVE statt eines zweiten Index vor.

Der Screenshot oben ist ein einzelner Moment dieser Sitzung. Unten gehen wir sie ganz durch, Frage für Frage, vom ersten Blick auf die Datenbank bis zur überprüften Korrektur.

👤 Du: Ich habe diese Datenbank noch nie gesehen. Dokumentiere mir die Tabelle CUSTOMERS.
🤖 Assistent: Hier ist CUSTOMERS: vier Spalten, Primärschlüssel auf CUSTOMER_ID, fünf Indizes. Eines fällt sofort auf: IDX_CUST_CITY auf der Spalte CITY ist INACTIVE. Er existiert, aber die Engine kann ihn nicht nutzen. Der Bericht von fb_generate_documentation:
CUSTOMERS
Primärschlüssel: CUSTOMER_ID

| Spalte      | Typ          | NULL erlaubt |
| CUSTOMER_ID | INTEGER      | nein         |
| NAME        | VARCHAR(400) | nein         |
| CITY        | VARCHAR(240) | ja           |
| STATUS      | CHAR(4)      | ja           |

Indizes:
- IDX_CUST_CITY (CITY), INACTIVE
- IDX_CUST_NAME (NAME)
- IDX_CUST_NAME_CITY (NAME, CITY)
- IDX_CUST_STATUS (STATUS)
- RDB$PRIMARY1 (CUSTOMER_ID) [PRIMÄRSCHLÜSSEL]
👤 Du: Warum ist diese Abfrage langsam? SELECT * FROM CUSTOMERS WHERE CITY = 'Rome'
🤖 Assistent: Weil die Engine die ganze Tabelle liest, Zeile für Zeile. Der Plan von fb_analyze_query ist PLAN (CUSTOMERS NATURAL): für den Filter auf CITY wird kein Index verwendet.
👤 Du: Welchen Index soll ich also anlegen?
🤖 Assistent: Keinen. Auf CITY gibt es schon einen Index, IDX_CUST_CITY, er ist nur deaktiviert. Einen zweiten anzulegen würde die Schreibkosten bei jedem INSERT umsonst verdoppeln. Reaktiviere den vorhandenen mit ALTER INDEX IDX_CUST_CITY ACTIVE; und prüfe dann den Plan erneut. Der Befund von fb_suggest_indexes sagt genau das:
ALTER INDEX IDX_CUST_CITY ACTIVE;

📝 Das ist die Antwort, bei der die meisten Ratschläge danebenliegen, ob Mensch oder KI: sie hätten dir gesagt, einen zweiten Index anzulegen.

👤 Du: Ich habe das ALTER INDEX ausgeführt. Hat es wirklich funktioniert?
🤖 Assistent: Ja, und ich belege es dir. Vor der Korrektur war das Ziel "kein kompletter Scan" verfehlt; jetzt ist es erreicht, und der Plan nutzt IDX_CUST_CITY. Die beiden Messungen von fb_evaluate_goal:
vorher:  Ziel verfehlt    Plan: PLAN (CUSTOMERS NATURAL)
nachher: Ziel erreicht    Plan: PLAN (CUSTOMERS INDEX (IDX_CUST_CITY))
👤 Du: Die Kundensuche muss unter 50 Millisekunden bleiben.
🤖 Assistent: Bleibt sie, mit großem Abstand: fb_evaluate_goal misst 1.85 Millisekunden gegen deine 50.
👤 Du: Wenn wir schon dabei sind: gibt es noch etwas aufzuräumen?
🤖 Assistent: Drei Dinge. Auf ORDERS gibt es einen doppelten Index zum Löschen: er kostet bei jedem INSERT eine Schreiboperation und bringt nichts. Zwei Indizes auf CUSTOMERS haben veraltete Statistiken, der Optimizer plant also mit falschen Zahlen: behebe das mit SET STATISTICS INDEX. Transaktionen und Sweep sind in Ordnung. Die Berichte:
DROP INDEX IDX_ORDERS_CUSTOMER_DUP;
SET STATISTICS INDEX IDX_CUST_NAME;
SET STATISTICS INDEX IDX_CUST_STATUS;
Jede Antwort hat dieselbe Form: was nicht stimmt, das Statement, das es behebt, und wie du überprüfst, dass die Korrektur gewirkt hat.

Installation in zwei Minuten

Nichts läuft als Dienst und nichts lauscht auf einem Port: dein Agent startet die Exe selbst und spricht mit ihr über stdin/stdout.

  1. Entpacke die aktuelle stabile Version, wohin du willst.
  2. Kopiere .env.example nach .env neben die Exe und trage Host, Datenbank und Zugangsdaten ein.
  3. Zeige mit firebird.client_lib auf die fbclient.dll deiner Firebird-Installation. Absichtlich liegt keine Client-Bibliothek bei: nur du weißt, mit welchem Server du sprichst.
  4. Registriere MCPFirebird.exe in deinem Agenten als stdio-MCP-Server. Das README hat das genaue Rezept für jeden Client, auf Englisch, Italienisch, Spanisch und Deutsch.

Die Enterprise-Edition

Die kostenlose Edition verbindet sich mit deiner Datenbank über eine normale SQL-Verbindung. Sie sieht, was die Datenbank über sich selbst weiß: Schema, Ausführungspläne, Indizes, Transaktionen. Das ist schon nützlich, bleibt aber innerhalb der Datenbank.

Die Enterprise-Edition ist ein kostenpflichtiges Produkt: sie läuft nur mit einer Lizenz, immer, auch für den internen Einsatz in der Firma. Eine kostenlose Stufe der Enterprise gibt es nicht. Sie verbindet sich zusätzlich als Administrator mit dem Firebird-Server, über den Services Manager. So sieht sie, was nur der Server kennt: die Konfigurationsdateien (firebird.conf und databases.conf), das Server-Log (firebird.log), die physische Struktur der Datei, die Hardware, auf der er läuft, und die echte Last. Der kostenlosen Edition wurde nichts weggenommen: die Enterprise-Tools stehen weiter in ihrer Liste, und ruft der Assistent eines auf, bekommt er eine Meldung, die erklärt, wie man es bekommt.

Mit diesem Zugang beantwortet der Assistent Fragen, die vorher nicht möglich waren. fb_diagnose ist der Startpunkt, wenn etwas nicht stimmt und du nicht weißt, wo du anfangen sollst. fb_analyze_config prüft jeden Parameter von firebird.conf gegen deine Engine-Version und deine Architektur, denn die Standardwerte ändern sich zwischen Versionen. fb_parse_log liest firebird.log und findet Korruption, Bugchecks, nie gelaufene Sweeps. fb_analyze_storage zeigt die physische Struktur: Indextiefe, Füllgrad der Seiten, Satzversionsketten. fb_analyze_host vergleicht die Hardware mit der Konfiguration: RAM gegen den eingestellten Cache, Kerne gegen parallele Worker. fb_capture_trace zeichnet 60 Sekunden echte Last auf und ordnet die teuersten Abfragen; fb_trace_start, fb_trace_status und fb_trace_stop machen dasselbe bis zu zwei Stunden, im Hintergrund.

Warum es Geld wert ist: die Firebird-Dokumentation sagt für die meisten Parameter nicht, welchen Wert du nehmen sollst, weil der richtige Wert von deiner Last abhängt. Die Enterprise-Edition arbeitet mit Messungen. Sie zeichnet die Leistung unter echter Last auf, du änderst einen einzigen Parameter, sie misst erneut und sagt dir, ob es besser wurde. Wenn nicht, gehst du zurück.

Free vs Enterprise

Free Enterprise
Version, Architektur und Fähigkeiten der Engine (fb_info)
Liste der Tabellen (fb_list_tables)
Schema-Dokumentation: Spalten, Schlüssel, Indizes (fb_generate_documentation)
Analyse des Ausführungsplans einer Abfrage (fb_analyze_query)
Rat zu Indizes, die anzulegen oder zu reaktivieren sind (fb_suggest_indexes)
Doppelte oder nutzlose Indizes zum Löschen (fb_suggest_index_drops)
Tabellenprüfung: fehlende Schlüssel, veraltete Statistiken, zu viele Indizes (fb_audit_table)
Zielprüfung: Plan ohne komplette Scans, oder Zeitlimit (fb_evaluate_goal)
Status von Transaktionen und Sweep (fb_monitor_transactions)
Geführter Diagnoseweg (fb_diagnose)
Prüfung von firebird.conf und databases.conf für deine Version und Architektur (fb_analyze_config)
Physische Struktur: Indextiefe, Füllgrad der Seiten, Satzversionsketten (fb_analyze_storage)
Lesen von firebird.log: Korruption, Bugchecks, nie gelaufene Sweeps (fb_parse_log)
Aufzeichnung der echten Last: 60 Sekunden (fb_capture_trace) oder bis zu 2 Stunden im Hintergrund (fb_trace_start/status/stop)
Hardware gegen Konfiguration: RAM gegen Cache, Kerne gegen parallele Worker (fb_analyze_host)
Vorher/Nachher-Messungen mit Urteil

Enterprise-Lizenzen und Support: professionals@bittime.it.

Wann du eine Lizenz kaufen musst, und wann nicht

Die kostenlose Edition erscheint unter der PolyForm-Internal-Use-Lizenz: Quellcode verfügbar, kostenlos für die internen Abläufe von dir und deiner Firma, in jeder Größenordnung, in jeder Branche, Beratung eingeschlossen. Die ganze Regel passt in einen Satz: frag, wo die Software landet, nie, was du mit ihr gemacht hast. Solange jede Kopie in deinen Händen bleibt, schuldest du niemandem etwas, egal wo die Software läuft und welche Datenbank sie untersucht. Die kommerzielle Lizenz brauchst du in dem Moment, in dem eine Kopie bei jemand anderem bleibt: du lässt sie am Ende des Auftrags beim Kunden installiert, du baust sie in ein Produkt ein, das du verkaufst, oder du bietest sie als Dienst an.

Deine Situation Lizenz nötig?
Dein DBA lässt es jeden Morgen gegen die Produktionsdatenbank laufen Nein.
Vierzig Entwickler nutzen es jeweils lokal Nein. Keine Platzzählung, keine Registrierung.
Du bist Berater, nutzt es vom eigenen Laptop gegen die Datenbank des Kunden und stellst deine Zeit in Rechnung Nein. Es ist dein Werkzeug, und es bleibt deins.
Du lässt am Ende des Auftrags eine Kopie auf dem Server des Kunden installiert Ja. Die Software hat deine Hände verlassen.
Du lieferst es in deinem ERP mit, damit deine Kunden “KI-Datenbank-Tuning” bekommen Ja. Das ist Einbetten in ein Produkt.
Du gibst deinen Hosting-Kunden einen Button, der es für sie ausführt Ja. Das ist Anbieten als Dienst.
Du schreibst einen Blogpost, einen Vortrag oder einen Kurs darüber Nein. Lies es, zitiere es, lehre es.

Eine Klarstellung, bei der Präzision zählt: die kommerzielle Weitergabelizenz und die Enterprise-Edition sind zwei verschiedene Produkte. Die eine erlaubt, dass Kopien von MCP Firebird deine Hände verlassen; die andere ergänzt die Server-Verwaltungswerkzeuge, von denen du oben gelesen hast, und ist immer kostenpflichtig, mit eigener Lizenz, für jeden und für jeden Einsatz. Der Kauf des einen schließt das andere nicht ein.

Kommerzielle Lizenzen: professionals@bittime.it.

Probier es aus

Hol dir die aktuelle stabile Version, lass es auf eine Kopie deiner Datenbank zeigen und frag deinen Assistenten, warum deine langsamste Abfrage langsam ist.

Was wäre die erste Frage, die du deiner Datenbank stellen würdest?

Comments

comments powered by Disqus