Skip to main content
Glama
README.md
# 图表MCP服务器

一个基于 Model Context Protocol (MCP) 的图表生成服务器,提供15种不同类型的图表生成功能,支持AI智能配色和优雅设计。

复刻:https://www.modelscope.cn/mcp/servers/antvis/mcp-server-chart



## 功能特性

本服务器提供以下15种图表生成工具:

1. **generate_area_chart** - 生成面积图
2. **generate_bar_chart** - 生成柱状图(水平)
3. **generate_column_chart** - 生成柱状图(垂直)
4. **generate_dual_axes_chart** - 生成双轴图表
5. **generate_fishbone_diagram** - 生成鱼骨图(因果分析图)
6. **generate_flow_diagram** - 生成流程图
7. **generate_histogram_chart** - 生成直方图
8. **generate_line_chart** - 生成线图
9. **generate_mind_map** - 生成思维导图
10. **generate_network_graph** - 生成网络图
11. **generate_pie_chart** - 生成饼图
12. **generate_radar_chart** - 生成雷达图
13. **generate_scatter_chart** - 生成散点图
14. **generate_treemap_chart** - 生成树形图
15. **generate_word_cloud_chart** - 生成词云图

## 🎨 AI智能配色

- **自动配色**: AI根据图表类型和数据上下文自动选择优雅配色方案
- **主题系统**: 内置5种优雅配色主题(海洋蓝、日落、森林、紫色、珊瑚)
- **智能映射**: 不同类型的数据自动匹配最适合的颜色主题
- **自定义支持**: 可通过palette参数指定特定调色板

## 安装依赖

```bash
pip install -e .
```

或使用 pip 安装依赖:

```bash
pip install fastmcp plotly pandas kaleido pillow wordcloud matplotlib numpy
```

## 运行服务器

```bash
python src/main_optimized.py
```

## 使用示例

### 折线图(AI自动配色)

```python
data = [
    {"date": "12-17", "temperature": 5},
    {"date": "12-18", "temperature": 3},
    {"date": "12-19", "temperature": 2}
]

result = generate_line_chart(
    data=data,
    x_field="date",
    y_field="temperature",
    title="温度变化趋势"
)
```

### 柱状图(AI自动配色)

```python
data = [
    {"month": "1月", "sales": 120},
    {"month": "2月", "sales": 98},
    {"month": "3月", "sales": 145}
]

result = generate_column_chart(
    data=data,
    x_field="month",
    y_field="sales",
    title="月度销售额统计"
)
```

### 饼图(AI自动配色)

```python
data = [
    {"category": "移动端", "value": 45},
    {"category": "桌面端", "value": 30},
    {"category": "平板", "value": 15}
]

result = generate_pie_chart(
    data=data,
    label_field="category",
    value_field="value",
    title="市场份额分布"
)
```

### 双轴图(AI自动配色)

```python
data = [
    {"month": "1月", "revenue": 120, "users": 1000},
    {"month": "2月", "revenue": 150, "users": 1200},
    {"month": "3月", "revenue": 180, "users": 1500}
]

result = generate_dual_axes_chart(
    data=data,
    x_field="month",
    y1_field="revenue",
    y2_field="users",
    title="收入与用户增长对比"
)
```

## 输出说明

所有图表工具返回的结果格式如下:

```python
{
    "success": True,           # 是否成功
    "image_url": "http://127.0.0.1:8081/xxx.png", # 图像URL
    "message": "生成成功"       # 消息
}
```

如果生成失败:

```python
{
    "success": False,
    "error": "错误信息"
}
```

## 图像访问

- **静态文件服务器**: http://127.0.0.1:8081/
- **访问限制**: 仅允许访问.png格式文件
- **安全提示**: 访问非PNG文件将返回404错误

## 图像文件

- 所有生成的图像保存在 `images/` 目录中
- 文件名格式:`{chart_type}_YYYYMMDD_XXXXXXXX.png`
- 图像分辨率:1400x900,2倍缩放(高清晰度)

## 技术栈

- **FastMCP** - MCP服务器框架
- **Plotly** - 交互式图表库
- **Pandas** - 数据处理
- **Matplotlib** - 静态图表绘制
- **WordCloud** - 词云生成
- **NetworkX** - 网络图生成
- **Kaleido** - 图像导出引擎

## 设计特性

- **优雅边框**: 只显示左边和下边框,移除重复边框线
- **现代配色**: 采用现代UI设计趋势的配色方案
- **响应式布局**: 图表布局自适应不同数据量
- **高清晰度**: 2倍缩放确保在各种设备上清晰显示

## 注意事项

1. 确保已安装 `kaleido` 库,用于将 Plotly 图表导出为图像
2. 首次运行可能需要安装系统字体(用于 Matplotlib)
3. 图像文件会保存在 `images/` 目录中,请确保有写入权限
4. 服务器启动后会同时启动图像静态文件服务器(端口8081)

## 许可证

MIT License