highchart-mcp-server
Provides dashboard templates and structured logging to visualize metrics and monitor server behavior.
Exposes server metrics for monitoring performance, usage, and health via Prometheus.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@highchart-mcp-serverGenerate a pie chart of market share by product."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Highcharts MCP Server
A Model Context Protocol (MCP) server that turns structured input or raw Highcharts options into validated chart configurations and rendered images (SVG / PNG / PDF). It works with any MCP-capable client (Claude Desktop, Cursor, VS Code, etc.) over STDIO or Streamable HTTP.
Status: actively developed. Chart generation, rendering/export, discovery, metrics, auth + rate limiting (HTTP), and Docker packaging are implemented and tested. CLI/SDKs are on the roadmap (not yet available).
Features
All 70 Highcharts 12.x series types — cartesian, pie/funnel, bubble, financial (candlestick/OHLC,
stockChart), heatmap/tilemap, treemap/sunburst, sankey/networkgraph/organization, gauges, boxplot/statistical, xrange/timeline, maps (mapChart), and gantt (ganttChart).Two-tier tools — a guided
create_chartplus raw passthroughrender_chart/export_chartfor full Highcharts control.Discovery —
list_chart_typesreturns every type grouped by family with data-shape hints and examples.Rendering to SVG / PNG / PDF via
highcharts-export-server(headless Chromium), with the correct constructor selected automatically.Zod v4 validation with clear, per-type error messages.
Production hardening — export timeouts, configurable worker pool, request body limits, and per-session HTTP transport management.
Security (HTTP) — API-key or HS256-JWT auth with scopes, and token-bucket rate limiting.
Observability —
GET /healthand PrometheusGET /metrics.Docker image that bakes the Highcharts script cache offline (no CDN needed at runtime).
Related MCP server: mcp-dashboards
Tools
Tool | Purpose |
| Build a Highcharts config from structured input for any supported type. Returns |
| Render a full Highcharts options object (any type). Returns config + rendered output. |
| Like |
| List every supported chart type grouped by family, with data shapes and examples. |
Install
Requires Node.js 20+.
npm ci
npm run build
npm startUsage
Local (STDIO) — desktop AI clients
mcp.json (or Claude Desktop / Cursor config):
{
"mcpServers": {
"highchart-mcp-server": {
"command": "node",
"args": ["/absolute/path/to/highchart-mcp-server/dist/index.js"],
"env": { "TRANSPORT": "stdio", "LOG_LEVEL": "info" }
}
}
}Networked (Streamable HTTP)
TRANSPORT=http PORT=3000 node dist/index.js
# MCP endpoint: POST http://localhost:3000/mcp
# Health: GET http://localhost:3000/health
# Metrics: GET http://localhost:3000/metricsEnable auth + rate limiting for any network exposure (see below).
Example: create_chart
{
"type": "line",
"title": "Monthly Sales",
"xAxisCategories": ["Jan", "Feb", "Mar"],
"series": [{ "name": "Revenue", "data": [10, 20, 15] }]
}Call list_chart_types to discover the expected data shape for any type
(e.g. financial [x, open, high, low, close], heatmap [x, y, value],
sankey { from, to, weight }, gantt tasks[], maps topology + data).
Rendering (offline)
Rendering uses highcharts-export-server (headless Chromium), which fetches
Highcharts scripts from a CDN on first run and caches them. To work offline, the
scripts are sourced from the installed highcharts package:
npm run seed:cache # populate the cache from the local package (no network)
npm run render:samples # render one SVG per constructor to .render-samples/The Docker image bakes this cache at build time. See DEPLOYMENT.md.
Configuration
All configuration is via environment variables — see .env.example.
Highlights:
Area | Variables |
Transport |
|
Rendering |
|
HTTP limits |
|
Auth |
|
Rate limit |
|
Metrics |
|
Licensing |
|
Deployment
Docker:
docker build -f docker/Dockerfile -t highchart-mcp-server .
docker run -p 3000:3000 -e AUTH_STRATEGY=apikey -e API_KEYS=client1:changeme \
--shm-size=512m highchart-mcp-server
# or: docker compose -f docker/docker-compose.yml up --buildHosting options, resource guidance, and reverse-proxy/TLS notes are in DEPLOYMENT.md.
CLI
The build installs a highchart-mcp CLI (bin → dist/cli/index.js):
highchart-mcp list-types # list all types grouped by family
highchart-mcp list-types --family maps --json
echo '{"series":[{"data":[1,2,3]}]}' | highchart-mcp create --type line --input -
highchart-mcp create --type line --input chart.json --format svg --out chart.svg
highchart-mcp render --input options.json --format png --out chart.png
highchart-mcp export --input options.json --format pdf --width 1000 --out chart.pdf
highchart-mcp serve --transport http --port 3000render/export require a seeded render cache (npm run seed:cache) or network.
SDKs
In-repo client libraries (npm workspaces under packages/):
JS/TS:
@highchart-mcp/sdkimport { HighchartClient } from '@highchart-mcp/sdk'; const client = await HighchartClient.connectHttp('http://localhost:3000/mcp', { apiKey }); const { options } = await client.createChart({ type: 'line', series: [{ data: [1, 2, 3] }] });Python:
highchart-mcp-sdkasync with HighchartClient.connect_stdio(command="node", args=["dist/index.js"]) as client: cfg = await client.create_chart(type="line", series=[{"data": [1, 2, 3]}])
Development
npm run dev # tsx --watch src/index.ts
npm run build # tsc (server + CLI)
npm test # vitest run (server + CLI)
npm run build --workspace @highchart-mcp/sdk # build the JS/TS SDK
npm test --workspace @highchart-mcp/sdk # test the JS/TS SDKLicensing
This wrapper is under the license in package.json. Highcharts itself is
proprietary: free for non-commercial use with the credit attribution kept on
(the default here), and requires a paid license for commercial/production use.
See LICENSING.md.
Roadmap
Done: full chart-type coverage, rendering/export, discovery, offline cache, metrics/health, HTTP auth + rate limiting, per-session transport, robustness limits, Docker + CI, CLI + JS/TS & Python SDKs.
Next (Phase 3): optional AI / natural-language features.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Tools
Related MCP Servers
- AlicenseAqualityDmaintenanceGenerates Apache ECharts diagrams and charts with AI dynamically, supporting all ECharts features and exporting to png, svg, and option formats.18119260MIT
- AlicenseAqualityAmaintenanceRenders 45+ interactive chart types, dashboards, and KPI widgets directly inside AI conversations. Supports drill-down, live API polling, 20 themes, and one-click export to PNG, PowerPoint, and A4 documents.4020443Functional Source , Version 1.1, MIT Future
- AlicenseAqualityCmaintenanceEnables AI agents to render interactive Highcharts visualizations directly within VS Code chat conversations. It supports over 17 chart types with GitHub Primer styling and advanced features like drilldown and WebGL rendering.6126MIT
- AlicenseAqualityDmaintenanceEnables AI agents to generate and render charts as PNG, SVG, or WebP images directly in chat interfaces. Supports Chart.js specifications and natural language descriptions for creating visualizations from data.381MIT
Related MCP Connectors
Renders interactive Chart.js charts and dashboards inline in AI conversations.
Give your AI assistant access to real Helm chart data. No more hallucinated values.yaml files.
Ask your app anything — revenue, errors, read-cost, growth — and get rendered charts back.
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/hasnaintypes/highchart-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server