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 an interactive temporary preview in compatible clients, or save permanent image and embed links.

Connect from ChatGPT Desktop

  1. Open ChatGPT Settings, then Plugins.
  2. Select MCP and choose Add server.
  3. Set the server name and change its type to Streamable HTTP.
  4. Paste https://szum.io/mcp and click Save.
  5. 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 Charts by Szum in Claude's Connectors Directory and choose Connect.

Claude may ask you to authorize Szum when you use tools that access your saved charts. Anonymous previews work without a Szum account.

Connect from Claude Code

  1. Choose a server name, replace SERVER_NAME in the command below, and run it in your terminal.
  2. Open Claude Code and enter /mcp.
  3. 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

  1. Open your global ~/.cursor/mcp.json, or a project's .cursor/mcp.json.
  2. Replace SERVER_NAME with your chosen server name, add the configuration below, and save the file.
  3. 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

  1. Open the Command Palette and run MCP: Add Server.
  2. Choose HTTP, paste the endpoint, and set the server name.
  3. Choose whether to install it globally or in the current workspace.
  4. 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

NeedToolResult
Preview a chartrender_chartInteractive in compatible clients, with 1 hour image URLs
Keep and share a chartsave_chartPermanent image, embed, editor, and Studio URLs
Find saved chartslist_chartsPaginated chart metadata and URLs from your library
Open a saved chartget_chartMetadata, URLs, and inline display when published
Read its definitionget_chart_configComplete published chart config for inspection or reuse
Replace a saved chartupdate_chartPublished replacement with the same id and URLs
Rename a saved chartrename_chartUpdated library title without changing the config or public URLs
Delete a saved chartdelete_chartPermanent, retry-safe deletion
Check a definition onlyvalidate_chartValidation 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 does not expose the config in its model-visible result. For published charts, the server may load that config privately so clients with MCP Apps can display the chart inline. 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. For an agent-initiated save, send one stable idempotencyKey for the intended chart and reuse it on retries; the same key and config return the same chart, while the same key with a different config returns a conflict. 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.

In clients that support MCP Apps, a transient preview includes PNG, SVG, and Save permanently actions. The format actions use /r/{id}.png and /r/{id}.svg URLs that remain available for 1 hour; each produced image may be cached for 1 hour. Saving reuses the exact previewed config and may ask you to connect your Szum account. In other clients, ask the agent to save the chart once you are happy with it.

Validate each generated or changed config once before its next render, save, or update. Validation applies to that exact config, so it should not be repeated while the config remains unchanged. render_chart, save_chart, and update_chart also return the complete validation result alongside success. If one returns status: "review_required", show the warnings to the user and continue with acknowledgeWarnings: true only after they approve that exact config; no render is charged and no chart is written before approval. A successful render preflights that exact config for a later save or update.

validate_chart returns each issue separately with a path array and message so clients can identify the exact field without parsing the text fallback. Fixability is independent from severity: a blocking error or non-blocking suggestion may include suggestedConfig. That field is the complete verified next definition, not an internal patch. Replace the current config with it and call validate_chart again before rendering, saving, or updating. The replacement may retain unrelated errors, and nothing is applied automatically.

Tool failures use a stable JSON text envelope with status and an error containing code, message, and retryable. Error results omit structuredContent so they cannot violate each tool's advertised success schema; validation failures and warning review responses include the full validation object in that JSON.

See Validation and Review for error, warning, and suggestion semantics across every Szum workflow.

Tools and resources

ToolDescription
render_chartValidate and render a transient chart preview
save_chartSave a permanent, editable chart and return all output URLs
list_chartsFind saved charts by source, title, or recency
get_chartRetrieve and display one saved chart by id
get_chart_configRetrieve one saved chart's complete published config
update_chartReplace and publish a saved config while keeping its URLs
rename_chartChange a saved chart's library title
delete_chartPermanently delete one saved chart
validate_chartCheck structural and semantic chart validity
list_themesList themes and their intended uses
list_marksList mark types, properties, and defaults
get_examplesReturn ready-to-use chart definitions
ResourceDescription
szum://schemaFull JSON Schema for chart definitions
szum://llms-txtAPI and chart-authoring reference

Authentication

No credentials are needed to connect, inspect the design system, validate definitions, or render interactive previews in compatible clients. OAuth-capable clients can authorize access through your Szum account when saving, listing, opening, reading, updating, renaming, or deleting charts from your library.

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

An OAuth or API-key render_chart preview counts against the signed-in user’s plan limit. Each image subsequently produced from its temporary URL is another render against that account. Anonymous interactive previews are complimentary; their temporary image URLs use a separate IP-based allowance of 250 images per month, only when the URL is fetched and the image is produced.

On this page