MCP server exposing Firebird databases registered in FlameRobin for database schema inspection, search, and query execution
Firebird MCP demonstrates solid definition quality with clear, action-oriented tool names and comprehensive parameter descriptions. All four tools are explicitly registered with the [McpServerTool] attribute and have detailed descriptions that explain their purpose and when to use them. Parameter descriptions are consistently present and informative. However, the server lacks formal JSON Schema output documentation and does not include structured error guidance patterns. Tool descriptions average 246 characters (within the 194-char production baseline), and all parameters carry type information and descriptions. The main gaps are: (1) no documented output schemas for tools, (2) no error recovery guidance or actionable error messages, (3) no tool annotations (readOnlyHint), and (4) no input validation or constraint documentation in parameter descriptions beyond what's in the Description attribute.
Return a compact overview of every user table in the database: column names with types, primary key, and foreign key counts. Use this as the first step when exploring an unfamiliar database — it replaces calling list_objects + describe_table on every table. Returns [{table, columns: ["NAME:TYPE"], pk: ["COL"], fk_out, fk_in}].
Return full structural details for a single table or view in one call: column definitions, primary key, all indexes, and foreign keys in both directions. Prefer this over calling describe_table + get_table_constraints + get_foreign_keys separately. Returns {table, columns:[{name,type,nullable,default_src}], primary_key:[col], indexes:[{name,columns,unique}], foreign_keys_out:[{column,references,on_update,on_delete}], foreign_keys_in:[{from_table,from_column,on_column,on_update,on_delete}]}.
List all Firebird servers and databases registered in FlameRobin. ALWAYS call this first — the 'key' in each result is required by every other tool's 'database' parameter. Returns [{key, host, port, path}].
Search for tables or columns whose names match a pattern. Use this instead of listing all objects when you know part of a name — e.g. find every table containing 'ORDER', or every column named 'CUSTOMER_ID'. Returns {tables: ["NAME"], columns: [{table, column, type}]}.
No formal JSON Schema documentation for tool outputs. All four tools document return types in English prose within the Description field, but the MCP spec expects structured output schemas. This makes it harder for clients to parse and validate responses, and reduces the value LLMs gain from knowing the response structure in advance.
No tool annotations (readOnlyHint). All four tools are read-only operations, but this is not declared via tool annotations. The MCP 2026-07-28 spec supports readOnlyHint/destructiveHint/idempotentHint attributes that should be present on read-only tools to guide agent behavior.
No error recovery guidance. Tools throw generic ArgumentException for missing databases (e.g., 'Unknown database key') but do not provide actionable next steps. Error messages should guide the agent: 'Unknown database "invalid-key". Available databases: db1, db2, db3. Call list_databases() to see all registered databases.'
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 48 | 2026-07-28+ | v2 |
Parameter constraints not formally expressed. The 'filter' and 'pattern' parameters accept '.NET regex' but the descriptions do not warn about invalid regex syntax or show what error the LLM will receive if it passes an invalid pattern. No regex validation error messages with suggestions.
No pagination structure for large result sets. Tools accept 'limit' but do not return a 'total_count', 'next_cursor', or indication of whether more results exist. If a database has 1000 tables and limit=20, the agent cannot fetch subsequent pages.