Server · #77 trending MCP repo

Ztd Charts

Junhan2/ztd-charts

44 animated, interactive React charts in pure SVG with zero runtime dependencies, a JSON spec, and CLI and MCP tools for AI agents

Stars
312
This week
—
Forks
45
Open issues
0
Skills inside
1

Get started

Add it to your agent

claude mcp add ztd-charts -- npx -y ztd-charts-mcp

Run in your terminal. Add --scope project to share it with your team through .mcp.json.

Documentation

README

View on GitHub ↗

ztd charts

Animated, accessible React charts that read like a report.
44 charts in pure SVG with no runtime dependencies, and a JSON spec your AI agent can write.

npm version MIT license No runtime dependencies

Docs · Gallery · Example dashboards · Playground · 한국어

A dashboard built with ztd charts in the light theme: active users, visit to purchase, conversions, quarterly revenue, viewing hours and share price

Why ztd charts

  • Each card says one thing. One item takes the accent color and the rest stay neutral, with a bold takeaway under the chart, so a reader sees the point before reading the axes.
  • Motion that explains. Charts draw in as they scroll into view, move on from where they are when the data changes, and let you drag over a range to read its change, high and low.
  • Accessible by default. Keyboard navigation, a screen reader description and data table for every chart, reduced motion, and every label at WCAG AA contrast.
  • Small, with nothing else to install. React is the only peer dependency. A chart with the shared core is about 12 to 26 kB Brotli, and very large data switches to canvas on its own.
  • Ready for AI. Every chart is also a JSON spec with a public JSON Schema, and a CLI, an MCP server and an agent skill validate it and render it to PNG, SVG or HTML.
  • English and Korean. en-US by default. locale="ko-KR" switches number formats (1.2만, 3.4억) and chart text to Korean.

Two cards drawing in, the bar chart moving to new data from where it is, and a drag over the candlestick chart showing the change, high and low for that range

Quick start

npm i ztd-charts
import { ChartCard, PieChart } from "ztd-charts";

const sales = [
  { device: "Mobile", share: 72 },
  { device: "Desktop", share: 23 },
  { device: "Tablet", share: 5 },
];

export function SalesByDevice() {
  return (
    <ChartCard
      title="Sales by device"
      subtitle="Share of revenue (%)"
      legend={[{ label: "Mobile", color: "accent" }, { label: "Desktop", color: "ink" }, { label: "Tablet", color: "neutral" }]}
      takeaway="Mobile brings in most sales"
    >
      <PieChart data={sales} label="device" value="share" highlight="Mobile" />
    </ChartCard>
  );
}

The same chart as a JSON spec, which is what the CLI, the MCP server and an AI agent work with:

import { Chart } from "ztd-charts";

<Chart
  spec={{
    type: "pie",
    data: sales,
    encoding: { label: "device", value: "share" },
    options: { highlight: "Mobile" },
  }}
/>;

44 charts

All 44 charts in the light theme, from pie and donut to symbol map and flow map

Group Charts
Proportion Pie · Donut · Waffle · Marimekko · Segmented bar
Hierarchy Treemap · Sunburst · Tree
Flow Funnel · Sankey · Chord
Comparison Bar · Waterfall · Pareto · Radar · Slope · Dumbbell · Lollipop · Bar race
Trend Line (range band too) · Area · Streamgraph · Sparkline · Calendar heatmap · Bump · Candlestick · Skyline · Timeline
Distribution Box plot (violin too) · Beeswarm · Ridgeline · Histogram
Relationship Heatmap · Bubble · Scatter · Parallel coordinates · Network
Map Tile grid map, choropleth map, symbol map, flow map
KPI Gauge · Bullet · Radial bar

Each chart has a page with a live demo, its props and copyable code in the gallery. Why each one made the cut, and what was left out, is in the chart catalog.

Use it with AI

# Add the MCP server to Claude Code (Cursor and Claude Desktop are in the guide)
claude mcp add ztd-charts -- npx -y ztd-charts-mcp

# Chart ideas and ready specs from your data, then a PNG
npx ztd-charts-cli suggest sales.csv --out-dir charts
npx ztd-charts-cli render donut.json --out donut.png --theme light --scale 2

The MCP server lists charts, returns a chart's schema and example, validates a spec with suggestions for wrong fields, renders it to PNG, SVG and React code, and suggests charts from CSV, rows or a URL. The agent skill walks an agent from picking a chart to a checked preview, and llms.txt gives a model the whole library in one file.

Packages

Package What it is
ztd-charts The React charts, cards, grid, themes and data hooks, plus spec tools (ztd-charts/spec) and server rendering (ztd-charts/server)
ztd-charts-cli List, validate, render, start a project and suggest charts from the terminal
ztd-charts-mcp An MCP server with five chart tools for AI agents

Learn more

  • Guide: common props, cards and grid, theme tokens, animation and interaction, accessibility, connecting data (REST, CSV, Supabase, Google Sheets, Postgres), the JSON spec, the CLI, the MCP server and development
  • Docs site: every chart with a live demo, five example dashboards, data connection and a playground
  • QA report: screenshots, contrast, frame rate, a 10,000-point stress test and bundle sizes
  • Coming from @junhanlee/chart-kit? See Migrating.

License

MIT. Every number in the examples is made up.

Releases

Recent versions

All releases ↗
  1. v0.11.30.11.3
  2. v0.11.20.11.2
  3. v0.11.10.11.1
  4. promo-mediaPromo mediapre-release