Generates presentation-ready charts in SVG and PNG formats through five MCP tools. You get 14+ chart types including bar, waterfall, Gantt, mekko, and heatmap. The generate_chart tool takes your data array, chart type, and optional styling (theme, accent color, dimensions), returns an SVG string, then save_chart writes it to disk as PNG if needed. The describe_chart tool recommends chart types based on your data shape and intent. Works with zero setup via npx, supports dark/light themes out of the box, and includes a Python SDK for notebook workflows. Useful when you need charts inline during a Claude conversation or want to automate report generation without reaching for matplotlib or a JavaScript charting library.
Charta MCP is a Model Context Protocol server that lets AI coding agents generate beautiful, presentation-ready charts (SVG + PNG) with zero setup.
npx @charta/mcp
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"charta": {
"command": "npx",
"args": ["@charta/mcp"]
}
}
}
Add to .cursor/mcp.json (project) or ~/.cursor/mcp.json (global):
{
"mcpServers": {
"charta": {
"command": "npx",
"args": ["@charta/mcp"]
}
}
}
Add to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"charta": {
"command": "npx",
"args": ["@charta/mcp"]
}
}
}
generate_chartGenerate a chart and return an SVG string.
Input:
{
"type": "waterfall",
"title": "Revenue Bridge Q1→Q2",
"data": [
{"label": "Q1 Revenue", "value": 500, "isTotal": true},
{"label": "+ New Deals", "value": 120},
{"label": "- Churn", "value": -45},
{"label": "- Discounts", "value": -30},
{"label": "Q2 Revenue", "value": 545, "isTotal": true}
],
"style": {"theme": "dark", "accentColor": "#7C5CFC"}
}
Output:
{
"chartId": "chart_1234567890_abc123",
"type": "waterfall",
"svg": "<svg ...>...</svg>"
}
list_chart_typesList all supported chart types with descriptions and data shapes.
No input required.
Output: Array of { type, description, dataShape, example }
get_chart_schemaGet the full JSON schema for a specific chart type.
Input: { "type": "waterfall" }
Output: JSON Schema object
save_chartSave a chart to disk as SVG or PNG.
Input:
{
"chartId": "chart_1234567890_abc123",
"outputPath": "/tmp/revenue-bridge.png",
"format": "png"
}
Output: { "path": "/tmp/revenue-bridge.png", "bytes": 48291 }
describe_chartGiven your data and intent, get a chart type recommendation.
Input:
{
"data": [{"label": "Q1", "value": 100}, {"label": "Q2", "value": 120}],
"context": "Show revenue growth over quarters"
}
Output:
{
"recommended": "line",
"reason": "Time series context — line chart is the clearest for continuous data.",
"alternatives": ["area", "bar"]
}
| Type | Description | Best For |
|---|---|---|
bar | Vertical bars | Comparing values across categories |
grouped-bar | Side-by-side bars | Comparing multiple series per category |
stacked-bar | Stacked bars | Composition + total across categories |
waterfall | Floating bars with connectors | Financial bridges, P&L, variance analysis |
line | Connected line | Trends, time series |
area | Filled area under line | Volume/magnitude of trends |
pie | Circular proportions | Part-to-whole (≤6 categories) |
donut | Pie with center metric | Part-to-whole + total callout |
scatter | X-Y points | Correlation between two variables |
bubble | X-Y points + size | Three-variable relationships |
gantt | Horizontal timeline bars | Project schedules, task durations |
mekko | Variable-width stacked bars | Market share, segment analysis |
radar | Spider/web chart | Multi-dimensional profiles |
heatmap | Color-coded grid | Patterns across two categorical dimensions |
Note: These show the MCP JSON-RPC protocol. In practice your agent calls the tools directly.
echo '{"jsonrpc":"2.0","method":"tools/list","params":{},"id":1}' | npx @charta/mcp
echo '{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "generate_chart",
"arguments": {
"type": "bar",
"title": "Monthly Sales",
"data": [
{"label": "Jan", "value": 120},
{"label": "Feb", "value": 180},
{"label": "Mar", "value": 150},
{"label": "Apr", "value": 210}
]
}
},
"id": 2
}' | npx @charta/mcp
echo '{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "save_chart",
"arguments": {
"chartId": "chart_1234567890_abc123",
"outputPath": "/tmp/sales.png",
"format": "png"
}
},
"id": 3
}' | npx @charta/mcp
echo '{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "describe_chart",
"arguments": {
"data": [{"label": "A", "value": 30}, {"label": "B", "value": 45}],
"context": "market share breakdown"
}
},
"id": 4
}' | npx @charta/mcp
All charts support a style object:
{
"style": {
"theme": "dark",
"accentColor": "#7C5CFC",
"fontFamily": "Inter, sans-serif",
"width": 800,
"height": 500,
"showGrid": true,
"showLegend": true,
"showValues": true
}
}
Default theme is dark (#0a0a0a background, #7C5CFC accent, white text).
Install the typed Python client for use in notebooks, scripts, and AI agent pipelines:
pip install charta
from charta import ChartaClient, BarChart, BarData, ChartStyle
chart = BarChart(
title="Quarterly Revenue",
data=[BarData(label="Q1", value=120), BarData(label="Q2", value=180)],
style=ChartStyle(theme="dark"),
)
with ChartaClient("https://api.getcharta.ai", api_key="sk-...") as client:
svg = client.generate_svg(chart)
Full docs: python/README.md
miapre/html-to-figma-design-system
ie3jp/illustrator-mcp-server
coding-solo/godot-mcp
ivanmurzak/unity-mcp
yctimlin/mcp_excalidraw
figma/mcp-server-guide