vchart-mcp-server

VisActor/vchart-mcp-server

3.5

If you are the rightful owner of vchart-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

The vchart-mcp-server is a TypeScript-based Model Context Protocol (MCP) server designed to manage a simple notes system, demonstrating core MCP concepts.

Tools
2
Resources
0
Prompts
0

vchart-mcp-server

A Model Context Protocol (MCP) server for the @visactor/vchart that enables AI assistants to generate interactive charts and visualizations.

MCP Server npm Version npm License smithery badge

English |

Table of Contents

Features

Chart Output Formats

Each chart can be generated in multiple formats:

  • Image - PNG/JPG image format for embedding (default)
  • Spec - VChart spec object for programmatic use
  • HTML - Interactive HTML chart for web display

Common Parameters Supported by All Charts

ParameterDescriptionType/OptionsDefault
outputOutput format"spec" | "image" | "html""image"
widthChart widthNumber500
heightChart heightNumber500
titleChart titleStringOptional
subTitleChart subtitleStringOptional
titleOrientTitle positionStringOptional
chartThemeChart themeStringOptional
backgroundBackground colorStringOptional
colorsColor paletteArray/StringOptional

Supported Chart Types and Tools

generate_cartesian_chart

Generates Cartesian coordinate system charts, including area, bar, line, waterfall, funnel, and animated ranking bar charts.

ParameterDescriptionTypeRequired
dataTableData object arrayArrayYes
chartTypeChart type"line" | "area" | "bar" | "waterfall" | "funnel" | "ranking_bar"Yes
xFieldX axis field namestringYes
yFieldY axis field namestringYes
colorFieldColor mapping fieldstringOptional
timeFieldTime field for animated ranking bar chartstringOptional
stackOrPercentStack or percent mode"stack" | "percent"Optional
transposeDisplay bar chart horizontally (as bar chart)booleanOptional
xAxisTypeX axis type"band" | "linear"Optional
xAxisOrientX axis position"top" | "bottom"Optional
xAxisTitleX axis titlestringOptional
xAxisHasGridShow X axis grid linesbooleanOptional
xAxisHasLabelShow X axis labelsbooleanOptional
xAxisHasTickShow X axis ticksbooleanOptional
yAxisTypeY axis type"band" | "linear"Optional
yAxisOrientY axis position"left" | "right"Optional
yAxisTitleY axis titlestringOptional
yAxisHasGridShow Y axis grid linesbooleanOptional
yAxisHasLabelShow Y axis labelsbooleanOptional
yAxisHasTickShow Y axis ticksbooleanOptional
generate_polar_chart

Generates polar coordinate system charts, including radar, rose, and pie charts.

ParameterDescriptionType/OptionsRequired
dataTableData object arrayArrayYes
chartTypeChart type"radar" | "rose" | "pie"Yes
categoryFieldCategory field namestringYes
valueFieldValue field namestringYes
colorFieldColor mapping fieldstringOptional
angleAxisTitleAngle axis titlestringOptional
angleAxisHasGridShow angle axis grid linesbooleanOptional
angleAxisHasLabelShow angle axis labelsbooleanOptional
angleAxisHasTickShow angle axis ticksbooleanOptional
angleAxisTypeAngle axis type"band" | "linear"Optional
radiusAxisTitleRadius axis titlestringOptional
radiusAxisHasGridShow radius axis grid linesbooleanOptional
radiusAxisHasLabelShow radius axis labelsbooleanOptional
radiusAxisHasTickShow radius axis ticksbooleanOptional
radiusAxisTypeRadius axis type"band" | "linear"Optional
generate_hierarchical_chart

Generates hierarchical charts, including treemap, circle packing, and sunburst charts.

ParameterDescriptionType/OptionsRequired
dataTableData object arrayArrayYes
chartTypeChart type"sunburst" | "treemap" | "circle_packing"Yes
colorFieldColor mapping fieldstringYes
valueFieldValue mapping fieldstringYes
generate_progress_chart

Generates progress charts, including circular, linear, gauge, and liquid charts.

ParameterDescriptionType/OptionsRequired
dataTableData object arrayArrayYes
chartTypeChart type"linear_progress" | "circular_progress" | "gauge" | "liquid"Yes
valueFieldProgress value field namestringYes
colorFieldColor mapping field (optional for liquid, required otherwise)stringOptional
generate_wordcloud_venn

Generates word cloud or Venn diagrams, suitable for displaying keywords and frequencies in text data.

Parameters:

ParameterDescriptionType/OptionsRequired
dataTableData object arrayArrayYes
chartTypeChart type"wordcloud" | "venn"Yes
colorFieldText field or Venn set field namestringYes
valueFieldValue field name (required for Venn)stringOptional
generate_range_column_chart

Generates horizontal range bar charts, suitable for displaying data ranges and comparisons.

ParameterDescriptionType/OptionsRequired
dataTableData object arrayany[]Yes
xFieldCategory field namestringYes
yFieldValue field names[string, string]Yes
colorFieldColor mapping fieldstringOptional
xAxisTypeX axis type"band" | "linear"Optional
xAxisOrientX axis position"top" | "bottom"Optional
xAxisTitleX axis titlestringOptional
xAxisHasGridShow X axis grid linesbooleanOptional
xAxisHasLabelShow X axis labelsbooleanOptional
xAxisHasTickShow X axis ticksbooleanOptional
yAxisTypeY axis type"band" | "linear"Optional
yAxisOrientY axis position"left" | "right"Optional
yAxisTitleY axis titlestringOptional
yAxisHasGridShow Y axis grid linesbooleanOptional
yAxisHasLabelShow Y axis labelsbooleanOptional
yAxisHasTickShow Y axis ticksbooleanOptional
generate_dual_axis_chart

Combination chart with two Y axes, for comparing two metrics with different units.

ParameterDescriptionType/OptionsRequired
dataTableData object arrayany[]Yes
xFieldX axis field namestringYes
yFieldTwo Y axis field names[string, string]Yes
colorFieldColor mapping fieldstringOptional
stackOrPercentStack or percent mode"stack" | "percent"Optional
xAxisOrientX axis position"top" | "bottom"Optional
xAxisTitleX axis titlestringOptional
xAxisHasGridShow X axis grid linesbooleanOptional
xAxisHasLabelShow X axis labelsbooleanOptional
xAxisHasTickShow X axis ticksbooleanOptional
leftYAxisTitleLeft Y axis titlestringOptional
leftYAxisHasGridLeft Y axis grid linesbooleanOptional
leftYAxisHasLabelLeft Y axis labelsbooleanOptional
leftYAxisHasTickLeft Y axis ticksbooleanOptional
rightYAxisTitleRight Y axis titlestringOptional
rightYAxisHasGridRight Y axis grid linesbooleanOptional
rightYAxisHasLabelRight Y axis labelsbooleanOptional
rightYAxisHasTickRight Y axis ticksbooleanOptional
generate_scatter_chart

Displays the relationship between two variables, suitable for discovering patterns and outliers.

ParameterDescriptionType/OptionsRequired
dataTableData object arrayany[]Yes
xFieldX axis field namestringYes
yFieldY axis field namestringYes
colorFieldColor mapping fieldstringOptional
sizeFieldSize mapping fieldstringOptional
xAxisTypeX axis type"band" | "linear"Optional
xAxisOrientX axis position"top" | "bottom"Optional
xAxisTitleX axis titlestringOptional
xAxisHasGridShow X axis grid linesbooleanOptional
xAxisHasLabelShow X axis labelsbooleanOptional
xAxisHasTickShow X axis ticksbooleanOptional
yAxisTypeY axis type"band" | "linear"Optional
yAxisOrientY axis position"left" | "right"Optional
yAxisTitleY axis titlestringOptional
yAxisHasGridShow Y axis grid linesbooleanOptional
yAxisHasLabelShow Y axis labelsbooleanOptional
yAxisHasTickShow Y axis ticksbooleanOptional
generate_sankey_chart

Generates Sankey diagrams.

ParameterDescriptionTypeRequired
dataTableData object arrayany[]Yes
sourceFieldSource node fieldstringYes
targetFieldTarget node fieldstringYes
valueFieldValue fieldstringYes
generate_heatmap_chart

Generates heatmaps, suitable for displaying data density and distribution.

ParameterDescriptionType/OptionsRequired
dataTableData object arrayany[]Yes
xFieldX axis field namestringYes
yFieldY axis field namestringYes
sizeFieldValue field namestringYes
xAxisTypeX axis type"band" | "linear"Optional
xAxisOrientX axis position"top" | "bottom"Optional
xAxisTitleX axis titlestringOptional
xAxisHasGridShow X axis grid linesbooleanOptional
xAxisHasLabelShow X axis labelsbooleanOptional
xAxisHasTickShow X axis ticksbooleanOptional
yAxisTypeY axis type"band" | "linear"Optional
yAxisOrientY axis position"left" | "right"Optional
yAxisTitleY axis titlestringOptional
yAxisHasGridShow Y axis grid linesbooleanOptional
yAxisHasLabelShow Y axis labelsbooleanOptional
yAxisHasTickShow Y axis ticksbooleanOptional

Usage

To use in desktop applications (such as Trae, Claude, VSCode, Cline, Cherry Studio, Cursor, etc.), add the following MCP server configuration:

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"]
    }
  }
}

Installing via Smithery

To install vchart-mcp-server for Claude Desktop automatically via Smithery:

npx -y @smithery/cli install @VisActor/vchart-mcp-server --client claude

Running with SSE or Streamable Transport

Install and Start

Install @visactor/vchart-mcp-server globally:

npm install -g @visactor/vchart-mcp-server

Start the server:

# For SSE transport (default endpoint: /sse)
mcp-server-chart --transport sse

# For Streamable transport (default endpoint: /streamable)
mcp-server-chart --transport streamable

Then you can access the server at:

  • SSE transport: http://localhost:3001/sse
  • Streamable transport: http://localhost:3001/streamable

Other CLI Options

Options:
  -t, --transport <type>   Transport type (stdio, sse, streamable) [default: stdio]
  -p, --port <port>        Port number for HTTP-based transports [default: 3000]
  -e, --endpoint <path>    Endpoint path for HTTP-based transports [default: /message]
  -h, --help               Show this help message

Examples:
  node index.js                                    # Start with stdio transport
  node index.js -t sse -p 3000                     # Start with SSE transport on port 3000
  node index.js -t sse -p 3000 -e /api/sse         # Start with SSE transport on custom endpoint
  node index.js -t streamable -p 3001 -e /stream   # Start with streamable transport on custom endpoint

Example Usage in AI Conversations

Once configured, you can ask your AI assistant to create charts:

"Create an area chart showing monthly sales data"

The assistant will use the generate_cartesian_chart tool with parameters:
- chartType: "area"
- dataTable: your sales data
- xField: "month"
- yField: "sales"

"Generate a dual-axis chart comparing revenue and user growth"

The assistant will use the generate_dual_axis_chart tool with parameters:
- dataTable: your business data
- xField: "time"
- yField: ["revenue", "userGrowth"]

"Show me an interactive HTML bar chart of quarterly performance"

The assistant will use the generate_cartesian_chart tool with parameters:
- chartType: "bar"
- dataTable: your quarterly data
- xField: "quarter"
- yField: "performance"
- output: "html"

"Create a pie chart of product sales share"

The assistant will use the generate_polar_chart tool with parameters:
- chartType: "pie"
- dataTable: your sales data
- categoryField: "product"
- valueField: "sales"

"Draw a scatter plot of height and weight"

The assistant will use the generate_scatter_chart tool with parameters:
- dataTable: your body data
- xField: "height"
- yField: "weight"
- colorField: "gender" (optional)

"Create a radar chart for team skill assessment"

The assistant will use the generate_polar_chart tool with parameters:
- chartType: "radar"
- dataTable: your assessment data
- categoryField: "skill"
- valueField: "score"

"Generate a Sankey diagram showing data flow"

The assistant will use the generate_sankey_chart tool with parameters:
- dataTable: your flow data
- sourceField: "from"
- targetField: "to"
- valueField: "amount"

"Create a heatmap showing data distribution"

The assistant will use the generate_heatmap_chart tool with parameters:
- dataTable: your distribution data
- xField: "x_category"
- yField: "y_category"
- sizeField: "value"

Development

Prerequisites

  • Node.js version >= 22.7.5

Build

npm run build

Development Mode (Auto Rebuild)

npm run watch

Testing

# Test chart generation
npm run test-tool

# Run MCP Inspector for debugging
npm run inspector

Debugging

Since the MCP server communicates via stdio, debugging can be challenging. Use MCP Inspector for development:

npm run inspector

Testing in AI Editors

To test the MCP server in an AI editor, use the following configuration:

{
  "mcpServers": {
    "vchart-mcp-server": {
      "command": "node",
      "args": ["/Users/path/to/your/project/vchart-mcp-server/build/index.js"]
    }
  }
}

Environment Variables

Private Deployment

Currently, images and HTML generated by vchart-mcp-server are produced via https://vmind.visactor.com/export. For private deployment, set the VIMD_IMAGE_SERVER environment variable to specify your own image generation server.

{
  "mcpServers": {
    "mcp-server-chart": {
      "command": "npx",
      "args": [
        "-y",
        "@visactor/vchart-mcp-server"
      ],
      "env": {
        "VIMD_IMAGE_SERVER": "<YOUR_VIS_REQUEST_SERVER>"
      }
    }
  }
}

License

MIT License

Contributing

Contributions are welcome! Please feel free to submit issues and pull requests.

Related Projects