
Plots Mcp
- 4 repo stars
- Updated December 2, 2025
- MR901/plots-mcp
plots-mcp is a MCP server that exposes Mermaid chart generation for agent-assisted documentation.
About
plots-mcp is the companion repository to MR901’s Mermaid plotting MCP, packaged for PyPI under the mcp-plots identifier with an initial 0.0.1 release line. Skillselion lists it separately because registry slugs and GitHub paths differ even when the user-facing promise matches: an MCP server for data visualization with Mermaid charts. developers choose it during documentation sprints when they want agents embedded in Claude Code or Cursor to draft diagrams as part of issue comments, onboarding guides, or lightweight analytics explainers. The server uses stdio transport, which aligns with local-first agent setups and avoids hosting a chart web UI. Capability depth is intentionally narrow compared with business intelligence products—you provide structure and values, and the MCP returns Mermaid syntax. Prefer the newer mcp-plots repo entry if you want the higher schema version; use this slug when your lockfile or docs already reference plots-mcp.
- Same Mermaid-focused visualization purpose as MR901/mcp-plots with plots-mcp GitHub source
- Early PyPI release 0.0.1 on identifier mcp-plots for stdio MCP hosts
- Agent-callable plotting without standing up Jupyter or Grafana for simple diagrams
- Text charts that diff cleanly in git for indie documentation loops
- Developer Tools adjacent analytics affordance for README and ADR updates
Plots Mcp by the numbers
- Data as of Jul 7, 2026 (Skillselion catalog sync)
claude mcp add mcp-plots -- uvx mcp-plotsAdd your badge
Show developers this MCP server is listed on Skillselion. Paste this into your README.
| repo stars | ★ 4 |
|---|---|
| Package | mcp-plots |
| Transport | STDIO |
| Auth | None |
| Last updated | December 2, 2025 |
| Repository | MR901/plots-mcp ↗ |
What it does
Generate Mermaid visualizations from agent chats when you install the plots-mcp PyPI entry instead of the sibling mcp-plots package name.
Who is it for?
Best when you're already pinned to the plots-mcp GitHub distribution and want the lightest Mermaid MCP path.
Skip if: Production analytics teams that need governed datasets, dashboards, or non-Mermaid chart types.
What you get
Installing plots-mcp lets your agent emit Mermaid blocks you drop into docs without leaving the MCP session.
- Mermaid syntax blocks for technical writing
- Agent workflow hook for refreshing diagrams in git-tracked docs
By the numbers
- Server manifest version 0.0.1
- PyPI package version 0.0.1 with identifier mcp-plots
- GitHub source github.com/MR901/plots-mcp
README.md
A Model Context Protocol (MCP) server for data visualization. It exposes tools to render charts (line, bar, pie, scatter, heatmap, etc.) from data and returns the plot as image/base64 text/mermaid diagram.
Why MCP Plots?
- Instant, visual-first charts using Mermaid (renders directly in MCP clients like Cursor)
- Simple prompts to generate charts from plain data
- Zero-setup options via uvx, or install from PyPI/Docker
- Flexible output formats: mermaid (default), PNG image, or text
Quick Usage
- Ask your MCP client: "Create a bar chart showing sales: A=100, B=150, C=80"
- Default output is Mermaid, so diagrams render instantly in Cursor
Quick Start
PyPI Installation (Recommended)
pip install mcp-plots
mcp-plots # Start the server
For Cursor Users
- Install the package:
pip install mcp-plots - Add to your Cursor MCP config (
~/.cursor/mcp.json):
Alternative (zero-install via uvx + PyPI):{ "mcpServers": { "plots": { "command": "mcp-plots", "args": ["--transport", "stdio"] } } }{ "mcpServers": { "plots": { "command": "uvx", "args": ["mcp-plots", "--transport", "stdio"] } } } - Restart Cursor
- Ask: "Create a bar chart showing sales: A=100, B=150, C=80"
Development Installation
uvx --from git+https://github.com/mr901/mcp-plots.git run-server.py
Documentation → | Quick Start → | API Reference →
MCP Registry
This server is published under the MCP registry identifier io.github.MR901/mcp-plots. You can discover/verify it via the official registry API:
curl "https://registry.modelcontextprotocol.io/v0/servers?search=io.github.MR901/mcp-plots"
Registry metadata for this project is tracked in server.json.
Install with Smithery
This repository includes a smithery.yaml for easy setup with Smithery.
- File:
smithery.yaml - Docs: https://smithery.ai/docs/config#smitheryyaml
Example install using the Smithery CLI (adjust --client as needed, e.g. cursor, claude):
npx -y @smithery/cli install \
https://raw.githubusercontent.com/mr901/mcp-plots/main/smithery.yaml \
--client cursor
After installation, your MCP client should be able to start the server over stdio using the command defined in smithery.yaml.
Project layout
src/
app/ # Server construction and runtime
server.py
capabilities/ # MCP tools and prompts
tools.py
prompts.py
visualization/ # Plotting engines and configurations
chart_config.py
generator.py
Requirements
- Python 3.10+
- See
requirements.txt
Setup Routes
uvx (Recommended)
The easiest way to run the MCP server without managing Python environments:
# Run directly with uvx (no installation needed)
uvx --from git+https://github.com/mr901/mcp-plots.git run-server.py
# Or install and run the command
uvx --from git+https://github.com/mr901/mcp-plots.git mcp-plots
# With custom options
uvx --from git+https://github.com/mr901/mcp-plots.git mcp-plots --port 8080 --log-level DEBUG
Why uvx?
- No Environment Management: Automatically handles Python dependencies
- Isolated Execution: Runs in its own virtual environment
- Always Latest: Pulls fresh code from repository
- Zero Setup: Works immediately without pip install
- Cross-Platform: Same command works on Windows, macOS, Linux
PyPI (Traditional Installation)
- Install dependencies
pip install -r requirements.txt
- Run the server (HTTP transport, default port 8000)
python -m src --transport streamable-http --host 0.0.0.0 --port 8000 --log-level INFO
- Run with stdio (for MCP clients that spawn processes)
python -m src --transport stdio
Local Development (from source)
git clone https://github.com/mr901/mcp-plots.git
cd mcp-plots
pip install -e .
python -m src --transport stdio --log-level DEBUG
Docker
docker build -t mcp-plots .
docker run -p 8000:8000 mcp-plots
Environment variables (optional):
MCP_TRANSPORT(streamable-http|stdio)MCP_HOST(default 0.0.0.0)MCP_PORT(default 8000)LOG_LEVEL(default INFO)
Tools
list_chart_types()→ returns available chart typeslist_themes()→ returns available themessuggest_fields(sample_rows)→ suggests field roles based on data samplesrender_chart(chart_type, data, field_map, config_overrides?, options?, output_format?)→ returns MCP contentgenerate_test_image()→ generates a test image (red circle) to verify MCP image support
Cursor Integration
This MCP server is fully compatible with Cursor's image support! When you use the render_chart tool:
- Charts appear directly in chat - No need to save files or open separate windows
- AI can analyze your charts - Vision-enabled models can discuss and interpret your visualizations
- Perfect MCP format - Uses the exact base64 PNG format that Cursor expects
The server returns images in the MCP format Cursor requires:
{
"content": [
{
"type": "image",
"data": "<base64-encoded-png>",
"mimeType": "image/png"
}
]
}
Example call (pseudo):
render_chart(
chart_type="bar",
data=[{"category":"A","value":10},{"category":"B","value":20}],
field_map={"category_field":"category","value_field":"value"},
config_overrides={"title":"Example Bar","width":800,"height":600,"output_format":"MCP_IMAGE"}
)
Return shape (PNG):
{
"status": "success",
"content": [{"type":"image","data":"<base64>","mimeType":"image/png"}]
}
Configuration
The server can be configured via environment variables or command line arguments:
Server Settings
MCP_TRANSPORT- Transport type:streamable-httporstdio(default:streamable-http)MCP_HOST- Host address (default:0.0.0.0)MCP_PORT- Port number (default:8000)LOG_LEVEL- Logging level:DEBUG,INFO,WARNING,ERROR,CRITICAL(default:INFO)MCP_DEBUG- Enable debug mode:trueorfalse(default:false)
Chart Settings
CHART_DEFAULT_WIDTH- Default chart width in pixels (default:800)CHART_DEFAULT_HEIGHT- Default chart height in pixels (default:600)CHART_DEFAULT_DPI- Default chart DPI (default:100)CHART_MAX_DATA_POINTS- Maximum data points per chart (default:10000)
Command Line Usage
With uvx (recommended):
uvx --from git+https://github.com/mr901/mcp-plots.git mcp-plots --help
# Examples:
uvx --from git+https://github.com/mr901/mcp-plots.git mcp-plots --port 8080 --log-level DEBUG
uvx --from git+https://github.com/mr901/mcp-plots.git mcp-plots --chart-width 1200 --chart-height 800
Traditional Python:
python -m src --help
# Examples:
python -m src --transport streamable-http --host 0.0.0.0 --port 8000
python -m src --log-level DEBUG --chart-width 1200 --chart-height 800
Docker
Build image:
docker build -t mcp-plots .
Run container with custom configuration:
docker run --rm -p 8000:8000 \
-e MCP_TRANSPORT=streamable-http \
-e MCP_HOST=0.0.0.0 \
-e MCP_PORT=8000 \
-e LOG_LEVEL=INFO \
-e CHART_DEFAULT_WIDTH=1000 \
-e CHART_DEFAULT_HEIGHT=700 \
-e CHART_DEFAULT_DPI=150 \
-e CHART_MAX_DATA_POINTS=5000 \
mcp-plots
Cursor MCP Integration
Quick Setup for Cursor
The Plots MCP Server is designed to work seamlessly with Cursor's MCP support. Here's how to integrate it:
1. Add to Cursor's MCP Configuration
Add this to your Cursor MCP configuration file (~/.cursor/mcp.json or similar):
{
"mcpServers": {
"plots": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/mr901/mcp-plots.git@main",
"mcp-plots",
"--transport",
"stdio"
],
"env": {
"LOG_LEVEL": "INFO",
"CHART_DEFAULT_WIDTH": "800",
"CHART_DEFAULT_HEIGHT": "600"
}
}
}
}
2. Alternative: HTTP Transport
For HTTP-based integration:
{
"mcpServers": {
"plots-http": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/mr901/mcp-plots.git@main",
"mcp-plots",
"--transport",
"streamable-http",
"--host",
"127.0.0.1",
"--port",
"8000"
]
}
}
}
3. Local Development Setup
For local development (if you have the code cloned):
{
"mcpServers": {
"plots-dev": {
"command": "python",
"args": ["-m", "src", "--transport", "stdio"],
"cwd": "/path/to/mcp-plots",
"env": {
"LOG_LEVEL": "DEBUG"
}
}
}
}
4. Verify Integration
After adding the configuration:
- Restart Cursor
- Check MCP connection in Cursor's MCP panel
- Test with a simple chart:
Create a bar chart showing sales data: A=100, B=150, C=80
MERMAID-First Approach
This server prioritizes MERMAID output by default because:
- ✅ Renders instantly in Cursor - No external viewers needed
- ✅ Interactive - Cursor can analyze and discuss the diagrams
- ✅ Lightweight - Fast generation and display
- ✅ Scalable - Vector-based, works at any zoom level
Chart Types with Native MERMAID Support:
line,bar,pie,area→xychart-betaformathistogram→xychart-betawith automatic binningfunnel→ Styled flowchart with color gradientsgauge→ Flowchart with color-coded value indicatorssankey→ Flow diagrams with source/target styling
Available Tools
render_chart
Main chart generation tool with MERMAID-first approach.
Parameters:
chart_type- Chart type (line,bar,pie,scatter,heatmap, etc.)data- List of data objectsfield_map- Field mappings (x_field,y_field,category_field, etc.)config_overrides- Chart configuration overridesoutput_format- Output format (mermaid[default],mcp_image,mcp_text)
Special Modes:
chart_type="help"- Show available chart types and themeschart_type="suggest"- Analyze data and suggest field mappings
configure_preferences
Interactive configuration tool for setting user preferences.
Parameters:
output_format- Default output format (mermaid,mcp_image,mcp_text)theme- Default theme (default,dark,seaborn,minimal)chart_width- Default chart width in pixelschart_height- Default chart height in pixelsreset_to_defaults- Reset all preferences to system defaults
Features:
- Persistent Settings - Saved to
~/.plots_mcp_config.json - Live Preview - Shows sample chart with current settings
- Override Support - Use
config_overridesfor one-off changes
Documentation
Additional Resources
- Complete Documentation - Technical documentation hub
- Quick Start - 5-minute setup guide
- Integration Guide - MCP client setup and configuration
- API Reference - Complete tool specifications and examples
- Advanced Guide - Architecture, deployment, and development
- Sample Prompts - Ready-to-use testing examples
Chart Examples
Basic Bar Chart:
{
"chart_type": "bar",
"data": [
{"category": "Sales", "value": 120},
{"category": "Marketing", "value": 80},
{"category": "Support", "value": 60}
],
"field_map": {
"category_field": "category",
"value_field": "value"
}
}
Time Series Line Chart:
{
"chart_type": "line",
"data": [
{"date": "2024-01", "revenue": 1000},
{"date": "2024-02", "revenue": 1200},
{"date": "2024-03", "revenue": 1100}
],
"field_map": {
"x_field": "date",
"y_field": "revenue"
}
}
Funnel Chart:
{
"chart_type": "funnel",
"data": [
{"stage": "Awareness", "value": 1000},
{"stage": "Interest", "value": 500},
{"stage": "Purchase", "value": 100}
],
"field_map": {
"category_field": "stage",
"value_field": "value"
}
}
🔧 Configuration
Environment Variables
MCP_TRANSPORT- Transport type (streamable-http|stdio)MCP_HOST- Host address (default:0.0.0.0)MCP_PORT- Port number (default:8000)LOG_LEVEL- Logging level (default:INFO)MCP_DEBUG- Enable debug mode (true|false)CHART_DEFAULT_WIDTH- Default chart width in pixels (default:800)CHART_DEFAULT_HEIGHT- Default chart height in pixels (default:600)CHART_DEFAULT_DPI- Default chart DPI (default:100)CHART_MAX_DATA_POINTS- Maximum data points per chart (default:10000)
User Preferences
Personal preferences are stored in ~/.plots_mcp_config.json:
{
"defaults": {
"output_format": "mermaid",
"theme": "default",
"chart_width": 800,
"chart_height": 600
},
"user_preferences": {
"output_format": "mcp_image",
"theme": "dark"
}
}
🚀 Advanced Usage
Custom Themes
Available themes: default, dark, seaborn, minimal, whitegrid, darkgrid, ticks
High-Resolution Charts
uvx --from git+https://github.com/mr901/mcp-plots.git mcp-plots \
--chart-width 1920 \
--chart-height 1080 \
--chart-dpi 300
Performance Optimization
- Use
max_data_pointsto limit large datasets - MERMAID output is fastest for quick visualization
- PNG output for high-quality static images
- SVG output for scalable vector graphics
🐛 Troubleshooting
Common Issues
Issue: Charts not rendering in Cursor
- Solution: Ensure
output_format="mermaid"(default) - Check: MCP server connection in Cursor
Issue: uvx command not found
- Solution: Install uv:
curl -LsSf https://astral.sh/uv/install.sh | sh
Issue: Port already in use
- Solution: Use different port:
--port 8001
Issue: Large datasets slow
- Solution: Sample data or increase
--max-data-points
Debug Mode
uvx --from git+https://github.com/mr901/mcp-plots.git mcp-plots \
--debug \
--log-level DEBUG
📝 Notes
- Matplotlib runs headless (Agg backend) in the container
- For large datasets, sample your data for responsiveness
- Chart defaults can be overridden per-request via
config_overrides - MERMAID charts render instantly in Cursor for the best user experience
- User preferences persist across sessions and apply to all charts by default
Recommended MCP Servers
How it compares
Sibling packaging of the MR901 Mermaid MCP—not a separate visualization engine category.
FAQ
Who is plots-mcp for?
Developers wiring MCP stdio servers who follow the plots-mcp repository and want Mermaid charts from their coding agent.
When should I use plots-mcp?
Use it during doc-heavy build work when markdown Mermaid is enough and your install docs reference this repo slug.
How do I add plots-mcp to my agent?
Install from PyPI package mcp-plots per this server manifest, configure stdio in your MCP client, and call the visualization tools from the agent.