Install
$ agentstack add mcp-stackloklabs-plotting-mcp ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
📊 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) - 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
Source & license
This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: StacklokLabs
- Source: StacklokLabs/plotting-mcp
- License: Apache-2.0
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.