MCP server for LLM-generated Python code for dataset exploration
Two tools with basic schemas and descriptions, but significant gaps in parameter documentation, error handling, and output structure. analyze_dataset has a reasonable description (194 chars) and proper input schema with types. clean_data similarly has schema and description. However, both tools lack enum constraints for string parameters (analysis_type, operations), missing value descriptions for array items, and no documented output schemas. Error handling is minimal (generic try-catch). Parameter descriptions are present but lack format/constraint details (e.g., what constitutes a valid dataset_path? Absolute or relative?). No tool annotations (readOnlyHint/destructiveHint). Output is unstructured text rather than JSON objects, forcing LLMs to parse prose. Baseline: 194 chars avg description (both tools meet this), but 100% of A+ tools document return types (neither does). Average params per tool: 3 (within baseline p10-p90), but descriptions lack actionable constraints.
Analyze dataset and return actual results. Args: dataset_path: Path to the dataset file (CSV format) analysis_type: Type of analysis - "summary", "correlation", "distribution", "missing_values" columns: Specific columns to analyze (if None, analyzes all columns)
Perform data cleaning operations and return results. Args: dataset_path: Path to the dataset file (CSV format) operations: List of cleaning operations - "remove_nulls", "fill_nulls", "remove_duplicates", "standardize_columns", "convert_types" output_path: Path to save cleaned dataset (optional)
No enum constraints on string parameters. 'analysis_type' accepts free-form strings; should declare enum: ['summary', 'correlation', 'distribution', 'missing_values']. 'operations' similarly lacks enum for ['remove_nulls', 'fill_nulls', 'remove_duplicates', 'standardize_columns', 'convert_types']. LLMs will hallucinate invalid values.
Output schemas not documented. Both tools return unstructured text strings. LLMs cannot parse results reliably or extract structured data for downstream calls. Should return JSON objects with typed fields (e.g., {summary: string, shape: [int, int], dtypes: object}).
Parameter descriptions lack actionable constraints. 'dataset_path' does not specify: absolute vs relative paths, required file format (CSV only?), max file size, or error behavior if file missing. 'columns' array lacks item description. Descriptions should state format, range, and constraints explicitly.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 49 | 2026-07-28+ | v2 |
No tool annotations. clean_data is destructive (writes files, modifies data) but lacks destructiveHint. analyze_dataset is read-only but lacks readOnlyHint. Agents cannot distinguish safe from risky operations without explicit annotations.
Minimal error handling. Both tools catch generic Exception and return error strings. No categorization (retryable vs user-fixable vs fatal). No actionable recovery guidance. E.g., 'Error analyzing dataset: [Errno 2] No such file or directory' gives LLM no next step.