📊 绘制MCP服务器
一个MCP(模型上下文协议)服务器,将CSV数据转换为精美的可视化效果。使用Python构建,并针对与AI助手和聊天应用程序的无缝集成进行了优化。
✨ 特性
- 📈 多种绘图类型:创建折线图、条形图、饼图和世界地图
- 🌍 地理可视化:内置支持使用Cartopy在世界地图上绘制坐标数据
- 🔧 灵活的参数:使用基于JSON的配置选项微调您的绘图
- 📱 聊天就绪输出:返回base64编码的PNG图像,非常适合AI聊天界面
- ⚡ 快速处理:使用pandas和matplotlib进行高效的CSV解析和绘图生成
安装
使用Makefile
make install使用紫外线
uv sync用法
运行服务器
uv run plotting-mcp默认情况下,服务器在端口9090上运行。
工具
generate_plot
将CSV数据转化为令人惊叹的可视化效果。
参数:
csv_data(str):CSV数据为字符串plot_type(str):绘图类型-line,bar,pie,或worldmapjson_kwargs(str):带有自定义绘图参数的JSON字符串
绘图选项:
- 折线图/柱状图:使用Seaborn参数(
x,y,hue用于数据映射) - 世界地图:自动坐标检测(
lat/latitude/y和lon/longitude/x)
- 自定义 s (尺寸), c (颜色), alpha (透明度), marker (风格)
- 饼图:支持单列(值计数)或两列(标签+值)
退货: Base64编码的PNG图像已准备好显示
🤖 AI助手集成
非常适合通过数据可视化功能增强人工智能对话。服务器将图形作为base64编码的PNG图像返回,这些图像无缝显示在:
- 自由聊天:直接集成基于聊天的数据分析
- 克劳德桌面:通过
mcp-remote从HTTP传输转换为stdio的命令
{
"mcpServers": {
"plotting": {
"command": "uvx",
"args": [
"--from", "/path/to/plotting-mcp",
"plotting-mcp", "--transport=stdio"
]
}
}
}- 自定义AI应用程序:通过MCP协议轻松集成
- 开发工具:与任何启用MCP的环境兼容
图像格式:具有可配置DPI和大小的高质量PNG
🚀 ToolHive部署
使用ToolHive轻松部署和管理绘图服务器,ToolHive是一个跨UI、CLI和Kubernetes模式为MCP服务器提供容器化、安全环境的平台。
优点:
- 🔒 安全集装箱化:具有全面安全控制的隔离环境
- ⚙️ 多个部署选项:UI、CLI和Kubernetes支持
- 🔧 开发者友好:与流行的开发工具无缝集成
📚 资源:
构建Docker镜像
docker build -t plotting-mcp .使用ToolHive运行
在本地运行
thv run --name plotting-mcp --transport streamable-http plotting-mcp:latest在K8s中使用ToolHive操作符运行ToolHive
- 为MCP服务器创建PVC。这是必要的,因为绘图库Matplotlib和Cartopy需要一个可写的文件系统来缓存数据:
kubectl apply -f toolhive-pvc.yaml- 在K8s中部署MCP服务器。在
toolhive-deployment.yaml,您可以自定义image字段指向您的图像注册表。
kubectl apply -f toolhive-deployment.yaml- 部署MCP服务器后,进行端口转发
kubectl port-forward svc/mcp-plotting-mcp-proxy 9090:9090🛠️ 发展
使用现代Python工具构建,提供出色的开发人员体验。
技术栈:
- 🐍 Python 3.13+:Python的最新特性
- 📊 Seaborn&Matplotlib:专业级绘图
- 🌍 卡通:高级地理空间可视化
- ⚡ FastMCP:高性能MCP服务器框架
- 🔧 紫外线的:快速Python包管理
代码质量
# 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