Become a member!

MCP Firebird: encuentra y arregla los problemas de tu base de datos hablando con tu IA

🌐
Este artículo también está disponible en otros idiomas:
🇬🇧 English  •  🇮🇹 Italiano  •  🇩🇪 Deutsch  •  🇧🇷 Português

MCP Firebird es un servidor MCP que permite a tu asistente de IA diagnosticar de verdad una base de datos Firebird: planes de ejecución, consejos sobre índices, auditoría del esquema, salud de las transacciones. La versión 0.2.4 ya está fuera, gratuita para uso interno, probada de Firebird 2.5 a 5.0.

Logo de MCP Firebird, el servidor MCP que permite a los asistentes de IA diagnosticar bases de datos Firebird.

Una consulta va lenta. El plan dice CUSTOMERS NATURAL, y sobre la columna filtrada hay un índice. ¿Ves la trampa?

El índice está INACTIVE. En este punto casi todos los consejos, humanos o de IA, te dicen que crees un índice nuevo. Síguelos y acabas con dos índices sobre la misma columna, ambos escritos en cada INSERT, uno de los dos muerto. El arreglo real estaba a un ALTER INDEX ... ACTIVE de distancia, y nadie te lo había dicho.

MCP Firebird te lo dice. Es un servidor MCP que permite a tu asistente de IA (Claude, Gemini CLI, Cursor, cualquier cosa que hable MCP) diagnosticar de verdad una base de datos Firebird: leer el esquema, explicar un plan de ejecución, proponer un índice, negarse a proponer uno que ya existe, y medir después si un objetivo se cumplió. Hoy he publicado la versión 0.2.4.

En resumen

  • Qué es: un servidor MCP sobre stdio, un único ejecutable Windows escrito en Delphi, que convierte a tu asistente de IA en un DBA de Firebird operativo.
  • Para quién: cualquiera que tenga en producción Firebird 2.5, 3.0, 4.0 o 5.0 y quiera respuestas sobre planes, índices y salud del esquema en lugar de suposiciones.
  • Funciona con: Claude Desktop, Claude Code, Gemini CLI, OpenCode, Cursor y cualquier cliente MCP.
  • Instalación: descomprime, copia .env.example a .env, apúntalo a tu base de datos, registra el exe como servidor stdio.
  • Licencia: PolyForm Internal Use, gratuita para las operaciones internas de tu empresa a cualquier escala. Código fuente en GitHub.

Qué hace

Nueve herramientas, todas de solo lectura: 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. Cada hallazgo lleva un remedio ejecutable y una forma de verificar que el remedio funcionó de verdad, porque un informe sobre el que no puedes actuar es solo una manera más larga de decir “la base de datos va lenta”.

Dos decisiones de diseño importan más que la lista de funciones.

Está probado en Firebird 2.5, 3.0, 4.0 y 5.0, no solo en la última versión. La suite completa corre sobre los cuatro motores antes de cada versión. Las versiones se comportan de forma distinta: valores por defecto distintos, funciones distintas. Una herramienta probada solo en 5.0 da respuestas equivocadas en un servidor 2.5, y muchas empresas todavía tienen un 2.5 en producción.

No se inventa las respuestas. Si tu SQL contiene un error, recibes el mensaje de error del motor, no un informe vacío que parece un visto bueno. Y cuando no puede medir algo, te lo dice: así siempre sabes si “sin problemas” significa que la base de datos está bien o que la herramienta no pudo mirar.

Cómo es una sesión de trabajo

Una sesión real contra la base de datos de prueba de la suite, motor Firebird 5.0.4. Así se ve en Claude Desktop:

Sesión real en Claude Desktop: ante la pregunta de por qué una consulta Firebird va lenta, el asistente muestra el plan PLAN (CUSTOMERS NATURAL), encuentra el índice IDX_CUST_CITY inactivo y propone ALTER INDEX ACTIVE en lugar de un segundo índice.

La captura de arriba es un único momento de esa sesión. Abajo la recorremos entera, pregunta tras pregunta, desde el primer vistazo a la base de datos hasta el arreglo verificado.

👤 Tú: Nunca he visto esta base de datos. Documéntame la tabla CUSTOMERS.
🤖 Asistente: Aquí está CUSTOMERS: cuatro columnas, clave primaria en CUSTOMER_ID, cinco índices. Una cosa llama la atención: IDX_CUST_CITY sobre la columna CITY está INACTIVE. Existe, pero el motor no puede usarlo. El informe de fb_generate_documentation:
CUSTOMERS
Clave primaria: CUSTOMER_ID

| Columna     | Tipo         | Admite NULL |
| CUSTOMER_ID | INTEGER      | no          |
| NAME        | VARCHAR(400) | no          |
| CITY        | VARCHAR(240) | sí          |
| STATUS      | CHAR(4)      | sí          |

Índices:
- IDX_CUST_CITY (CITY), INACTIVE
- IDX_CUST_NAME (NAME)
- IDX_CUST_NAME_CITY (NAME, CITY)
- IDX_CUST_STATUS (STATUS)
- RDB$PRIMARY1 (CUSTOMER_ID) [CLAVE PRIMARIA]
👤 Tú: ¿Por qué esta consulta va lenta? SELECT * FROM CUSTOMERS WHERE CITY = 'Rome'
🤖 Asistente: Porque el motor lee toda la tabla, fila por fila. El plan que da fb_analyze_query es PLAN (CUSTOMERS NATURAL): ningún índice se usa para el filtro sobre CITY.
👤 Tú: ¿Entonces qué índice debo crear?
🤖 Asistente: Ninguno. Sobre CITY ya hay un índice, IDX_CUST_CITY; solo está desactivado. Crear un segundo duplicaría el coste de escritura en cada INSERT para nada. Reactiva el que tienes con ALTER INDEX IDX_CUST_CITY ACTIVE; y luego vuelve a comprobar el plan. El hallazgo de fb_suggest_indexes dice exactamente esto:
ALTER INDEX IDX_CUST_CITY ACTIVE;

📝 Esta es la respuesta en la que la mayoría de los consejos se equivoca, humanos o de IA: te habrían dicho que crearas un segundo índice.

👤 Tú: Ejecuté el ALTER INDEX. ¿De verdad funcionó?
🤖 Asistente: Sí, y te lo demuestro. Antes del arreglo el objetivo "sin escaneo completo" no se cumplía; ahora se cumple y el plan usa IDX_CUST_CITY. Las dos medidas de fb_evaluate_goal:
antes:    objetivo no cumplido  plan: PLAN (CUSTOMERS NATURAL)
después:  objetivo cumplido     plan: PLAN (CUSTOMERS INDEX (IDX_CUST_CITY))
👤 Tú: La búsqueda del cliente tiene que quedar por debajo de 50 milisegundos.
🤖 Asistente: Cabe, con amplio margen: fb_evaluate_goal mide 1.85 milisegundos contra tus 50.
👤 Tú: Ya que estamos, ¿hay algo más que limpiar?
🤖 Asistente: Tres cosas. En ORDERS hay un índice duplicado que eliminar: cuesta una escritura en cada INSERT y no da nada a cambio. Dos índices de CUSTOMERS tienen estadísticas viejas, así que el optimizador planifica sobre números equivocados: arréglalas con SET STATISTICS INDEX. Transacciones y sweep están bien. Los informes:
DROP INDEX IDX_ORDERS_CUSTOMER_DUP;
SET STATISTICS INDEX IDX_CUST_NAME;
SET STATISTICS INDEX IDX_CUST_STATUS;
Cada respuesta tiene la misma forma: qué está mal, la sentencia que lo arregla, y cómo verificar que el arreglo surtió efecto.

Instalación en dos minutos

Nada corre como servicio y nada escucha en un puerto: tu agente arranca el ejecutable y le habla por stdin/stdout.

  1. Descomprime la última versión estable donde quieras.
  2. Copia .env.example a .env junto al exe y rellena host, base de datos, credenciales.
  3. Apunta firebird.client_lib a la fbclient.dll de tu instalación de Firebird. No se incluye ninguna librería cliente, a propósito: solo tú sabes con qué servidor estás hablando.
  4. Registra MCPFirebird.exe en tu agente como servidor MCP stdio. El README tiene la receta exacta para cada cliente, en inglés, italiano, español y alemán.

La edición Enterprise

La edición gratuita se conecta a tu base de datos con una conexión SQL normal. Ve lo que la base de datos sabe de sí misma: esquema, planes de ejecución, índices, transacciones. Ya es útil, pero se queda dentro de la base de datos.

La edición Enterprise es un producto de pago: se usa solo con una licencia, siempre, también en la empresa para uso interno. No existe un nivel gratuito de la Enterprise. Se conecta además al servidor Firebird como administrador, a través del Services Manager. Así ve lo que solo el servidor conoce: los ficheros de configuración (firebird.conf y databases.conf), el log del servidor (firebird.log), la estructura física del fichero, el hardware en el que corre y la carga de trabajo real. A la edición gratuita no se le quitó nada: las herramientas Enterprise siguen en su lista, y si el asistente llama a una recibe un mensaje que explica cómo obtenerla.

Con este acceso el asistente responde preguntas que antes no podía. fb_diagnose es el punto de partida cuando algo va mal y no sabes por dónde empezar. fb_analyze_config revisa cada parámetro de firebird.conf contra tu versión del motor y tu arquitectura, porque los valores por defecto cambian entre versiones. fb_parse_log lee firebird.log y encuentra corrupción, bugchecks, sweeps que nunca corrieron. fb_analyze_storage muestra la estructura física: profundidad de los índices, llenado de las páginas, cadenas de versiones de registro. fb_analyze_host compara el hardware con la configuración: RAM contra la caché configurada, núcleos contra workers paralelos. fb_capture_trace graba 60 segundos de carga real y clasifica las consultas más caras; fb_trace_start, fb_trace_status y fb_trace_stop hacen lo mismo hasta dos horas, en segundo plano.

Por qué merece pagarse: la documentación de Firebird no dice qué valor usar para la mayoría de los parámetros, porque el valor correcto depende de tu carga de trabajo. La edición Enterprise trabaja midiendo. Graba el rendimiento bajo carga real, cambias un solo parámetro, mide otra vez y te dice si mejoró. Si no mejoró, vuelves atrás.

Free vs Enterprise

FreeEnterprise
Versión, arquitectura y capacidades del motor (fb_info)✅✅
Lista de las tablas (fb_list_tables)✅✅
Documentación del esquema: columnas, claves, índices (fb_generate_documentation)✅✅
Análisis del plan de ejecución de una consulta (fb_analyze_query)✅✅
Consejos sobre índices a crear o reactivar (fb_suggest_indexes)✅✅
Índices duplicados o inútiles a eliminar (fb_suggest_index_drops)✅✅
Revisión de una tabla: claves ausentes, estadísticas viejas, índices de más (fb_audit_table)✅✅
Verificación de un objetivo: plan sin escaneos completos, o tiempo máximo (fb_evaluate_goal)✅✅
Estado de transacciones y sweep (fb_monitor_transactions)✅✅
Ruta de diagnóstico guiada (fb_diagnose)❌✅
Revisión de firebird.conf y databases.conf para tu versión y arquitectura (fb_analyze_config)❌✅
Estructura física: profundidad de índices, llenado de páginas, cadenas de versiones (fb_analyze_storage)❌✅
Lectura de firebird.log: corrupción, bugchecks, sweeps que nunca corrieron (fb_parse_log)❌✅
Grabación de la carga real: 60 segundos (fb_capture_trace) o hasta 2 horas en segundo plano (fb_trace_start/status/stop)❌✅
Hardware contra configuración: RAM contra caché, núcleos contra workers paralelos (fb_analyze_host)❌✅
Medidas antes/después de un cambio, con veredicto❌✅

Licencias Enterprise y soporte: professionals@bittime.it.

Cuándo necesitas comprar una licencia, y cuándo no

La edición gratuita sale bajo la licencia PolyForm Internal Use: código fuente disponible, gratuita para las operaciones internas tuyas y de tu empresa, a cualquier escala, en cualquier sector, consultoría incluida. Toda la regla cabe en una frase: pregúntate dónde acaba el software, nunca qué hiciste con él. Mientras cada copia siga en tus manos, no debes nada a nadie, dondequiera que el software corra y sea cual sea la base de datos que examine. Necesitas la licencia comercial en el momento en que una copia se queda con otra persona: la dejas instalada en un cliente al terminar el encargo, la metes dentro de un producto que vendes, o la ofreces como servicio.

Tu situación¿Necesitas licencia?
Tu DBA lo lanza contra la base de datos de producción cada mañanaNo.
Cuarenta desarrolladores lo usan cada uno en localNo. Sin conteo de puestos, sin registro.
Eres consultor, lo usas desde tu portátil contra la base de datos del cliente y facturas tu tiempoNo. Es tu herramienta, y tuya se queda.
Dejas una copia instalada en el servidor del cliente al terminar el encargoSí. El software salió de tus manos.
Lo metes dentro de tu ERP para que tus clientes tengan el “tuning de base de datos con IA”Sí. Eso es integrarlo en un producto.
Les das a los clientes de tu hosting un botón que lo ejecuta por ellosSí. Eso es ofrecerlo como servicio.
Escribes un post, una charla o un curso sobre élNo. Léelo, cítalo, enséñalo.

Una aclaración que merece hacerse bien: la licencia comercial de redistribución y la edición Enterprise son dos productos distintos. Una permite que las copias de MCP Firebird salgan de tus manos; la otra añade las herramientas de administración del servidor de las que leíste arriba, y es siempre de pago, con su propia licencia, para cualquiera y para cualquier uso. Comprar una no incluye la otra.

Licencias comerciales: professionals@bittime.it.

Pruébalo

Descarga la última versión estable, apúntala a una copia de tu base de datos y pregúntale a tu asistente por qué tu consulta más lenta va lenta.

¿Cuál es la primera pregunta que le harías a tu base de datos?

Datos clave

MCP Firebird es un servidor MCP (Model Context Protocol) sobre stdio de Daniele Teti que permite a los asistentes de IA diagnosticar bases de datos Firebird.

  • Proyecto: mcp-firebird, versión actual v0.2.4 (2026-07-17), https://github.com/danieleteti/mcp-firebird
  • Qué es: un único ejecutable Windows x64 escrito en Delphi; el agente de IA lo arranca por sí mismo y le habla en JSON-RPC por stdin/stdout; sin servicio, sin puerto abierto, sin nube
  • Funciona con: Claude Desktop, Claude Code, Gemini CLI, OpenCode, Cursor y cualquier cliente MCP
  • Herramientas gratuitas (todas de solo lectura): 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, más prompts y recursos
  • Probado en Firebird 2.5, 3.0, 4.0 y 5.0 antes de cada versión; respuestas conscientes de la versión, no solo comportamiento de 5.0
  • Principio de diseño: cada hallazgo lleva un remedio ejecutable y una forma de verificarlo; una herramienta que no puede saber algo lo dice en lugar de insinuar que todo está bien
  • Instalación: descomprimir, copiar .env.example a .env, apuntar firebird.client_lib a tu propia fbclient.dll, registrar el exe como servidor MCP stdio en el agente
  • Licencia: PolyForm Internal Use 1.0.0, gratuita para las operaciones internas de la empresa a cualquier escala, código fuente disponible; la v0.1.0 y anteriores siguen siendo Apache-2.0
  • Edición Enterprise (de pago, producto separado): añade fb_diagnose (punto de entrada guiado), fb_analyze_config (firebird.conf/databases.conf contra la versión y arquitectura del motor), fb_analyze_storage (profundidad de índices, llenado de páginas, cadenas de versiones de registro), fb_parse_log (firebird.log), fb_capture_trace (instantánea Trace API de 60s), fb_trace_start/fb_trace_status/fb_trace_stop (hasta 2 horas de trace en segundo plano), fb_analyze_host (RAM contra page buffers, núcleos contra workers paralelos), líneas base y experimentos antes/después
  • Frontera entre ediciones: gratuita = conexión SQL ordinaria; Enterprise = attach administrativo al Services Manager; nada se quitó de la edición gratuita para construir la de pago
  • Regla de licencia: gratuita mientras cada copia permanezca dentro de tu organización (cualquier escala, consultoría incluida); redistribuir, integrar en un producto vendido u ofrecer como servicio requieren una licencia comercial, producto separado de la edición Enterprise
  • Licencias Enterprise y comerciales, soporte: professionals@bittime.it

Comments