MCP server that profiles local datasets (CSV, Parquet, JSON, Excel) so AI agents can understand data without reading raw rows.
Single tool with strong naming (profile_dataset), comprehensive description (280+ chars), and well-documented parameters. All 4 parameters have types and descriptions. Input schema is complete with defaults and constraints. Tool annotations present (readOnlyHint, openWorldHint). Output schema documented in docstring. Main gaps: no explicit error handling guidance in description, no enum constraints on file format parameter, and output structure not formally specified in schema.
Summarise the structure and quality of a local data file. Call this whenever you need to understand a dataset — its columns, types, ranges, missing values, or quality problems — before analysing it, writing code against it, or answering questions about it. Prefer this over reading the file directly: it returns a compact summary instead of raw rows, so it works on files far too large to read, at a small fraction of the tokens. Reports per column: dtype, null count and percentage, distinct count, sample values, quartiles for numbers, date ranges, and the most frequent values for categories. Flags likely problems: all-null and constant columns, probable ID columns, mixed types, and numbers or dates that were stored as text.
Output schema not formally documented. Docstring describes return structure (file info, shape, per-column detail, duplicate count) but no JSON Schema definition visible for the response object.
File format parameter 'path' accepts free-form string with no enum constraint. Description lists supported formats (.csv, .tsv, .parquet, .json, .jsonl, .xlsx, .xls) but LLM could pass unsupported extensions.
Error handling not documented in tool description. ProfileError is caught and converted to ValueError, but description does not explain what errors are possible or how to recover (e.g., 'file not found, try checking the path').
Parameter 'sheet' lacks guidance on discovery. Description mentions 'result lists every available sheet' but does not explicitly state to call again with a different sheet name if the first result looks wrong.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | 2026-07-28+ | v2 |