Python implementation of the Foggy Data MCP Bridge for querying semantic data models, composing scripts, generating charts, and retrieving metadata
Server has 5 tools with complete input schemas and descriptions. Naming follows verb_noun convention (get_, list_, describe_, generate_, compose_). Descriptions are present and substantive (100-300 chars), meeting baseline minimums. However, parameter descriptions lack depth, many omit format constraints, ranges, or validation rules. Output schemas are not documented. Error handling is minimal. The compose_script tool has a WRITE risk but no confirmation/dry-run pattern. Overall: solid foundation but gaps in parameter guidance and output documentation prevent higher scores.
Run a secure FSScript SemanticDSL script for multi-model queries, derived queries, joins, unions, and time-window analysis. Use only dsl({...}), .join(...), and .union(...). Return query plans as an envelope such as return { plans: plan }; do not call .execute() directly unless specifically instructed. Do not generate raw SQL, raw WITH blocks, file I/O, network calls, dynamic imports, eval, or host-controlled security and datasource routing parameters.
Get a detailed description of a model optimized for AI/LLM understanding, including natural language descriptions and example queries. Output is always markdown.
Retrieve metadata and schema information for a query model, including available columns, measures, dimensions, and supported operations.
List all available query models (QM) and table models (TM) that can be queried.
Generate a chart visualization from query data. Supports bar, line, pie, and scatter charts.
Output schemas not documented. Tools return results but LLMs cannot predict field names, types, or structure. Forces agents to guess downstream field mappings.
compose_script is WRITE-risk but lacks confirmation/dry-run pattern. Agents can execute destructive FSScript without preview or rollback option.
Parameter descriptions lack format constraints and validation rules. E.g., 'model_name' has no guidance on valid formats, length limits, or character restrictions. 'chart_type' enum is present but width/height lack min/max bounds.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 49 | 2026-07-28+ | v2 |
Error handling not visible in tool definitions. No recovery guidance, error classification, or actionable error messages documented.
list_models accepts no parameters (empty input schema). No pagination, filtering, or limit controls. Large model catalogs will return unbounded results, risking context window exhaustion.