MCP server providing SQL query execution and metadata browsing for Facebook Ads data source via JDBC
Three tools are defined with explicit schemas and descriptions. However, the descriptions are generic and lack depth required for LLM reasoning. Parameter descriptions are minimal. Output schemas are not documented, tools return CSV output but no structured field mapping is provided. Error handling is minimal (generic RuntimeException). The tools follow a straightforward data-access pattern but lack the LLM-optimization guidance needed for production agents.
Retrieves a list of fields, dimensions, or measures (as columns) for an object, entity or collection (table). Use the `PREFIX_get_tables` tool to get a list of available tables. The output of the tool will be returned in CSV format, with the first line containing column headers.
Retrieves a list of objects, entities, collections, etc. (as tables) available in the data source. Use the `PREFIX_get_columns` tool to list available columns on a table. Both `catalog` and `schema` are optional parameters. The output of the tool will be returned in CSV format, with the first line containing column headers.
Execute a SQL SELECT statement.
Output schemas are completely undocumented. All three tools return CSV, but the CSV structure (column names, data types, field ordering) is never defined. LLMs cannot reason about downstream processing.
Error handling is minimal. Tools throw RuntimeException with a generic 'ERROR: ' prefix. No guidance for LLM on recovery (e.g., 'table not found, use get_tables to discover valid tables'). No categorization of retryable vs. fatal errors.
Tool descriptions are too brief or vague. PREFIX_run_query description is only 31 characters, violating the 10 - 1024 guideline and requiring score cap at 40. No clear WHEN/WHY guidance for LLM selection. Parameter descriptions are in the wrong place (sql parameter tries to encode tool-level constraints).
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 48 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 36 | - | v1 |
No documentation of result limits or pagination. Tools may return CSV with thousands of rows, bloating context window and degrading LLM reasoning. No guidance on LIMIT/OFFSET in query construction.
Parameter names lack clarity. 'catalog' and 'schema' are domain-specific terms. No guidance on whether these are required, how they relate (catalog contains schemas?), or what happens if omitted. Tools should accept both IDs and human-readable names, but this is not addressed.
No tool annotations (readOnlyHint, idempotentHint, destructiveHint) present. Tools are read-only, which should be declared via annotations for agent safety.