A modular MCP server for creating plotnine visualizations through chat
The server defines 8 tools with explicit schemas and descriptions. Most tools have reasonable input schemas and descriptions, but there are systematic gaps in output schema documentation, parameter descriptions lack detail, and error handling is minimal. The create_plot tool has an extensive schema but lacks output documentation. Helper tools (list_templates, list_palettes, etc.) have minimal descriptions (under 50 chars) and lack parameter context. No tool declares error recovery guidance or output structure. Naming is mostly clear and verb-driven, but parameter constraints are underspecified (e.g., which geom types are truly valid? what do transform types mean?). This is typical mid-tier community work, functional but under-specified for reliable agent use.
Apply a template configuration to data for rapid plot creation.
Apply data transformations before plotting.
Create a plotnine visualization from data. This tool allows you to create highly customizable plots using the grammar of graphics. You can specify data sources (file, URL, or inline), aesthetic mappings, geometries, scales, themes, facets, labels, and coordinate systems. NEW: Multi-layer plots! Use 'geoms' array to combine multiple geometries in one plot. Example usage: - Simple scatter plot: provide data_source, aes (x, y), and geom (type: "point") - Multi-layer plot: use geoms array with multiple geometries (e.g., point + smooth) - Line plot with custom theme: add theme config with base and customizations - Faceted plot: include facet config to split by categorical variables - Multiple scales: provide list of scale configs for x, y, color, etc. All parameters support extensive customization through nested objects.
Get detailed information about a specific color palette.
List available color palettes for visualizations.
Missing output schemas: ZERO tools document what they return. LLMs cannot plan downstream tool calls or extract necessary IDs/references without knowing the output structure.
Undocumented enum constraints: geom types, transform types, palette categories, and scale types are described in text within descriptions but NOT declared as formal enum constraints. Agents cannot validate their own inputs and may pass invalid values.
Minimal descriptions on discovery tools: list_templates (52 chars), list_palettes (56 chars), palette_categories (53 chars) lack substance. Agents cannot determine WHEN to call these tools or what insight they will reveal.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 51 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 0 | - | v1 |
List all available plot templates with descriptions.
Get palette categories with descriptions.
Get template suggestions based on data characteristics.
Parameter descriptions incomplete or absent: apply_template.aes has no description. suggest_template.goal has generic description. apply_transforms.transforms[*].type lacks enum and semantic documentation. Parameters like 'params' objects lack guidance on valid sub-keys.
No error recovery guidance: No tool describes what happens on failure or what the agent should do next. Missing patterns like 'User not found. Try search_users()' or 'Invalid status, must be X|Y|Z'.
Numeric parameter ranges unbounded: num_numeric and num_categorical in suggest_template lack min/max. Should these be 0-100? 0-1000? Agents may pass nonsensical values.
Dependency between tools not documented: apply_template requires a valid template_name, but no description tells agents to call list_templates first. Similar issue: get_palette_info requires valid palette_name but no hint to call list_palettes.