Plotting MCP Server
Transforms CSV data into beautiful visualizations including line charts, bar graphs, pie charts, and world maps. Returns base64-encoded PNG images optimized for AI chat interfaces and assistants.
README
š Plotting MCP Server
A MCP (Model Context Protocol) server that transforms CSV data into beautiful visualizations. Built with Python and optimized for seamless integration with AI assistants and chat applications.
⨠Features
- š Multiple Plot Types: Create line charts, bar graphs, pie charts, and world maps
- š Geographic Visualization: Built-in support for plotting coordinate data on world maps using Cartopy
- š§ Flexible Parameters: Fine-tune your plots with JSON-based configuration options
- š± Chat-Ready Output: Returns base64-encoded PNG images perfect for AI chat interfaces
- ā” Fast Processing: Efficient CSV parsing and plot generation with pandas and matplotlib
Installation
Using Makefile
make install
Using uv
uv sync
Usage
Running the Server
uv run plotting-mcp
The server runs on port 9090 by default.
Tools
generate_plot
Transform your CSV data into stunning visualizations.
Parameters:
csv_data(str): CSV data as a stringplot_type(str): Plot type -line,bar,pie, orworldmapjson_kwargs(str): JSON string with plotting parameters for customization
Plotting Options:
- Line/Bar Charts: Use Seaborn parameters (
x,y,huefor data mapping) - World Maps: Automatic coordinate detection (
lat/latitude/yandlon/longitude/x)- Customize with
s(size),c(color),alpha(transparency),marker(style)
- Customize with
- Pie Charts: Supports single column (value counts) or two columns (labels + values)
Returns: Base64-encoded PNG image ready for display
š¤ AI Assistant Integration
Perfect for enhancing AI conversations with data visualization capabilities. The server returns plots as base64-encoded PNG images that display seamlessly in:
- LibreChat: Direct integration for chat-based data analysis
- Claude Desktop: Through
mcp-remotecommand to transform from HTTP transport to stdio
{
"mcpServers": {
"plotting": {
"command": "uvx",
"args": [
"--from", "/path/to/plotting-mcp",
"plotting-mcp", "--transport=stdio"
]
}
}
}
- Custom AI Applications: Easy integration via MCP protocol
- Development Tools: Compatible with any MCP-enabled environment
Image Format: High-quality PNG with configurable DPI and sizing
š ToolHive Deployment
Deploy and manage your plotting server effortlessly with ToolHive - a platform that provides containerized, secure environments for MCP servers across UI, CLI, and Kubernetes modes.
Benefits:
- š Secure Containerization: Isolated environments with comprehensive security controls
- āļø Multiple Deployment Options: UI, CLI, and Kubernetes support
- š§ Developer-Friendly: Seamless integration with popular development tools
š Resources:
Build the Docker image
docker build -t plotting-mcp .
Run with ToolHive
Run locally
thv run --name plotting-mcp --transport streamable-http plotting-mcp:latest
Run with ToolHive in K8s with ToolHive operator
- Create a PVC for the MCP server. This is needed since the plotting libraries Matplotlib and Cartopy require a writable filesystem to cache data:
kubectl apply -f toolhive-pvc.yaml
- Deploy the MCP server in K8s. In the
toolhive-deployment.yaml, you can customize theimagefield to point to your image registry.
kubectl apply -f toolhive-deployment.yaml
- Once the MCP server is deployed, do port-forwarding
kubectl port-forward svc/mcp-plotting-mcp-proxy 9090:9090
š ļø Development
Built with modern Python tooling for a great developer experience.
Tech Stack:
- š Python 3.13+: Latest Python features
- š Seaborn & Matplotlib: Professional-grade plotting
- š Cartopy: Advanced geospatial visualization
- ā” FastMCP: High-performance MCP server framework
- š§ UV: Fast Python package management
Code Quality
# Format code and fix linting issues
make format
# Type checking
make typecheck
# Or use uv directly
uv run ruff format .
uv run ruff check --fix .
uv run ty check
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
E2B
Using MCP to run code via e2b.