Skip to main content
Glama
Michael2150

flamerobin-mcp-server

by Michael2150
README.md
# flamerobin-mcp-server

A Model Context Protocol (MCP) server for Firebird databases intended for **local use**. It reads connection details from [FlameRobin's](http://www.flamerobin.org/) `fr_databases.conf` so no extra configuration is needed — if you have FlameRobin set up with your Firebird databases, this server works out of the box.

## Compared to [mcpFirebird](https://github.com/PuroDelphi/mcpFirebird)

| | This project | mcpFirebird |
|---|---|---|
| **Credentials** | Read automatically from FlameRobin's config — no setup required | 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 (native Firebird .NET 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 index analysis | Tables and basic schema |
| **DDL / DML / scripts** | Yes — `ExecuteDdl`, `ExecuteDml`, `ExecuteScript` | SQL execution only |
| **Deployment** | Local only — runs on your PC alongside FlameRobin | Cloud-deployable via Smithery, SSE/HTTP transports |

## Building

```
dotnet build FirebirdMcp.csproj
```

## Publishing a single self-contained executable

```
dotnet publish FirebirdMcp.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true -o publish-single
```

The output is `publish-single\FirebirdMcp.exe`. The `publish-single\` folder is gitignored.

## Claude Desktop configuration

Add to `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "firebird": {
      "command": "C:\\path\\to\\publish-single\\FirebirdMcp.exe",
      "env": {
        "Logging__LogLevel__Default": "None"
      }
    }
  }
}
```

> **Important:** The `Logging__LogLevel__Default=None` env var is required. The server's startup log output is written to stdout, which Claude reads as part of the MCP handshake — any unexpected output causes Claude to fail to recognize the server.

## Tools

| Tool | Description |
|------|-------------|
| `ListDatabases` | List all servers/databases registered in FlameRobin |
| `ListObjects` | List tables, views, or both — with optional regex filter |
| `ListProcedures` | List stored procedures — with optional regex filter |
| `ListTriggers` | List triggers — with optional regex filter |
| `ListGenerators` | List generators/sequences with current values |
| `ListRoles` | List roles — with optional regex filter |
| `DescribeTable` | Column definitions — supports `brief` mode and column filter |
| `GetForeignKeys` | FK relationships for a table (`in`, `out`, or `all` directions) |
| `GetTableConstraints` | PK, FK, UNIQUE, CHECK constraints for a table |
| `GetProcedureSource` | PSQL source of a stored procedure |
| `GetTriggerSource` | PSQL source of a trigger |
| `GetViewSource` | SQL source of a view |
| `GetExecutionPlan` | Execution plan for a SELECT — shows index usage |
| `AnalyzeMissingIndexes` | Which columns lack indexes; optionally scoped to filter columns |
| `GetDatabaseInfo` | ODS version, page size, dialect, etc. |
| `ListActiveConnections` | Active connections to the database |
| `RunQuery` | Execute a SELECT — supports `maxRows` and `columns` projection |
| `ExecuteDdl` | Execute CREATE/ALTER/DROP and commit |
| `ExecuteDml` | Execute INSERT/UPDATE/DELETE and commit |
| `ExecuteScript` | Execute multiple semicolon-separated statements |

TDQS

A4.3/5.0

Scored across 29 tools

Disambiguation5/5

Every tool has a clearly distinct purpose. Overlapping tool pairs like describe_table/inspect_table and get_table_constraints/get_foreign_keys are well-differentiated by their descriptions, and no two tools perform the same function.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (e.g., analyze_missing_indexes, execute_dml, run_query). No mixing of styles or vague verbs.

Tool Count5/5

29 tools is appropriate for a comprehensive database management server. The count covers schema exploration, data manipulation, execution, and administrative tasks without being bloated or thin.

Completeness5/5

The tool set covers the full lifecycle of database interaction: schema discovery (describe, inspect, list), DML/DDL execution, querying, constraint and index analysis, and administrative utilities. Missing features like user management are peripheral to the server's core purpose.

Maintenance

ActivityInactive
ResponsivenessNo issues