数据可视化服务器

一个将CSV数据转换为可视化图表的MCP服务器,支持多种图表类型和地理可视化,适用于AI助手和聊天应用集成。

  • by StacklokLabs
  • Python
  • 本地部署
  • 10 星标
  • 更新于
在 GitHub 查看 StacklokLabs/plotting-mcp

使用说明

📊 绘制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,或 worldmap
  • json_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

  1. 为MCP服务器创建PVC。这是必要的,因为绘图库Matplotlib和Cartopy需要一个可写的文件系统来缓存数据:
kubectl apply -f toolhive-pvc.yaml
  1. 在K8s中部署MCP服务器。在 toolhive-deployment.yaml,您可以自定义 image 字段指向您的图像注册表。
kubectl apply -f toolhive-deployment.yaml
  1. 部署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