本地图表生成系统

一个基于Model Context Protocol和Docker的隐私优先、AI驱动的本地图表可视化系统,支持多种图表类型和Python SDK集成。

  • by lubnaasmi
  • 本地部署
  • 更新于
在 GitHub 查看 lubnaasmi/MCP_Deployment

使用说明

本地MCP图表生成系统-

使用模型上下文协议和Docker实现隐私优先的人工智能图表可视化

概述

一个自托管的图表生成系统,使人工智能助手能够在没有外部API依赖关系的情况下本地创建可视化。使用模型上下文协议(MCP)、Docker和Python构建。

主要特点:

  • ✅ 25+图表类型(饼图、条形图、折线图、散点图、雷达图等)
  • ✅ 100%本地部署-无外部API
  • ✅ 用于自定义代理的Python SDK集成
  • ✅ Claude AI桌面兼容
  • ✅ 以隐私为中心的架构

建筑

┌─────────────────────────────────────┐
│   User / AI Assistant               │
│   (Claude Desktop / Python Agent)   │
└─────────────┬───────────────────────┘
              │
              ↓
┌─────────────────────────────────────┐
│   MCP Server (stdio protocol)       │
│   @antv/mcp-server-chart            │
└─────────────┬───────────────────────┘
              │ HTTP
              ↓
┌─────────────────────────────────────┐
│   Docker Container                  │
│   GPT-Vis-SSR Rendering Service     │
│   Port: 3000                        │
└─────────────┬───────────────────────┘
              │
              ↓
          Chart Image

快速开始

先决条件

  • 已安装Docker桌面
  • Node.js和npm(适用于npx)
  • Python 3.8+(用于Python集成)

步骤1:启动渲染服务

docker run -p 3000:3000 \
  -e RENDERED_IMAGE_HOST_PATH=http://localhost:3000/charts \
  ghcr.io/yaonyan/gpt-vis-mcp:latest-http

保持此终端运行。

步骤2:配置MCP客户端

对于Claude Desktop:

编辑配置文件:

  • 雨衣: ~/Library/Application Support/Claude/claude_desktop_config.json
  • 窗户: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "mcp-server-chart": {
      "command": "npx",
      "args": ["-y", "@antv/mcp-server-chart"],
      "env": {
        "VIS_REQUEST_SERVER": "http://localhost:3000/generate"
      }
    }
  }
}

重新启动克劳德桌面。

对于Python:

pip install mcp

步骤3:生成图表!

问克劳德: “制作一个饼图,显示:苹果40%,橙子35%,香蕉25%”

或者使用Python:

python examples/generate_chart.py

Python集成

安装

pip install mcp

示例:生成图表

import asyncio
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client

async def generate_chart():
    server_params = StdioServerParameters(
        command="npx",
        args=["-y", "@antv/mcp-server-chart"],
        env={"VIS_REQUEST_SERVER": "http://localhost:3000/generate"}
    )
    
    async with stdio_client(server_params) as (read, write):
        async with ClientSession(read, write) as session:
            await session.initialize()
            
            result = await session.call_tool(
                "generate_pie_chart",
                arguments={
                    "data": [
                        {"category": "Python", "value": 45},
                        {"category": "JavaScript", "value": 35},
                        {"category": "Java", "value": 20}
                    ],
                    "title": "Programming Languages"
                }
            )
            
            chart_url = result.content[0].text
            print(f"Chart URL: {chart_url}")
            return chart_url

asyncio.run(generate_chart())

支持的图表类型

图表类型 描述 用例
饼图 比例数据 市场份额,百分比
条形图 横向比较 类别排名
列 垂直比较 时间序列,组
线条 随时间变化的趋势 股价、增长
面积 累积趋势 随时间变化的总数
散点 相关性 数据关系
雷达 多维 性能指标
柱状图 分布 数据频率
箱线图 统计摘要 数据分布
漏斗 工艺阶段 转化率
+15更多

完整列表:区域、条形图、箱线图、列图、双轴图、鱼骨图、流图、漏斗图、直方图、线图、液体图、思维导图、网络图、组织图、饼图、雷达图、散点图、树状图、venn图、小提琴图、词云图

项目结构

mcp-chart-system/
├── README.md
├── examples/
│   ├── generate_chart.py          # Basic Python example
│   ├── advanced_examples.py       # Multiple chart types
│   └── generated_charts/          # Sample outputs
├── docker/
│   └── docker-compose.yaml        # Alternative deployment
└── docs/
    ├── architecture.md
    └── api-reference.md

🔧 高级配置

自定义端口

docker run -p 8080:3000 \
  -e RENDERED_IMAGE_HOST_PATH=http://localhost:8080/charts \
  ghcr.io/yaonyan/gpt-vis-mcp:latest-http

更新配置:

{
  "env": {
    "VIS_REQUEST_SERVER": "http://localhost:8080/generate"
  }
}

Docker编写部署

services:
  rendering:
    image: ghcr.io/yaonyan/gpt-vis-mcp:latest-http
    ports:
      - "3000:3000"
    environment:
      - RENDERED_IMAGE_HOST_PATH=http://localhost:3000/charts

测试

测试渲染服务

curl -X POST http://localhost:3000/generate \
  -H "Content-Type: application/json" \
  -d '{
    "type": "pie",
    "data": [
      {"category": "A", "value": 30},
      {"category": "B", "value": 70}
    ]
  }'

预期响应:

{
  "success": true,
  "resultObj": "http://localhost:3000/charts/chart_xxxxx.png"
}

技术栈

  • 集装箱化: 码头工人
  • MCP服务器: @antv/mcp服务器图表(Node.js)
  • 致使: GPT-Vis SSR(AntV可视化库)
  • Python SDK: mcp(异步/等待)
  • 协议: 模型上下文协议(MCP)
  • API REST(HTTP/JSON)

📈 演出

  • 图表生成: <2秒
  • 内存使用情况: ~200MB(Docker容器)
  • 并发请求: 支持多代同时运行
  • 输出格式: PNG图像

隐私和安全

  • ✅ 100%本地处理
  • ✅ 没有外部API调用
  • ✅ 未向第三方发送数据
  • ✅ 自托管渲染
  • ✅ 开源组件

资源