AI prompts transformed into crisp Highcharts
An open-source Model Context Protocol server that turns structured input or raw Highcharts options into validated chart configs and rendered SVG, PNG, or PDF — built for Claude Desktop, Cursor, and any MCP-capable client.
Works with any MCP client
STDIO for local desktop clients, Streamable HTTP with API-key/JWT or OAuth for remote connectors.
{
"mcpServers": {
"highchart-mcp-server": {
"command": "node",
"args": ["/absolute/path/to/highchart-mcp-server/dist/index.js"],
"env": { "TRANSPORT": "stdio" }
}
}
}Visual intelligence for LLM context windows
Structured intent in, a validated Highcharts specification out — with deterministic schema checks and headless Chromium rendering.
70 Highcharts 12.x Series
Full coverage of cartesian, financial stockChart, sankey, treemap, gantt, heatmap, and Highcharts Maps — out of the box.
Two-Tier Tools API
Guided generation via create_chart, plus raw passthrough with render_chart.
Headless Chromium Export
Rendering powered by highcharts-export-server. Emits SVG, PNG, or PDF with the correct constructor selected automatically.
Zod v4 Validation
Catches bad axes, missing series identifiers, and malformed input before anything renders — with clear, per-type error messages.
Production Hardened
Configurable worker pool and export timeouts, request body/session limits, and token-bucket rate limiting on HTTP.
Offline Docker Image
The container image bakes the Highcharts script cache at build time — no CDN dependency at runtime.
Four MCP tools at your agent's fingertips
Discover, synthesize, and export Highcharts configurations inside any Model Context Protocol loop.
Discovery catalog that returns every supported type grouped by family, with data-shape hints and examples.
Accepts structured input (series, axes, type) for any supported chart and composes a validated Highcharts config.
Raw passthrough for advanced use: takes a full Highcharts options object and renders it directly, for any type.
Like render_chart, plus format (svg/png/pdf), width/height/scale, and constr overrides for publishing.
Context building in action
How the same server looks from a config file, a tool call, the HTTP transport, and the SDK.
{
"mcpServers": {
"highchart-mcp-server": {
"command": "node",
"args": ["/absolute/path/to/highchart-mcp-server/dist/index.js"],
"env": { "TRANSPORT": "stdio" }
}
}
}Published packages across JavaScript & Python
Independently versioned, each in its own package.json / pyproject.toml.
The MCP server and CLI binary. STDIO and Streamable HTTP transports, with auth and rate limiting.
Typed JS/TS client with request factories for create_chart, render_chart, export_chart, and list_chart_types.
Async Python client with stdio subprocess and HTTP connectors, for any Python-based agent framework.
Bundled in the repo — builds an image with the Highcharts script cache baked in for air-gapped deployments.
highchart-mcp list-typeshighchart-mcp create --type linehighchart-mcp serve --port 3000Why use highchart-mcp
Free, open source, and built so an agent never has to guess at a chart's structure.
- All 70 Highcharts 12.x series types — cartesian to maps to gantt
- Real headless Chromium export — vector SVG, PNG, PDF
- Zod v4 validation catches bad input before it ever renders
- STDIO or Streamable HTTP, with auth and rate limiting
- Offline render cache — no CDN dependency at runtime
- No real Highcharts engine — output is a guess, not a validated config
- No export pipeline — nothing to drop into a report or a page
- No schema, so malformed axes or series fail silently
- Every call re-explains chart structure from scratch
- You write the validation layer
- You write the export server integration
- You write the MCP tool contracts and auth yourself
- No offline cache or tested chart-type coverage out of the box
Chart anything, from any MCP client
Free and open source. The only cost is tokens.