🚀 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 許可證。
貢獻
歡迎貢獻!請隨時提交問題和拉取請求。
相關項目