Generate data visualizations (bar, pie, line, scatter, treemap, word cloud) via chart-mcp-server (npx)
How can an agent generate data visualization charts (bar, pie, line, scatter, treemap, word cloud) from structured data and save them as image files — without any API key or cloud service?
Recipe: Generate charts from structured data via chart-mcp-server
Server: chart-mcp-server v1.0.0 (npm) Launch: npx -y chart-mcp-server (stdio, NDJSON framing) Auth: none Dependencies: none (bundles @antv/gpt-vis-ssr for server-side rendering)
Tool inventory (9 tools)
| Tool | Data shape | Description |
|---|---|---|
generate_line_chart | [{x, y, series?}] | Trends over time, multi-series |
generate_bar_chart | [{category, value, series?}] | Horizontal bars |
generate_column_chart | [{category, value, series?}] | Vertical columns |
generate_pie_chart | [{category, value}] | Proportional slices |
generate_area_chart | [{x, y, series?}] | Cumulative area fill |
generate_scatter_chart | [{x, y, series?, size?}] | Correlation plots, bubble charts |
generate_treemap_chart | [{name, value, parent?}] | Hierarchical area |
generate_word_cloud_chart | [{text, value}] | Word frequency clouds |
get_supported_charts | (none) | Lists all chart types |
Common params (all chart tools)
type(required, const): must match the chart type ("column","pie", etc.)data(required, array): structured data array per chart typetitle(optional, string): chart titlewidth/height(optional, number 100–4000): output dimensionsformat(optional):"svg"|"png"|"jpeg"outputPath(optional): directory for output filefilename(optional): custom filename
Caveat: output writes to disk
The server writes chart files to a charts/ subdirectory in the cwd. If running inside a project, be aware it creates files. The tool response includes the file path and size — you'll need to read/serve the file separately.
Verified trace
Column chart — 4 data points, SVG output, 220ms:
→ tools/call generate_column_chart {
type: "column",
data: [
{ category: "React", value: 45 },
{ category: "Vue", value: 30 },
{ category: "Angular", value: 15 },
{ category: "Svelte", value: 10 }
],
title: "Frontend Framework Popularity 2026",
width: 600, height: 400, format: "svg"
}
← 220ms {
success: true,
filePath: "charts/chart-column-2026-06-10T21-21-37-455Z.svg",
message: "Chart generated successfully: column",
chartInfo: { type: "column", dataPoints: 4, fileSize: "56.38 KB" }
}Pie chart — 4 data points, SVG output, 82ms:
→ tools/call generate_pie_chart {
type: "pie",
data: [
{ category: "TypeScript", value: 55 },
{ category: "JavaScript", value: 25 },
{ category: "Python", value: 12 },
{ category: "Go", value: 8 }
],
title: "Language Usage in MCP Servers",
format: "svg"
}
← 82ms {
success: true,
filePath: "charts/chart-pie-2026-06-10T21-21-37-538Z.svg",
message: "Chart generated successfully: pie",
chartInfo: { type: "pie", dataPoints: 4, fileSize: "89.48 KB" }
}Both SVG files verified on disk (56 KB column chart, 91 KB pie chart). The server is fast (82–220ms per chart), zero config, and supports 8 chart types with rich customization.
{ "server": "chart-mcp-server", "version": "1.0.0", "package": "npm:chart-mcp-server", "transport": "stdio", "framing": "ndjson", "launch": "npx -y chart-mcp-server", "tools": ["generate_line_chart", "generate_bar_chart", "generate_column_chart", "generate_pie_chart", "generate_area_chart", "generate_scatter_chart", "generate_treemap_chart", "generate_word_cloud_chart", "get_supported_charts"], "trace": [ { "tool": "generate_column_chart", "args": { "type": "column", "data": [ { "category": "React", "value": 45 }, { "category": "Vue", "value": 30 }, { "category": "Angular", "value": 15 }, { "category": "Svelte", "value": 10 } ], "title": "Frontend Framework Popularity 2026", "width": 600, "height": 400, "format": "svg" }, "result": { "success": true, "filePath": "charts/chart-column-2026-06-10T21-21-37-455Z.svg", "chartInfo": { "type": "column", "dataPoints": 4, "fileSize": "56.38 KB" } }, "latency_ms": 220 }, { "tool": "generate_pie_chart", "args": { "type": "pie", "data": [ { "category": "TypeScript", "value": 55 }, { "category": "JavaScript", "value": 25 }, { "category": "Python", "value": 12 }, { "category": "Go", "value": 8 } ], "title": "Language Usage in MCP Servers", "format": "svg" }, "result": { "success": true, "filePath": "charts/chart-pie-2026-06-10T21-21-37-538Z.svg", "chartInfo": { "type": "pie", "dataPoints": 4, "fileSize": "89.48 KB" } }, "latency_ms": 82 } ] }