Back to the catalog

io.github.liminalpepe/x402-dataviz-mcp

Free MCP server: render bar/line/area charts to SVG from structured data.

Open source Open in the app JSON README (API)

About

Free MCP server: render bar/line/area charts to SVG from structured data.

Details

Kind
MCP servers
Topic
Media, design & games
Publisher
liminalpepe
Origin
official
Category
ferramentas
Transport
local
Version
0.1.0
Last push
2026-08-02T10:19:40Z
Repository state
ativo
Language
TypeScript
License
MIT
Added
2026-08-29 04:00:24
Updated
2026-08-29 04:00:24
Origin id
io.github.liminalpepe/x402-dataviz-mcp

README

# x402-dataviz-mcp

A free MCP (Model Context Protocol) server that renders bar, line, and area
charts from structured data and returns clean, hand-designed SVG. No API
key, no payment, no rate limit games — just an MCP tool any MCP client can
call.

This is the **open funnel twin** of a paid, x402-gated HTTP API:

**[x402-dataviz-poc.theliminalguy.workers.dev](https://x402-dataviz-poc.theliminalguy.workers.dev)**
— `POST /chart`, $0.01 USDC on Base per call via the
[x402 payment protocol](https://x402.org), for production/high-volume or
non-MCP (plain HTTP) use. Same renderer, same output, just billed per call
instead of free-via-MCP.

## Why this exists

The [x402 Bazaar](https://x402.org) (~14,800 agent-payable APIs at time of
writing) has zero coverage in "structured data → clean chart image." This
MCP server is the free/local half of filling that gap — try it for nothing
via MCP; reach for the paid HTTP endpoint when you need it at volume or
outside an MCP client.

## What it does

One tool, `render_chart`, takes a chart type + structured data points and
returns a rendered SVG string. Rendering is hand-rolled (no headless
browser, no native binaries, no heavy charting framework) — just
string-built SVG, so it's fast with zero runtime dependency risk.

The design bar is the actual differentiator: a real categorical color
palette (validated for colorblind-safety, not eyeballed), considered
spacing, thin marks with rounded bar ends, 2px surface gaps between bars,
ringed line markers, direct end-labels, and full light/dark theme support —
not the default-blue/red/green look of a generic charting library.

## Install & run

```bash
npx x402-dataviz-mcp
```

Or add it to an MCP client config (e.g. Claude Desktop's
`claude_desktop_config.json`):

```json
{
  "mcpServers": {
    "dataviz": {
      "command": "npx",
      "args": ["-y", "x402-dataviz-mcp"]
    }
  }
}
```

## Tool: `render_chart`

Input:

```jsonc
{
  "type": "bar" | "line" | "area",
  "title": "optional string",
  "theme": "light" | "dark",       // defaults to "light"
  "data": [
    { "x": "Q1", "values": { "Revenue": 128000, "Cost": 84000 } },
    { "x": "Q2", "values": { "Revenue": 146500, "Cost": 91200 } }
  ]
}
```

`values` can hold one or more named series; series colors are assigned from
a fixed, colorblind-validated order (never generated/cycled). A legend
renders automatically for 2+ series; a single series needs no legend (the
title already names it).

Output: an SVG string (as MCP tool text content) rendering the requested
chart.

## Local development

```bash
npm install
npm run dev      # runs src/index.ts directly on stdio via tsx
npm run build    # compiles to dist/ for the published npm package
```

## When to use the paid HTTP twin instead

Use [`POST /chart`](https://x402-dataviz-poc.theliminalguy.workers.dev/chart)
on the paid Worker instead of this MCP server when:

- You're calling from outside an MCP client (plain HTTP, any language).
- You need production/high-volume use and want to pay per call rather than
  rely on a free tool being available indefinitely.
- Your agent already speaks x402 (e.g. via `x402-fetch` / `x402-axios`) and
  can pay $0.01 USDC on Base per request.

Both routes call the exact same `renderChart()` function — output is
byte-for-byte identical.

## License

MIT

More