Firebird MCP Server
2025
An MCP (Model Context Protocol) server that connects AI assistants like Claude directly to Firebird databases. Once configured, Claude can inspect schema, run queries, and execute DDL or DML without you copy-pasting anything.
The server reads connection details from FlameRobin's existing fr_databases.conf file. If you already have FlameRobin set up with your databases, the server works out of the box. No extra config files, no connection strings to manage.
Built on the native Firebird .NET driver, which means wire encryption works by default. All registered databases are available in a single session, so you can query across databases without restarting anything.
| This project | mcpFirebird | |
|---|---|---|
| Credentials | Read automatically from FlameRobin's config | Must pass --user, --password, --host, --database on every launch |
| Multi-database | All FlameRobin-registered databases available in one session | Single database per server instance |
| Wire encryption | Supported via native .NET Firebird driver | Not supported, requires WireCrypt=Disabled on the server |
| Runtime | .NET 9 self-contained executable | Node.js / npm |
| Schema introspection | Tables, views, procedures, triggers, generators, roles, FK/PK/constraints, execution plans, missing indexes | Tables and basic schema |
| DDL / DML / scripts | Yes | SQL execution only |
Build a self-contained executable with dotnet publish, then add it to claude_desktop_config.json:
{
"mcpServers": {
"firebird": {
"command": "C:\\path\\to\\FirebirdMcp.exe",
"env": {
"Logging__LogLevel__Default": "None"
}
}
}
}The Logging__LogLevel__Default=None env var is required. Startup log output goes to stdout, which Claude reads as part of the MCP handshake, so any unexpected output breaks the connection.
Discovery
ListDatabasesList all servers and databases registered in FlameRobinGetSchemaSummaryCompact overview of every table: columns, PK, and FK countsSearchSchemaFind tables or columns whose names match a pattern
Schema Inspection
InspectTableFull structural detail for a table: columns, PK, indexes, and FKs in one callListObjectsList tables, views, or both with optional name filterDescribeTableColumn definitions with types, lengths, nullability, and defaultsGetForeignKeysFK relationships for a table in either or both directionsGetTableConstraintsPK, FK, UNIQUE, and CHECK constraintsGetCheckConstraintsThe actual expression behind each CHECK constraintGetViewSourceThe SELECT statement that defines a view
Procedures, Triggers and Generators
ListProceduresList stored procedures with optional filterDescribeProcedureInput and output parameter signatures without the full bodyGetProcedureSourceFull PSQL source of a stored procedureListTriggersList triggers with their parent tableGetTriggerSourceFull PSQL source of a triggerListGeneratorsGenerators/sequences with current valuesGetNextGeneratorValueAdvance a generator and return the new valueListRolesRoles defined in the database
Querying and Analysis
RunQueryExecute a SELECT and return results as row objectsSampleTableReturn a small sample of rows without writing SQLCountRowsCount rows in a table, optionally filtered by a WHERE clauseGetDistinctValuesDistinct values for a column, ordered by frequencyGetExecutionPlanExecution plan for a SELECT to detect full-table scansAnalyzeMissingIndexesWhich columns lack indexes; optionally scoped to a subset
Monitoring and Writes
GetDatabaseInfoODS version, page size, dialect, and other file metadataListActiveConnectionsActive connections to the databaseExecuteDdlExecute a single CREATE/ALTER/DROP statement and commitExecuteDmlExecute INSERT, UPDATE, or DELETE and commitExecuteScriptExecute multiple semicolon-separated statements