MCP Firebird: trova e sistema i problemi del tuo database parlando con l'AI
🇬🇧 English • 🇪🇸 Español • 🇩🇪 Deutsch • 🇧🇷 Português
MCP Firebird è un server MCP che permette al tuo assistente AI di diagnosticare davvero un database Firebird: piani di esecuzione, consigli sugli indici, audit dello schema, salute delle transazioni. La versione 0.2.4 è fuori, gratuita per uso interno, testata da Firebird 2.5 a 5.0.
Una query è lenta. Il piano dice CUSTOMERS NATURAL, e sulla colonna filtrata un indice c’è. La vedi la trappola?
L’indice è INACTIVE. A questo punto quasi tutti i consigli, umani o AI, ti dicono di creare un indice nuovo. Seguili e ti ritrovi due indici sulla stessa colonna, entrambi scritti a ogni INSERT, uno dei due morto. Il fix vero era a un ALTER INDEX ... ACTIVE di distanza, e nessuno te l’aveva detto.
MCP Firebird te lo dice. È un server MCP che permette al tuo assistente AI (Claude, Gemini CLI, Cursor, qualunque cosa parli MCP) di diagnosticare davvero un database Firebird: leggere lo schema, spiegare un piano di esecuzione, proporre un indice, rifiutarsi di proporne uno che esiste già, e misurare a posteriori se un obiettivo è stato raggiunto. Oggi ho rilasciato la versione 0.2.4.
In breve
- Cos’è: un server MCP su stdio, un singolo eseguibile Windows scritto in Delphi, che trasforma il tuo assistente AI in un DBA Firebird operativo.
- Per chi: chiunque abbia in produzione Firebird 2.5, 3.0, 4.0 o 5.0 e voglia risposte su piani, indici e salute dello schema invece di supposizioni.
- Funziona con: Claude Desktop, Claude Code, Gemini CLI, OpenCode, Cursor e qualunque client MCP.
- Installazione: unzip, copia
.env.examplein.env, puntalo al tuo database, registra l’exe come server stdio.- Licenza: PolyForm Internal Use, gratuita per le operazioni interne della tua azienda a qualunque scala. Sorgenti su GitHub.
Cosa fa
Nove tool, tutti in sola lettura: 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. Ogni finding porta con sé un rimedio eseguibile e un modo per verificare che il rimedio abbia funzionato davvero, perché un report su cui non puoi agire è solo un modo più lungo di dire “il database è lento”.
Due scelte di design contano più della lista delle funzionalità.
È testato su Firebird 2.5, 3.0, 4.0 e 5.0, non solo sull’ultima versione. La suite completa gira su tutti e quattro i motori prima di ogni release. Le versioni si comportano in modo diverso: default diversi, funzionalità diverse. Uno strumento testato solo sul 5.0 dà risposte sbagliate su un server 2.5, e molte aziende hanno ancora un 2.5 in produzione.
Non si inventa le risposte. Se la tua SQL contiene un errore, ricevi il messaggio di errore del motore, non un report vuoto che sembra un via libera. E quando non può misurare una cosa, te lo dice: così sai sempre se “nessun problema trovato” significa che il database sta bene o che il tool non ha potuto guardare.
Com’è fatta una sessione di lavoro
Una sessione reale contro il database di test della suite, motore Firebird 5.0.4. Così appare in Claude Desktop:
Lo screenshot qui sopra è un singolo momento di quella sessione. Qui sotto la ripercorriamo per intero, domanda dopo domanda, dalla prima occhiata al database fino al fix verificato.
IDX_CUST_CITY sulla colonna CITY è INACTIVE. Esiste, ma il motore non lo può usare. Il report di fb_generate_documentation:CUSTOMERS
Chiave primaria: CUSTOMER_ID
| Colonna | Tipo | Ammette NULL |
| CUSTOMER_ID | INTEGER | no |
| NAME | VARCHAR(400) | no |
| CITY | VARCHAR(240) | sì |
| STATUS | CHAR(4) | sì |
Indici:
- IDX_CUST_CITY (CITY), INACTIVE
- IDX_CUST_NAME (NAME)
- IDX_CUST_NAME_CITY (NAME, CITY)
- IDX_CUST_STATUS (STATUS)
- RDB$PRIMARY1 (CUSTOMER_ID) [CHIAVE PRIMARIA]
SELECT * FROM CUSTOMERS WHERE CITY = 'Rome'fb_analyze_query è PLAN (CUSTOMERS NATURAL): nessun indice viene usato per il filtro su CITY.IDX_CUST_CITY; è solo disattivato. Crearne un secondo raddoppierebbe il costo di scrittura a ogni INSERT per niente. Riattiva quello che hai con ALTER INDEX IDX_CUST_CITY ACTIVE; e poi ricontrolla il piano. Il finding di fb_suggest_indexes dice esattamente questo:ALTER INDEX IDX_CUST_CITY ACTIVE;
📝 Questa è la risposta che la maggior parte dei consigli sbaglia, umani o AI: ti avrebbero detto di creare un secondo indice.
IDX_CUST_CITY. Le due misure di fb_evaluate_goal:prima: obiettivo mancato piano: PLAN (CUSTOMERS NATURAL)
dopo: obiettivo raggiunto piano: PLAN (CUSTOMERS INDEX (IDX_CUST_CITY))
fb_evaluate_goal misura 1.85 millisecondi contro i tuoi 50.SET STATISTICS INDEX. Transazioni e sweep sono a posto. I report:DROP INDEX IDX_ORDERS_CUSTOMER_DUP;
SET STATISTICS INDEX IDX_CUST_NAME;
SET STATISTICS INDEX IDX_CUST_STATUS;
Installazione in due minuti
Niente gira come servizio e niente ascolta su una porta: è il tuo agente ad avviare l’eseguibile e a parlarci su stdin/stdout.
- Scompatta l’ultima versione stabile dove vuoi.
- Copia
.env.examplein.envaccanto all’exe e compila host, database, credenziali. - Punta
firebird.client_liballafbclient.dlldella tua installazione Firebird. Nessuna libreria client è inclusa, di proposito: solo tu sai con quale server stai parlando. - Registra
MCPFirebird.exenel tuo agente come server MCP stdio. Il README ha la ricetta esatta per ogni client, in inglese, italiano, spagnolo e tedesco.
L’edizione Enterprise
L’edizione gratuita si collega al tuo database con una normale connessione SQL. Vede quello che il database sa di sé: schema, piani di esecuzione, indici, transazioni. È già utile, ma resta dentro il database.
L’edizione Enterprise è un prodotto a pagamento: si usa solo con una licenza, sempre, anche in azienda per uso interno. Non esiste un livello gratuito dell’Enterprise. Si collega in più al server Firebird come amministratore, tramite il Services Manager. Così vede quello che solo il server conosce: i file di configurazione (firebird.conf e databases.conf), il log del server (firebird.log), la struttura fisica del file, l’hardware su cui gira e il carico di lavoro reale. Alla versione gratuita non è stato tolto niente: i tool Enterprise restano nel suo elenco, e se l’assistente ne chiama uno riceve un messaggio che spiega come ottenerlo.
Con questo accesso l’assistente risponde a domande che prima non poteva. fb_diagnose è il punto di partenza quando qualcosa non va e non sai da dove cominciare. fb_analyze_config controlla ogni parametro di firebird.conf rispetto alla tua versione del motore e alla tua architettura, perché i default cambiano tra versioni. fb_parse_log legge firebird.log e trova corruzioni, bugcheck, sweep mai partiti. fb_analyze_storage mostra la struttura fisica: profondità degli indici, riempimento delle pagine, catene di versioni dei record. fb_analyze_host confronta l’hardware con la configurazione: RAM contro cache impostata, core contro worker paralleli. fb_capture_trace registra 60 secondi di carico reale e classifica le query più costose; fb_trace_start, fb_trace_status e fb_trace_stop fanno lo stesso fino a due ore, in background.
Perché vale dei soldi: la documentazione di Firebird non dice quale valore usare per la maggior parte dei parametri, perché il valore giusto dipende dal tuo carico di lavoro. L’edizione Enterprise lavora per misura. Registra le prestazioni sotto carico reale, cambi un solo parametro, misura di nuovo e ti dice se è migliorato. Se non lo è, torni indietro.
Free vs Enterprise
| Free | Enterprise | |
|---|---|---|
Versione, architettura e capacità del motore (fb_info) |
✅ | ✅ |
Elenco delle tabelle (fb_list_tables) |
✅ | ✅ |
Documentazione dello schema: colonne, chiavi, indici (fb_generate_documentation) |
✅ | ✅ |
Analisi del piano di esecuzione di una query (fb_analyze_query) |
✅ | ✅ |
Consigli sugli indici da creare o riattivare (fb_suggest_indexes) |
✅ | ✅ |
Indici duplicati o inutili da eliminare (fb_suggest_index_drops) |
✅ | ✅ |
Controllo di una tabella: chiavi mancanti, statistiche vecchie, indici di troppo (fb_audit_table) |
✅ | ✅ |
Verifica di un obiettivo: piano senza scansioni complete, o tempo massimo (fb_evaluate_goal) |
✅ | ✅ |
Stato di transazioni e sweep (fb_monitor_transactions) |
✅ | ✅ |
Percorso di diagnosi guidato (fb_diagnose) |
❌ | ✅ |
Controllo di firebird.conf e databases.conf per la tua versione e architettura (fb_analyze_config) |
❌ | ✅ |
Struttura fisica: profondità degli indici, riempimento delle pagine, catene di versioni (fb_analyze_storage) |
❌ | ✅ |
Lettura di firebird.log: corruzioni, bugcheck, sweep mai partiti (fb_parse_log) |
❌ | ✅ |
Registrazione del carico reale: 60 secondi (fb_capture_trace) o fino a 2 ore in background (fb_trace_start/status/stop) |
❌ | ✅ |
Hardware contro configurazione: RAM contro cache, core contro worker paralleli (fb_analyze_host) |
❌ | ✅ |
| Misure prima/dopo una modifica, con verdetto | ❌ | ✅ |
Licenze Enterprise e supporto: professionals@bittime.it.
Quando serve comprare una licenza, e quando no
L’edizione gratuita esce sotto licenza PolyForm Internal Use: sorgenti disponibili, gratuita per le operazioni interne tue e della tua azienda, a qualunque scala, in qualunque settore, consulenza compresa. Tutta la regola sta in una frase: chiediti dove finisce il software, mai cosa ci hai fatto. Finché ogni copia resta nelle tue mani, non devi niente a nessuno, ovunque il software giri e qualunque database esamini. Ti serve la licenza commerciale nel momento in cui una copia resta a qualcun altro: la lasci installata da un cliente a fine incarico, la metti dentro un prodotto che vendi, o la offri come servizio.
| La tua situazione | Serve una licenza? |
|---|---|
| Il tuo DBA lo lancia sul database di produzione ogni mattina | No. |
| Quaranta sviluppatori lo usano ognuno in locale | No. Niente conteggio postazioni, niente registrazione. |
| Sei un consulente, lo usi dal tuo portatile sul database del cliente e fatturi il tuo tempo | No. È il tuo strumento, e tuo resta. |
| Lasci una copia installata sul server del cliente a fine incarico | Sì. Il software ha lasciato le tue mani. |
| Lo spedisci dentro il tuo ERP così i tuoi clienti hanno il “tuning AI del database” | Sì. Questo è integrarlo in un prodotto. |
| Dai ai clienti del tuo hosting un bottone che lo esegue per loro | Sì. Questo è offrirlo come servizio. |
| Ci scrivi un post, un talk o un corso | No. Leggilo, citalo, insegnalo. |
Una precisazione che vale la pena fare bene: la licenza commerciale di redistribuzione e l’edizione Enterprise sono due prodotti diversi. Una permette alle copie di MCP Firebird di lasciare le tue mani; l’altra aggiunge i tool di amministrazione del server di cui hai letto sopra, ed è sempre a pagamento, con la sua licenza, per chiunque e per qualunque uso. Comprarne uno non include l’altro.
Licenze commerciali: professionals@bittime.it.
Provalo
Scarica l’ultima versione stabile, puntala a una copia del tuo database e chiedi al tuo assistente perché la tua query più lenta è lenta.
Qual è la prima domanda che faresti al tuo database?
Comments
comments powered by Disqus