一个完全离线的模型上下文协议(MCP)图表生成服务器,支持15种图表类型,并且可以在没有网络连接的情况下生成高质量的SVG图表。
npm install
npm run build
# 默认 stdio 模式
node build/index.js
# SSE 模式(可通过HTTP访问)
node build/index.js --transport sse --port 1122
# Streamable 模式
node build/index.js --transport streamable --port 1122
# 启动演示服务器
node demo-server.js
然后访问:
添加:
{
"mcpServers": {
"mcp-server-chart-offline": {
"command": "node",
"args": [
"/path/to/mcp-server-chart/build/index.js"
],
"cwd": "/path/to/mcp-server-chart"
}
}
}
{
"type": "line",
"data": [
{ "time": 2020, "value": 100 },
{ "time": 2021, "value": 120 },
{ "time": 2022, "value": 150 },
{ "time": 2023, "value": 180 }
]
}
{
"type": "bar",
"data": [
{ "category": "产品A", "value": 100 },
{ "category": "产品B", "value": 120 },
{ "category": "产品C", "value": 80 }
]
}
{
"type": "pie",
"data": [
{ "category": "苹果", "value": 40 },
{ "category": "橙子", "value": 30 },
{ "category": "香蕉", "value": 30 }
]
}
{
"type": "word-cloud",
"data": [
{ "text": "JavaScript", "value": 50 },
{ "text": "Python", "value": 40 },
{ "text": "React", "value": 35 }
]
}
{
"type": "radar",
"data": [
{ "category": "技能A", "value": 80 },
{ "category": "技能B", "value": 70 },
{ "category": "技能C", "value": 90 }
]
}
{
"type": "flow-diagram",
"data": [
{ "name": "开始", "step": "start" },
{ "name": "处理", "step": "process" },
{ "name": "决策", "step": "decision" },
{ "name": "结束", "step": "end" }
]
}
POST /api/generate-chart
Content-Type: application/json
{
"type": "line",
"data": [{"time": 2020, "value": 100}],
"width": 400,
"height": 300
}
POST /api/generate-charts
Content-Type: application/json
{
"charts": [
{"type": "line", "data": [...]},
{"type": "bar", "data": [...]}
]
}
GET /api/chart-types
该项目提供了以下MCP工具:
generate_line_chart -生成折线图generate_column_chart -生成柱状图generate_area_chart -生成面积图generate_pie_chart -生成饼图generate_bar_chart -生成柱状图generate_histogram_chart -生成直方图generate_scatter_chart -生成散点图generate_word_cloud_chart -生成词云图generate_radar_chart -生成雷达图generate_treemap_chart -生成树状图generate_dual_axes_chart -生成双轴图generate_mind_map -生成思维导图generate_network_graph -生成网络图generate_flow_diagram -生成流程图generate_fishbone_diagram -生成鱼骨图node simple-test.js
node test-all-charts.js
预期输出:
🚀 正在测试所有图表类型...
📊 正在测试折线图...
✅ 成功!长度:798,时间:0ms
📊 正在测试柱状图...
✅ 成功!长度:1098,时间:0ms
...
📈 测试总结:
================
✅ 成功:14/14
❌ 失败:0/14
📊 性能统计:
平均生成时间:0.14ms
平均结果大小:1323字符
# 在有网络的环境中
git clone <repository>
cd mcp-server-chart
npm install
npm run build
# 打包整个项目目录
tar -czf mcp-server-chart-offline.tar.gz .
# 解压到目标环境
tar -xzf mcp-server-chart-offline.tar.gz
cd mcp-server-chart
# 直接运行(不需要 npm install)
node build/index.js
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY build/ ./build/
COPY demo.html ./
COPY demo-server.js ./
EXPOSE 3000
CMD ["node", "demo-server.js"]
| 指标 | 值 |
|---|---|
| 支持15种图表类型 | |
| 平均生成时间 | <1ms |
| 平均输出大小 | ~1.3KB |
| 内存占用 | < 50MB |
| 网络依赖 | 0 |
| 启动时间 | <2s |
src/utils/generate-offline.ts) - 纯JavaScript SVG生成src/server.ts) - 模型上下文协议实现src/index.ts) - MCP工具注册和处理demo-server.js) - HTTP API和演示页面mcp-server-chart/
├── src/
│ ├── index.ts # MCP工具定义
│ ├── server.ts # MCP服务器实现
│ └── utils/
│ ├── constants.ts # 图表类型映射
│ ├── generate.ts # 主生成函数
│ ├── generate-offline.ts # 离线生成实现
│ └── ...
├── build/ # 编译输出
├── demo.html # 演示页面
├── demo-server.js # 演示服务器
├── test-all-charts.js # 测试脚本
├── OFFLINE_USAGE.md # 离线使用文档
└── package.json
src/utils/constants.ts 中添加映射src/utils/generate-offline.ts 中实现生成函数src/index.ts 中注册MCP工具npm run build # 编译TypeScript
npm run start # 启动MCP服务器
npm run test # 运行测试
欢迎提交Issue和Pull Requests!
git checkout -b feature/AmazingFeature)git commit -m 'Add some AmazingFeature')git push origin feature/AmazingFeature)本项目采用MIT许可证 - 详情见LICENSE文件
🎉 现在您可以在完全无网络的环境下使用MCP图表生成服务,支持全部15种图表类型!
如果您有任何问题或建议,请提交Issue。