
Mcp Plots
io.github.MR901由 GitHub 账号 MR901 发布v0.0.3更新于 Oct 24, 2026
MCP server for data visualization with Mermaid charts.
概览
一个本地 MCP 服务器,把普通数据渲染成折线图、柱状图、饼图、散点图、热力图等图表,输出 Mermaid 图、PNG 图片或文本。
- 可以做什么
- 通过 list_chart_types、list_themes 和 suggest_fields 工具以及 render_chart 的 help/suggest 模式,查询可用图表类型与主题,并根据样本数据建议字段角色。使用 render_chart 从数据生成图表,可指定图表类型、字段映射、配置覆盖和输出格式(默认 Mermaid,也可输出 PNG 图片或文本)。生成测试图片以验证客户端能否显示图像。通过 configure_preferences 设置输出格式、主题和图表尺寸等持久默认值,保存在本地配置文件中。
- 适用场景
- 适合在聊天客户端中让助手快速把表格数据可视化,尤其是像 Cursor 这样能内联渲染 Mermaid 图的客户端,无需把数据导出到外部图表服务。
- 运行要求
- 作为本地 Python 包运行(需 Python 3.10+),可从 PyPI 安装或用 uvx 运行,也提供 Docker 方式。无需账号、API 密钥或请求头。可选环境变量包括 MCP_TRANSPORT、MCP_HOST、MCP_PORT、LOG_LEVEL 以及 CHART_DEFAULT_WIDTH/HEIGHT/DPI。
安装
在 SourceWeft 中
- 打开 控制台中的 Mcp Plots,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
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)
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): - Restart Cursor
- Ask: "Create a bar chart showing sales: A=100, B=150, C=80"
Development Installation
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:
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):
After installation, your MCP client should be able to start the server over stdio using the command defined in smithery.yaml.
Project layout
Requirements
- Python 3.10+
- See
requirements.txt
Setup Routes
uvx (Recommended)
The easiest way to run the MCP server without managing Python environments:
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
- Run the server (HTTP transport, default port 8000)
- Run with stdio (for MCP clients that spawn processes)
Local Development (from source)
Docker
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:
Example call (pseudo):
Return shape (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):
Traditional Python:
Docker
Build image:
Run container with custom configuration:
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):
2. Alternative: HTTP Transport
For HTTP-based integration:
3. Local Development Setup
For local development (if you have the code cloned):
4. Verify Integration
After adding the configuration:
- Restart Cursor
- Check MCP connection in Cursor's MCP panel
- Test with a simple chart:
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:
Time Series Line Chart:
Funnel Chart:
🔧 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:
🚀 Advanced Usage
Custom Themes
Available themes: default, dark, seaborn, minimal, whitegrid, darkgrid, ticks
High-Resolution Charts
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
📝 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
来源:README.md,提交 cdd5550
工具
0版本历史
1- v0.0.3最新Sep 16, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分