Skip to main content
Glama

mcp-highcharts

Render interactive Highcharts charts inline in AI chat — VS Code, GitHub Copilot, Claude Desktop, or any MCP client with MCP Apps support.

Install in VS Code Install in VS Code Insiders npm

Code_-_Insiders_15uBYM8FHt

Setup

Click a badge above, or add to your MCP config:

{
  "mcp": {
    "servers": {
      "highcharts": {
        "command": "npx",
        "args": ["-y", "mcp-highcharts@latest"]
      }
    }
  }
}

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "highcharts": {
      "command": "npx",
      "args": ["-y", "mcp-highcharts@latest"]
    }
  }
}
npx mcp-highcharts@latest --http          # http://localhost:3001/mcp
PORT=8080 npx mcp-highcharts@latest --http  # custom port

Related MCP server: Chart-Output MCP Server

Tools

Tool

Description

render_chart

Any chart type — line, bar, pie, scatter, heatmap, sankey, gauge, treemap, wordcloud, and 60+ more

render_stock_chart

Financial charts with navigator, range selector, and 40+ technical indicators

render_dashboard

Multi-component layouts with charts, KPIs, and data grids

render_map

Choropleth maps, map bubbles, map points (auto-fetches map data from CDN)

render_gantt

Project timelines with tasks, dependencies, and milestones

render_grid

Standalone data tables with sorting, pagination, and formatting

All tools accept the full Highcharts Options API.

Prompts

Prompt

What it does

chart_from_data

Paste data → get the best chart

dashboard_layout

Scaffold a dashboard

stock_analysis

Candlestick + volume + indicators

comparison_chart

Side-by-side comparison patterns

project_timeline

Gantt with dependencies

live_chart

Live-updating chart from a data URL

Configuration

Theming

Charts auto-adapt to host light/dark mode. Override with environment variables:

{
  "env": {
    "HIGHCHARTS_THEME": "dark-unica",
    "HIGHCHARTS_OPTIONS": "./my-theme.json"
  }
}

HIGHCHARTS_OPTIONS accepts .json, .js, .mjs, .ts, or inline JSON.

Built-in themes: adaptive (default), avocado, brand-dark, brand-light, dark-blue, dark-green, dark-unica, gray, grid, grid-light, high-contrast-dark, high-contrast-light, sand-signika, skies, sunset

Schema depth

Controls how much type information is sent to the LLM:

{ "env": { "SCHEMA_DEPTH": "1" } }

Depth

Description

0

Property names only — zero context overhead

1 (default)

Top-level types + descriptions + examples

2

One level of typed children

3

Two levels deep — complete recursive Highcharts type tree

Data sources

For live-updating charts, use the Highcharts data module with data.csvURL and data.enablePolling: true.

Image export (non-app fallback)

For MCP clients that don't support MCP Apps, enable server-side image export to include a PNG screenshot of each chart in the tool response:

{
  "env": {
    "IMAGE_EXPORT": "true"
  }
}

Charts are rendered as PNG and returned as base64 image content blocks. The interactive MCP app is still included for capable clients.

Rendering strategy (automatic):

  1. Local (Puppeteer) — if highcharts-export-server is installed, charts render locally via a headless browser. No network calls, fastest option.

  2. Remote fallback — if local isn't available, chart config is POSTed to the Highcharts Export Server.

To enable local rendering, install the optional peer dependency:

npm install highcharts-export-server

To use a custom remote export server:

{
  "env": {
    "IMAGE_EXPORT": "true",
    "EXPORT_SERVER_URL": "https://your-export-server.example.com/"
  }
}

You can also enable it programmatically: createServer({ imageExport: true }).

Note: Image export works for standard charts, stock charts, and Gantt charts. Dashboards, data grids, and maps with string-based map keys (e.g. "custom/world") are not exportable and will return text-only results.

Development

npm install
node scripts/generate-from-tree.mjs --multi   # generate Zod schemas at depths 0, 1, 2
npm run build
npm test

Project structure

main.ts                  Entry point (stdio + HTTP transports)
server.ts                MCP server — tool registrations and handlers
src/
  export-image.ts        Server-side PNG export (local Puppeteer + remote fallback)
  input-schema.ts        Depth-based schema selection + LLM-friendly overrides
  mcp-app.ts             Client-side Highcharts rendering
  module-loader.ts       Dynamic Highcharts module loading
  generated/             Auto-generated from Highcharts API (do not edit)
    highcharts-depth-{0,1,2}.gen.ts   Zod schemas at each depth
    module-map.json                   Chart type → Highcharts module mapping
scripts/
  generate-from-tree.mjs   Generate Zod schemas from Highcharts tree.json
  generate-module-map.mjs  Generate module-map.json from Highcharts
  example-providers.mjs    Example extraction for schema generation
  measure-schema.ts        Measure tool context size at each depth

Chart types, module mappings, and schemas are auto-generated from the installed Highcharts version — just npm update highcharts and regenerate.

License

MIT

Available Tools

6 tools
render_chartRender ChartB
Read-only

Render an interactive Highcharts chart inline. Input is a Highcharts Options object (https://api.highcharts.com/highcharts/).

Inputs: accessibility, annotations, boost, caption, +26 more.

render_dashboardRender DashboardB
Read-only

Render a Highcharts Dashboard with multiple components (charts, KPIs, data grids) in a synced layout. Uses @highcharts/dashboards.

Inputs: components (required), gui, dataPool, editMode.

render_ganttRender Gantt ChartB
Read-only

Render a Highcharts Gantt chart for project timelines and task scheduling. Uses Highcharts.ganttChart() (https://api.highcharts.com/gantt/).

Inputs: series (required), accessibility, annotations, boost, +27 more.

render_gridRender Data GridA
Read-only

Render a Highcharts Grid Lite data table for tabular data display. Standalone component — no chart required.

Inputs: columns, data, dataTable, header, +7 more.

render_mapRender MapB
Read-only

Render an interactive Highcharts Map for geographic data visualization. Uses Highcharts.mapChart(). Input is a Highcharts Maps Options object (https://api.highcharts.com/highmaps/).

Inputs: series (required), accessibility, annotations, boost, +28 more.

render_stock_chartRender Stock ChartB
Read-only

Render a Highcharts Stock chart for financial/time-series data. Input is a Highcharts Stock Options object (https://api.highcharts.com/highstock/).

Inputs: accessibility, annotations, boost, caption, +30 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.8/5.0

    Scored across 6 tools

    Disambiguation5/5

    Each tool has a clearly distinct purpose targeting specific Highcharts chart types or components (e.g., standard chart, dashboard, Gantt, grid, map, stock chart). There is no overlap in functionality, and the descriptions clearly differentiate each tool's use case, preventing misselection.

    Naming Consistency5/5

    All tool names follow a consistent verb_noun pattern with 'render_' as the prefix, followed by the specific chart or component type (e.g., render_chart, render_dashboard). This predictable naming scheme enhances readability and usability across the tool set.

    Tool Count5/5

    With 6 tools, the server is well-scoped for rendering various Highcharts visualizations, covering key chart types and components. Each tool earns its place by addressing distinct visualization needs, making the count appropriate for the domain without being overwhelming or insufficient.

    Completeness5/5

    The tool set provides complete coverage for rendering Highcharts visualizations, including standard charts, dashboards, Gantt charts, data grids, maps, and stock charts. This covers the core Highcharts library and major extensions, leaving no obvious gaps for the server's purpose of chart rendering.

    Maintenance

    ActivityInactive
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers