szum
Render chart images from JSON configs with six themes, ten marks, PNG/SVG output.
Documentation
MCP server
Connect ChatGPT, Claude, Cursor, VS Code, and other AI agents to the szum chart design system.
The szum MCP server gives AI agents the shared chart grammar, curated themes, current examples, validation, and rendering tools they need to produce considered charts reliably.
Quick start
Connect your MCP client to:
https://szum.io/mcp
After connecting, ask for a chart in ordinary language:
Show quarterly revenue by region as an editorial bar chart. Cite the source and save the finished chart.
The agent can discover the available marks and themes, build and validate the definition, render a temporary preview, or save permanent image and embed links.
Connect from ChatGPT Desktop
- Open ChatGPT Settings, then Plugins.
- Select MCP and choose Add server.
- Set the server name and change its type to Streamable HTTP.
- Paste
https://szum.io/mcpand click Save. - Click Authorize and sign in to szum.
These steps use the ChatGPT Desktop plugin flow. Plugin availability can depend on your ChatGPT plan, workspace permissions, and rollout.
Connect from Claude
- Open Customize → Connectors in Claude, or Settings → Connectors in Claude Desktop.
- Choose Add custom connector.
- Set the connector name if requested, then use
https://szum.io/mcpas the connector URL. - Add the connector, then click Connect to authorize it.
On Team and Enterprise plans, an Owner must add the custom connector in Organization settings → Connectors before members can connect it.
Connect from Claude Code
- Choose a server name, replace
SERVER_NAMEin the command below, and run it in your terminal. - Open Claude Code and enter
/mcp. - Select the server you added and complete the browser authentication flow.
claude mcp add --transport http SERVER_NAME https://szum.io/mcp
Connect from Cursor
- Open your global
~/.cursor/mcp.json, or a project's.cursor/mcp.json. - Replace
SERVER_NAMEwith your chosen server name, add the configuration below, and save the file. - Reload Cursor if needed, then complete authentication when Cursor requests it.
{
"mcpServers": {
"SERVER_NAME": {
"type": "http",
"url": "https://szum.io/mcp"
}
}
}
Connect from VS Code
- Open the Command Palette and run MCP: Add Server.
- Choose HTTP, paste the endpoint, and set the server name.
- Choose whether to install it globally or in the current workspace.
- Start the server, confirm that you trust it, and complete authorization when prompted.
{
"servers": {
"SERVER_NAME": {
"type": "http",
"url": "https://szum.io/mcp"
}
}
}
Work with charts
| Need | Tool | Result |
|---|---|---|
| Preview a chart | render_chart | Open within 10 minutes; a fetched image may remain cached for 1 hour |
| Keep and share a chart | save_chart | Permanent image, embed, editor, and Studio URLs |
| Find saved charts | list_charts | Paginated chart metadata and URLs from your library |
| Open a saved chart | get_chart | Metadata, URLs, and inline display when published |
| Read its definition | get_chart_config | Complete published chart config for inspection or reuse |
| Replace a saved chart | update_chart | Published replacement with the same id and URLs |
| Rename a saved chart | rename_chart | Updated library title without changing the config or public URLs |
| Delete a saved chart | delete_chart | Permanent, retry-safe deletion |
| Check a definition only | validate_chart | Validation result without creating an image |
save_chart, list_charts, get_chart, get_chart_config, update_chart, rename_chart, and delete_chart require OAuth or an API key. get_chart accepts an id returned by list_charts; it returns the chart object without loading its config and displays the published chart in clients that support MCP Apps. get_chart_config returns the same complete published config as the SDK's charts.getConfig(id). It does not substitute a newer editor draft, and a draft-only chart has no published config. update_chart validates and republishes a replacement config while keeping the chart id and public URLs stable. It refuses the update when unpublished editor changes exist, so it cannot silently discard a newer draft. rename_chart changes only the library title; it does not alter the rendered title inside the config. delete_chart permanently removes one chart and is retry-safe when that chart is already gone. Draft-only and unpublished charts remain available through get_chart as metadata but have no public chart to display.
save_chart returns the saved chart id. Saved MCP charts appear in Studio, where you can preview, edit, rename, share, or delete them. Their image and embed URLs follow the same behavior as other saved charts.
When validation fails, validate_chart returns each issue separately with a path array and message so clients can identify the exact field without parsing the text fallback.
Tools and resources
| Tool | Description |
|---|---|
| render_chart | Validate and render a transient chart preview |
| save_chart | Save a permanent, editable chart and return all output URLs |
| list_charts | Find saved charts by source, title, or recency |
| get_chart | Retrieve and display one saved chart by id |
| get_chart_config | Retrieve one saved chart's complete published config |
| update_chart | Replace and publish a saved config while keeping its URLs |
| rename_chart | Change a saved chart's library title |
| delete_chart | Permanently delete one saved chart |
| validate_chart | Check a config against the current schema |
| list_themes | List themes and their intended uses |
| list_marks | List mark types, properties, and defaults |
| get_examples | Return ready-to-use chart definitions |
| Resource | Description |
|---|---|
| szum://schema | Full JSON Schema for chart definitions |
| szum://llms-txt | API and chart-authoring reference |
Authentication
No credentials are needed to connect, inspect the design system, validate definitions, or render within the anonymous allowance. OAuth-capable clients can authorize access through your szum account when saving, listing, opening, reading, updating, renaming, or deleting charts from your library, or when anonymous rendering is exhausted.
If a client does not support OAuth, create an API key and send it as a Bearer token:
{
"mcpServers": {
"SERVER_NAME": {
"type": "http",
"url": "https://szum.io/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}
See Authentication for the complete model.
Usage and billing
OAuth and API-key renders count against the signed-in user's plan limit. Anonymous renders use the IP-based allowance of 250 images per month, shared with keyless GET /chart. Usage is recorded when the returned URL is fetched and the image is produced.
Interactive embeds
Same id as a saved chart, different URL. /e/{id} renders an interactive HTML page – tooltips, legend toggle, responsive.
Figma plugin
Create publication-ready charts from sample data or CSV and insert them as editable semantic layers in Figma.