A Model Context Protocol server for generating charts. TypeScript-based MCP server with a pluggable renderer-adapter architecture (remote API, Recharts local, or hybrid).
The MCP Chart Server exposes 27 chart generation tools with significant quality gaps. While some tools (generate_area_chart, generate_bar_chart, generate_column_chart, generate_dual_axes_chart, generate_funnel_chart, generate_histogram_chart, generate_mind_map, generate_network_graph) have partial schemas visible in callTool.ts, the majority (15 of 27 tools) lack documented input schemas entirely. Descriptions are present but generic and under-specified ('Generate a X chart visualization'). No output schemas are documented. Parameter descriptions exist for tools with schemas but are minimal and lack validation guidance. The rubric baseline shows 100% of A+ tools have documented return types and full parameter documentation; this server achieves ~30% schema coverage and ~40% parameter clarity. Tool naming follows verb_noun convention (positive), but compositions lack error guidance and recovery patterns.
Generate an area chart visualization
Generate a bar chart visualization
Generate a boxplot chart visualization
Generate a column chart visualization
Generate a district map visualization
Generate a dual axes chart visualization
Generate a fishbone diagram visualization
Generate a flow diagram visualization
15 of 27 tools (56%) have no documented input schema. Tools like generate_line_chart, generate_liquid_chart, generate_organization_chart, generate_pie_chart, generate_radar_chart, and others are missing JSON Schema definitions entirely. Per HARD SCORING RULE: 'If a tool has NO input schema at all: its schema score MUST be 0.' This prevents LLMs from understanding what parameters are valid.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 42 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 21 | - | v1 |
Generate a funnel chart visualization
Generate a histogram chart visualization
Generate a line chart visualization
Generate a liquid chart visualization
Generate a mind map visualization
Generate a network graph visualization
Generate an organization chart visualization
Generate a path map visualization
Generate a pie chart visualization
Generate a pin map visualization
Generate a radar chart visualization
Generate a sankey chart visualization
Generate a scatter chart visualization
Generate a spreadsheet visualization
Generate a treemap chart visualization
Generate a venn chart visualization
Generate a violin chart visualization
Generate a waterfall chart visualization
Generate a word cloud chart visualization
All 27 tool descriptions are generic single-sentence strings ('Generate a X chart visualization'). They fail the 10-1024 character baseline expectation and do not explain WHAT the tool does, WHEN to use it, or what the LLM should expect. These are ~35 chars and non-specific.
Output schemas are completely undocumented. The callTool.ts code returns a generic response structure with _meta.spec and content[].text, but the schema does not describe what the actual visualization output contains (imageUrl, svg, html, pngBase64 variants). LLMs need to know what fields to expect so they can plan downstream tool calls and extract the right data.' No A-grade tool omits output documentation.
Parameter descriptions in documented schemas are minimal (e.g., 'Array of data points with time, value, and optional group'). They lack validation guidance, acceptable ranges, or enumerated values.
Error handling lacks recovery guidance. callTool.ts catches errors and returns McpError with basic messages ('Unknown tool', 'Invalid parameters', 'Failed to generate chart'). No error classification (retryable vs. user-fixable vs. fatal).
Missing composition and tool-chaining design. All 27 tools are independent chart generators. No discovery tools (list_available_chart_types, describe_chart_requirements), no validation tools, and no helper tools that guide LLM through multi-step visualization workflows. Per pattern: 'Ensure tool A's output contains the IDs and references tool B needs.' This server is an N-of-1 tool repeated 27 times.
Naming convention issue: 'generate_spreadsheet' is poorly scoped. It is unclear whether this generates a spreadsheet visualization (like a table chart), exports data as a spreadsheet file, or renders an embedded spreadsheet widget. Consider 'generate_table_chart' or 'export_spreadsheet' to disambiguate.