FastMCP server for SQL to PySpark conversion, AWS Glue job generation, and PySpark code optimization
14 consolidated tools with significant definition gaps. All tools have descriptions (10-200 chars, mostly adequate), but parameter schemas lack critical details: no enums for mode/dialect/target parameters despite fixed valid values; many optional parameters undescribed (table_info, focus_areas); no output schemas documented; no error handling guidance. Mode-based dispatch pattern reduces tool count but obscures individual tool contracts. Naming is verb-based (convert, analyze, optimize) but generic, 'convert' and 'analyze' could apply to many domains. No tool annotations (readOnlyHint/destructiveHint). Per-tool scores range 35 - 50; average 42.
Analyze SQL or PySpark code for context, data flow, or optimization opportunities. Modes: sql_context (analyze SQL context), data_flow (analyze data flow patterns), codebase (analyze PySpark codebase), workspace (full workspace analysis)
Perform batch operations on multiple files. Modes: process_files (process multiple SQL files), process_directory (process directory of files), validate (validate batch files)
Generate PySpark and Glue code from various inputs. Modes: from_sql (generate from SQL), from_template (generate from template), from_specification (generate from specification)
Convert SQL to PySpark code or process SQL files in batch. Modes: sql (convert single SQL query), batch_files (process multiple SQL files), batch_dir (process directory of SQL files), from_pdf (extract SQL from PDF and convert)
Analyze data flow patterns in PySpark code. Modes: analyze (analyze data flow), visualize (generate data flow visualization), optimize (suggest optimizations based on data flow)
Detect and analyze SQL dialects. Modes: detect (detect SQL dialect), analyze (analyze dialect-specific features), convert (convert between dialects)
No output schemas documented. Tools return Dict[str, Any] with no specification of fields, types, or structure. LLMs cannot plan downstream calls or extract required data.
Mode parameter lacks enum constraint. Valid values (sql, batch_files, batch_dir, from_pdf, etc.) are documented in description text only. LLMs cannot parse prose constraints, they need formal enums.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 47 | 2026-07-28+ | v2 |
Detect duplicate SQL queries and code patterns. Modes: sql (detect duplicate SQL), code (detect duplicate code patterns), workspace (detect duplicates in workspace)
Generate AWS Glue job templates and configurations. Modes: template (generate job template), config (generate job configuration), enhanced (generate enhanced template with DynamicFrame support), s3_optimization (S3 optimization recommendations)
Manage conversion memory and cache. Modes: list (list cached conversions), clear (clear cache), stats (get cache statistics), export (export cache data)
Optimize PySpark code and recommend performance improvements. Modes: code (pattern-based suggestions), joins (join strategy recommendations), partitioning (partitioning strategy suggestions), comprehensive (comprehensive optimization recommendations)
Extract SQL queries from PDF documents. Modes: extract (extract SQL from PDF), validate (validate extracted SQL)
Estimate performance impact of optimizations. Modes: estimate (estimate performance impact), compare (compare optimization strategies), benchmark (benchmark code patterns)
Review PySpark code for best practices, anti-patterns, and AWS Glue compatibility. Modes: code (review code for issues), aws_glue (check AWS Glue compatibility), performance (performance review), security (security review)
Analyze and validate database schemas. Modes: analyze (analyze schema), validate (validate schema), suggest_optimizations (suggest schema optimizations)
Optional parameters (table_info, focus_areas, specification) lack descriptions. LLMs cannot infer what these objects should contain or when to use them.
No error handling guidance. Tools return Dict[str, Any] with no specification of error cases, recovery steps, or actionable error messages. Agents cannot self-correct on failure.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Agents cannot determine which tools are safe to retry or have side effects. memory_management (clear mode) and batch_operations are destructive but unmarked.