🚀 vchart-mcp-server
vchart-mcp-server 是一个适用于 @visactor/vchart 的模型上下文协议(MCP)服务器,它能让 AI 助手生成交互式图表和可视化内容。

English | 简体中文
🚀 快速开始
若要在桌面应用程序(如 Trae、Claude、VSCode、Cline、Cherry Studio、Cursor 等)中使用,请添加以下 MCP 服务器配置:
MacOS
{
"mcpServers": {
"vchart-mcp-server": {
"command": "npx",
"args": ["-y", "@visactor/vchart-mcp-server"]
}
}
}
Windows
{
"mcpServers": {
"vchart-mcp-server": {
"command": "cmd",
"args": ["/c", "npx", "-y", "@visactor/vchart-mcp-server"]
}
}
}
通过 Smithery 安装
若要通过 Smithery 为 Claude Desktop 自动安装 vchart-mcp-server,可使用以下命令:
npx -y @smithery/cli install @VisActor/vchart-mcp-server --client claude
✨ 主要特性
图表输出格式
每个图表都能以多种格式生成:
- 图像 - 用于嵌入的 PNG/JPG 图像格式(默认)
- 规格 - 供编程使用的 VChart 规格对象
- HTML - 用于网页展示的交互式 HTML 图表
所有图表支持的通用参数
| 参数 |
描述 |
类型/选项 |
默认值 |
output |
输出格式 |
"spec" | "image" | "html" |
"image" |
width |
图表宽度 |
数字 |
500 |
height |
图表高度 |
数字 |
500 |
title |
图表标题 |
字符串 |
可选 |
subTitle |
图表副标题 |
字符串 |
可选 |
titleOrient |
标题位置 |
字符串 |
可选 |
chartTheme |
图表主题 |
字符串 |
可选 |
background |
背景颜色 |
字符串 |
可选 |
colors |
调色板 |
数组/字符串 |
可选 |
支持的图表类型和工具
generate_cartesian_chart
生成笛卡尔坐标系图表,包括面积图、条形图、折线图、瀑布图、漏斗图和动画排名条形图。
| 参数 |
描述 |
类型 |
是否必需 |
dataTable |
数据对象数组 |
数组 |
是 |
chartType |
图表类型 |
"line" | "area" | "bar" | "waterfall" | "funnel" | "ranking_bar" |
是 |
xField |
X 轴字段名 |
string |
是 |
yField |
Y 轴字段名 |
string |
是 |
colorField |
颜色映射字段 |
string |
可选 |
timeField |
动画排名条形图的时间字段 |
string |
可选 |
stackOrPercent |
堆叠或百分比模式 |
"stack" | "percent" |
可选 |
transpose |
水平显示条形图(作为条形图) |
boolean |
可选 |
xAxisType |
X 轴类型 |
"band" | "linear" |
可选 |
xAxisOrient |
X 轴位置 |
"top" | "bottom" |
可选 |
xAxisTitle |
X 轴标题 |
string |
可选 |
xAxisHasGrid |
显示 X 轴网格线 |
boolean |
可选 |
xAxisHasLabel |
显示 X 轴标签 |
boolean |
可选 |
xAxisHasTick |
显示 X 轴刻度 |
boolean |
可选 |
yAxisType |
Y 轴类型 |
"band" | "linear" |
可选 |
yAxisOrient |
Y 轴位置 |
"left" | "right" |
可选 |
yAxisTitle |
Y 轴标题 |
string |
可选 |
yAxisHasGrid |
显示 Y 轴网格线 |
boolean |
可选 |
yAxisHasLabel |
显示 Y 轴标签 |
boolean |
可选 |
yAxisHasTick |
显示 Y 轴刻度 |
boolean |
可选 |
generate_polar_chart
生成极坐标系图表,包括雷达图、玫瑰图和饼图。
| 参数 |
描述 |
类型/选项 |
是否必需 |
dataTable |
数据对象数组 |
数组 |
是 |
chartType |
图表类型 |
"radar" | "rose" | "pie" |
是 |
categoryField |
类别字段名 |
string |
是 |
valueField |
值字段名 |
string |
是 |
colorField |
颜色映射字段 |
string |
可选 |
angleAxisTitle |
角度轴标题 |
string |
可选 |
angleAxisHasGrid |
显示角度轴网格线 |
boolean |
可选 |
angleAxisHasLabel |
显示角度轴标签 |
boolean |
可选 |
angleAxisHasTick |
显示角度轴刻度 |
boolean |
可选 |
angleAxisType |
角度轴类型 |
"band" | "linear" |
可选 |
radiusAxisTitle |
半径轴标题 |
string |
可选 |
radiusAxisHasGrid |
显示半径轴网格线 |
boolean |
可选 |
radiusAxisHasLabel |
显示半径轴标签 |
boolean |
可选 |
radiusAxisHasTick |
显示半径轴刻度 |
boolean |
可选 |
radiusAxisType |
半径轴类型 |
"band" | "linear" |
可选 |
generate_hierarchical_chart
生成层次结构图表,包括树形图、圆形填充图和旭日图。
| 参数 |
描述 |
类型/选项 |
是否必需 |
dataTable |
数据对象数组 |
数组 |
是 |
chartType |
图表类型 |
"sunburst" | "treemap" | "circle_packing" |
是 |
colorField |
颜色映射字段 |
string |
是 |
valueField |
值映射字段 |
string |
是 |
generate_progress_chart
生成进度图表,包括圆形进度图、线性进度图、仪表盘和液态图。
| 参数 |
描述 |
类型/选项 |
是否必需 |
dataTable |
数据对象数组 |
数组 |
是 |
chartType |
图表类型 |
"linear_progress" | "circular_progress" | "gauge" | "liquid" |
是 |
valueField |
进度值字段名 |
string |
是 |
colorField |
颜色映射字段(液态图可选,其他必需) |
string |
可选 |
generate_wordcloud_venn
生成词云或维恩图,适用于展示文本数据中的关键词和频率。
| 参数 |
描述 |
类型/选项 |
是否必需 |
dataTable |
数据对象数组 |
数组 |
是 |
chartType |
图表类型 |
"wordcloud" | "venn" |
是 |
colorField |
文本字段或维恩集字段名 |
string |
是 |
valueField |
值字段名(维恩图必需) |
string |
可选 |
generate_range_column_chart
生成水平范围条形图,适用于展示数据范围和比较。
| 参数 |
描述 |
类型/选项 |
是否必需 |
dataTable |
数据对象数组 |
any[] |
是 |
xField |
类别字段名 |
string |
是 |
yField |
值字段名 |
[string, string] |
是 |
colorField |
颜色映射字段 |
string |
可选 |
xAxisType |
X 轴类型 |
"band" | "linear" |
可选 |
xAxisOrient |
X 轴位置 |
"top" | "bottom" |
可选 |
xAxisTitle |
X 轴标题 |
string |
可选 |
xAxisHasGrid |
显示 X 轴网格线 |
boolean |
可选 |
xAxisHasLabel |
显示 X 轴标签 |
boolean |
可选 |
xAxisHasTick |
显示 X 轴刻度 |
boolean |
可选 |
yAxisType |
Y 轴类型 |
"band" | "linear" |
可选 |
yAxisOrient |
Y 轴位置 |
"left" | "right" |
可选 |
yAxisTitle |
Y 轴标题 |
string |
可选 |
yAxisHasGrid |
显示 Y 轴网格线 |
boolean |
可选 |
yAxisHasLabel |
显示 Y 轴标签 |
boolean |
可选 |
yAxisHasTick |
显示 Y 轴刻度 |
boolean |
可选 |
generate_dual_axis_chart
具有两个 Y 轴的组合图表,用于比较两个不同单位的指标。
| 参数 |
描述 |
类型/选项 |
是否必需 |
dataTable |
数据对象数组 |
any[] |
是 |
xField |
X 轴字段名 |
string |
是 |
yField |
两个 Y 轴字段名 |
[string, string] |
是 |
colorField |
颜色映射字段 |
string |
可选 |
stackOrPercent |
堆叠或百分比模式 |
"stack" | "percent" |
可选 |
xAxisOrient |
X 轴位置 |
"top" | "bottom" |
可选 |
xAxisTitle |
X 轴标题 |
string |
可选 |
xAxisHasGrid |
显示 X 轴网格线 |
boolean |
可选 |
xAxisHasLabel |
显示 X 轴标签 |
boolean |
可选 |
xAxisHasTick |
显示 X 轴刻度 |
boolean |
可选 |
leftYAxisTitle |
左 Y 轴标题 |
string |
可选 |
leftYAxisHasGrid |
左 Y 轴网格线 |
boolean |
可选 |
leftYAxisHasLabel |
左 Y 轴标签 |
boolean |
可选 |
leftYAxisHasTick |
左 Y 轴刻度 |
boolean |
可选 |
rightYAxisTitle |
右 Y 轴标题 |
string |
可选 |
rightYAxisHasGrid |
右 Y 轴网格线 |
boolean |
可选 |
rightYAxisHasLabel |
右 Y 轴标签 |
boolean |
可选 |
rightYAxisHasTick |
右 Y 轴刻度 |
boolean |
可选 |
generate_scatter_chart
展示两个变量之间的关系,适用于发现模式和异常值。
| 参数 |
描述 |
类型/选项 |
是否必需 |
dataTable |
数据对象数组 |
any[] |
是 |
xField |
X 轴字段名 |
string |
是 |
yField |
Y 轴字段名 |
string |
是 |
colorField |
颜色映射字段 |
string |
可选 |
sizeField |
大小映射字段 |
string |
可选 |
xAxisType |
X 轴类型 |
"band" | "linear" |
可选 |
xAxisOrient |
X 轴位置 |
"top" | "bottom" |
可选 |
xAxisTitle |
X 轴标题 |
string |
可选 |
xAxisHasGrid |
显示 X 轴网格线 |
boolean |
可选 |
xAxisHasLabel |
显示 X 轴标签 |
boolean |
可选 |
xAxisHasTick |
显示 X 轴刻度 |
boolean |
可选 |
yAxisType |
Y 轴类型 |
"band" | "linear" |
可选 |
yAxisOrient |
Y 轴位置 |
"left" | "right" |
可选 |
yAxisTitle |
Y 轴标题 |
string |
可选 |
yAxisHasGrid |
显示 Y 轴网格线 |
boolean |
可选 |
yAxisHasLabel |
显示 Y 轴标签 |
boolean |
可选 |
yAxisHasTick |
显示 Y 轴刻度 |
boolean |
可选 |
generate_sankey_chart
生成桑基图。
| 参数 |
描述 |
类型 |
是否必需 |
dataTable |
数据对象数组 |
any[] |
是 |
sourceField |
源节点字段 |
string |
是 |
targetField |
目标节点字段 |
string |
是 |
valueField |
值字段 |
string |
是 |
generate_heatmap_chart
生成热力图,适用于展示数据密度和分布。
| 参数 |
描述 |
类型/选项 |
是否必需 |
dataTable |
数据对象数组 |
any[] |
是 |
xField |
X 轴字段名 |
string |
是 |
yField |
Y 轴字段名 |
string |
是 |
sizeField |
值字段名 |
string |
是 |
xAxisType |
X 轴类型 |
"band" | "linear" |
可选 |
xAxisOrient |
X 轴位置 |
"top" | "bottom" |
可选 |
xAxisTitle |
X 轴标题 |
string |
可选 |
xAxisHasGrid |
显示 X 轴网格线 |
boolean |
可选 |
xAxisHasLabel |
显示 X 轴标签 |
boolean |
可选 |
xAxisHasTick |
显示 X 轴刻度 |
boolean |
可选 |
yAxisType |
Y 轴类型 |
"band" | "linear" |
可选 |
yAxisOrient |
Y 轴位置 |
"left" | "right" |
可选 |
yAxisTitle |
Y 轴标题 |
string |
可选 |
yAxisHasGrid |
显示 Y 轴网格线 |
boolean |
可选 |
yAxisHasLabel |
显示 Y 轴标签 |
boolean |
可选 |
yAxisHasTick |
显示 Y 轴刻度 |
boolean |
可选 |
💻 使用示例
AI 对话中的使用示例
配置完成后,你可以要求你的 AI 助手创建图表:
“创建一个显示月度销售数据的面积图”
助手将使用 generate_cartesian_chart 工具,并使用以下参数:
- chartType: "area"
- dataTable: 你的销售数据
- xField: "month"
- yField: "sales"
“生成一个比较收入和用户增长的双轴图”
助手将使用 generate_dual_axis_chart 工具,并使用以下参数:
- dataTable: 你的业务数据
- xField: "time"
- yField: ["revenue", "userGrowth"]
“展示一个季度绩效的交互式 HTML 条形图”
助手将使用 generate_cartesian_chart 工具,并使用以下参数:
- chartType: "bar"
- dataTable: 你的季度数据
- xField: "quarter"
- yField: "performance"
- output: "html"
“创建一个产品销售份额的饼图”
助手将使用 generate_polar_chart 工具,并使用以下参数:
- chartType: "pie"
- dataTable: 你的销售数据
- categoryField: "product"
- valueField: "sales"
“绘制一个身高和体重的散点图”
助手将使用 generate_scatter_chart 工具,并使用以下参数:
- dataTable: 你的身体数据
- xField: "height"
- yField: "weight"
- colorField: "gender"(可选)
“创建一个用于团队技能评估的雷达图”
助手将使用 generate_polar_chart 工具,并使用以下参数:
- chartType: "radar"
- dataTable: 你的评估数据
- categoryField: "skill"
- valueField: "score"
“生成一个显示数据流的桑基图”
助手将使用 generate_sankey_chart 工具,并使用以下参数:
- dataTable: 你的流数据
- sourceField: "from"
- targetField: "to"
- valueField: "amount"
“创建一个显示数据分布的热力图”
助手将使用 generate_heatmap_chart 工具,并使用以下参数:
- dataTable: 你的分布数据
- xField: "x_category"
- yField: "y_category"
- sizeField: "value"
📚 详细文档
使用 SSE 或可流式传输协议运行
安装并启动
全局安装 @visactor/vchart-mcp-server:
npm install -g @visactor/vchart-mcp-server
启动服务器:
mcp-server-chart --transport sse
mcp-server-chart --transport streamable
然后你可以通过以下地址访问服务器:
- SSE 传输:
http://localhost:3001/sse
- 可流式传输:
http://localhost:3001/streamable
其他 CLI 选项
选项:
-t, --transport <type> 传输类型 (stdio, sse, streamable) [默认值: stdio]
-p, --port <port> 基于 HTTP 的传输的端口号 [默认值: 3000]
-e, --endpoint <path> 基于 HTTP 的传输的端点路径 [默认值: /message]
-h, --help 显示此帮助信息
示例:
node index.js # 使用 stdio 传输启动
node index.js -t sse -p 3000 # 使用 SSE 传输在端口 3000 上启动
node index.js -t sse -p 3000 -e /api/sse # 使用 SSE 传输在自定义端点上启动
node index.js -t streamable -p 3001 -e /stream # 使用可流式传输在自定义端点上启动
🔧 技术细节
开发
前提条件
构建
npm run build
开发模式(自动重建)
npm run watch
测试
npm run test-tool
npm run inspector
调试
由于 MCP 服务器通过标准输入输出进行通信,调试可能具有挑战性。可使用 MCP Inspector 进行开发:
npm run inspector
在 AI 编辑器中测试
若要在 AI 编辑器中测试 MCP 服务器,请使用以下配置:
{
"mcpServers": {
"vchart-mcp-server": {
"command": "node",
"args": ["/Users/path/to/your/project/vchart-mcp-server/build/index.js"]
}
}
}
环境变量
VIMD_IMAGE_SERVER - 自定义图像生成服务器 URL(默认:https://vmind.visactor.com/export)
私有部署
目前,vchart-mcp-server 生成的图像和 HTML 是通过 https://vmind.visactor.com/export 生成的。对于私有部署,可设置 VIMD_IMAGE_SERVER 环境变量来指定你自己的图像生成服务器。
{
"mcpServers": {
"mcp-server-chart": {
"command": "npx",
"args": [
"-y",
"@visactor/vchart-mcp-server"
],
"env": {
"VIMD_IMAGE_SERVER": "<YOUR_VIS_REQUEST_SERVER>"
}
}
}
}
图像生成服务可参考 https://github.com/VisActor/vchart-mcp-server-export 进行私有部署。
📄 许可证
本项目采用 MIT 许可证。
贡献
欢迎贡献!请随时提交问题和拉取请求。
相关项目