Skip to main content

Chuk MCP Chart

Interactive data visualisation via MCP — paste a CSV, describe your data, ask for a chart. Bar, pie, line, doughnut, radar, polar, and area charts rendered instantly.

This is a demonstration project provided as-is for learning and testing purposes.

Python 3.11+

Features

Three tools that turn raw data into beautiful charts:

1. Show Chart (show_chart)

Create a chart from explicit data. Provide labels, one or more datasets, and optional configuration:

  • Chart types: bar, line, pie, doughnut, radar, polar, area
  • Axis labels, legend position, stacked mode
  • Custom colours per dataset
  • Auto-assigned colour-blind-friendly palette

2. Chart from CSV (chart_from_csv)

Paste raw CSV text and get a chart — zero configuration required:

  • First non-numeric column becomes category labels
  • Every numeric column becomes a dataset (series)
  • If all columns are numeric, row numbers are used as labels
  • Perfect for spreadsheet data

3. Chart from JSON (chart_from_json)

Pass a JSON array of objects and get a chart automatically:

  • First string field becomes category labels
  • Every numeric field becomes a dataset
  • Great for API responses or structured data

Installation

uvx chuk-mcp-chart

This automatically downloads and runs the latest version. Perfect for Claude Desktop!

# Install from PyPI
uv pip install chuk-mcp-chart

# Or clone and install from source
git clone https://github.com/IBM/chuk-mcp-chart.git
cd chuk-mcp-chart
uv sync --dev

Using pip (Traditional)

pip install chuk-mcp-chart

Usage

With Claude Desktop

Option 1: Run Locally with uvx

{
  "mcpServers": {
    "chart": {
      "command": "uvx",
      "args": ["chuk-mcp-chart"]
    }
  }
}

Option 2: Run Locally with pip

{
  "mcpServers": {
    "chart": {
      "command": "chuk-mcp-chart"
    }
  }
}

Standalone

# With uvx (recommended - always latest version)
uvx chuk-mcp-chart

# With uvx in HTTP mode
uvx chuk-mcp-chart http

# Or if installed locally
chuk-mcp-chart
chuk-mcp-chart http

Or with uv/Python:

# STDIO mode (default, for MCP clients)
uv run chuk-mcp-chart
# or: python -m chuk_mcp_chart.server

# HTTP mode (for web access)
uv run chuk-mcp-chart http
# or: python -m chuk_mcp_chart.server http

STDIO mode is for MCP clients like Claude Desktop and mcp-cli. HTTP mode runs a web server on http://localhost:8000 for HTTP-based MCP clients.

Example Prompts

Once configured, try asking:

  • "Chart my monthly expenses" (then paste your data)
  • "Show Python vs JavaScript popularity as a pie chart"
  • "Turn this CSV into a line chart showing trends over time"
  • "Create a bar chart of Q1-Q4 revenue: 42000, 51000, 48000, 55000"
  • "Show a radar chart comparing three products across speed, quality, and price"
  • "Make a doughnut chart of browser market share"

Tool Reference

show_chart

Create a chart from explicit labels and datasets.

Parameters:

Parameter Type Default Description
chart_type string "bar" One of: bar, line, pie, doughnut, radar, polar, area
title string "Chart" Chart title
labels string — Comma-separated category labels (e.g. "Jan,Feb,Mar")
datasets string — JSON array of dataset objects (see below)
x_axis_label string — X axis label
y_axis_label string — Y axis label
legend_position string — Legend position: top, bottom, left, right, none
stacked bool false Stack bar/area datasets

Dataset format (JSON string):

[
  {"label": "Revenue", "values": [12, 19, 3, 5, 2, 3]},
  {"label": "Expenses", "values": [8, 14, 2, 4, 1, 2], "color": "#ef4444"}
]

chart_from_csv

Parse CSV text into a chart automatically.

Parameters:

Parameter Type Default Description
csv_data string — Raw CSV text with header row
chart_type string "bar" Chart type
title string "Chart" Chart title

Example input:

Month,Revenue,Expenses
Jan,4200,3800
Feb,5100,4200
Mar,4800,4100

chart_from_json

Parse a JSON array into a chart automatically.

Parameters:

Parameter Type Default Description
json_data string — JSON array of objects
chart_type string "bar" Chart type
title string "Chart" Chart title

Example input:

[
  {"language": "Python", "popularity": 28.1},
  {"language": "JavaScript", "popularity": 21.3},
  {"language": "TypeScript", "popularity": 12.7}
]

Development

Setup

# Clone the repository
git clone https://github.com/IBM/chuk-mcp-chart.git
cd chuk-mcp-chart

# Install with uv (recommended)
uv sync --dev

# Or with pip
pip install -e ".[dev]"

Running Tests

make test              # Run tests
make test-cov          # Run tests with coverage
make coverage-report   # Show coverage report

Code Quality

make lint      # Run linters
make format    # Auto-format code
make typecheck # Run type checking
make security  # Run security checks
make check     # Run all checks

Building

make build         # Build package
make docker-build  # Build Docker image

Deployment

Fly.io

Deploy to Fly.io with a single command:

# First time setup
fly launch

# Deploy updates
fly deploy

The server will be available via HTTP at your Fly.io URL.

Docker

# Build the image
docker build -t chuk-mcp-chart .

# Run the container
docker run -p 8000:8000 chuk-mcp-chart

Architecture

Built on top of chuk-mcp-server with chart rendering via chuk-view-schemas:

  • Decorator-driven: Tools defined with @chart_tool — handles view metadata, structured content, and text fallback automatically
  • Type-safe: All chart data uses Pydantic v2 models (ChartContent, ChartDataset, AxisConfig, LegendConfig)
  • Smart parsing: CSV and JSON tools auto-detect labels vs data columns
  • Async native: All tools are async for optimal performance
  • Dual transport: STDIO for MCP clients, HTTP for web access

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License

Apache License 2.0 - See LICENSE file for details.

Acknowledgments

Metadata

Release files for chuk-mcp-chart 1.0.17

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for chuk-mcp-chart 1.0.17
File Size Uploaded
chuk_mcp_chart-1.0.17.tar.gz 19.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for chuk-mcp-chart 1.0.17
File Interpreter ABI Platform
chuk_mcp_chart-1.0.17-py3-none-any.whl Python 3 none any Details

Total release size: 34.2 kB

Release files / chuk_mcp_chart-1.0.17.tar.gz

Download URL chuk_mcp_chart-1.0.17.tar.gz
Size 19.4 kB
Tags Source
SHA-256 checksum
How to use checksums
3c5086bd403c4ff67da9503302748af559af4a6633152dbb9336e449c40b7b64
BLAKE2b-256 checksum
How to use checksums
b6368bc223e8ae3e5e328ba49d4b214b591bc896ea4e5dadb63c3bad987a513d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.2

Release files / chuk_mcp_chart-1.0.17-py3-none-any.whl

Download URL chuk_mcp_chart-1.0.17-py3-none-any.whl
Size 14.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
781a53e16f4d5e11c1e7b1bfbdda8a7e11b8a690a84916bdadefbc19843df7ef
BLAKE2b-256 checksum
How to use checksums
b0d7af0381f9dff42aeec9f7db1b82b2ea7b748deac5e416082a68f95f905ab0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.2

Release history Release notifications | RSS feed

This release

1.0.17 This release

2 release files

1.0.15

2 release files

1.0.12

2 release files

1.0.11

2 release files

1.0.10

2 release files

1.0.9

2 release files

1.0.8

2 release files

1.0.7

2 release files

1.0.6

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page