Vega-Lite 数据可视化 MCP 服务器使用说明

项目简介

本项目是一个基于 Model Context Protocol (MCP) 构建的数据可视化服务器,旨在为大型语言模型 (LLM) 提供数据可视化的能力。通过此服务器,LLM 可以指示其生成各种图表,从而更有效地呈现和分析数据。该服务器使用 Vega-Lite 这一简洁而强大的可视化语法,并以 MCP 协议与客户端通信,易于集成到支持 MCP 协议的 LLM 应用中。

主要功能点

  • 数据存储: 允许LLM保存数据表格,以便后续的可视化操作。
  • 数据可视化: 支持LLM使用 Vega-Lite 语法指定图表,服务器负责渲染生成图表,并以图片或 JSON 形式返回。
  • 工具接口: 通过 MCP 协议的 Tool 机制,向 LLM 暴露 'save_data' 和 'visualize_data' 两个工具,方便 LLM 调用和控制数据可视化流程。
  • 输出格式: 支持 PNG 图片和 JSON 文本两种输出格式,图片格式以 Base64 编码嵌入 MCP 消息中。

安装步骤

  1. 确保已安装 Python 和 pip: 本服务器基于 Python 开发,需要确保您的环境中已安装 Python 和 pip 包管理器。
  2. 克隆仓库: 使用 git 命令克隆 Vega-Lite Data Visualization Server 仓库到本地:
    git clone https://github.com/isaacwasserman/mcp-vegalite-server.git
    cd mcp-vegalite-server
  3. 安装依赖: 使用 pip 或 uv 安装项目依赖。推荐使用 'uv',速度更快:
    # 如果您安装了 uv
    uv pip install -r requirements.txt
    # 或者使用 pip
    pip install -r requirements.txt

服务器配置

要将此 MCP 服务器与 MCP 客户端(例如 Claude Desktop)配合使用,您需要在客户端的配置文件中添加服务器配置信息。以下是一个示例 'claude_desktop_config.json' 配置片段,您需要根据实际情况修改路径:

{
  "mcpServers": {
    "datavis": {
        "command": "uv",  // 或者 "python" 如果您没有安装 uv
        "args": [
            "--directory",
            "/absolute/path/to/mcp-vegalite-server",  // 替换为您的 mcp-vegalite-server 仓库的绝对路径
            "run",
            "src.mcp_server_vegalite", // 或 "mcp_server_vegalite" 如果您将 src 目录加入 PYTHONPATH
            "--output-type",
            "png"  // 可选 "png" 或 "text",默认为 "png", png 返回图片,text 返回 Vega-Lite JSON 规范
        ]
    }
  }
}

配置参数说明:

  • '"datavis"': 服务器名称,可以自定义,在客户端中用于引用此服务器。
  • '"command"': 启动服务器的命令,这里使用 'uv run' 或 'python -m' 运行 Python 模块。如果您没有安装 'uv',可以使用 '"python"' 并将 '"run"' 替换为 '"-m"',同时将 '"src.mcp_server_vegalite"' 替换为 '"src/mcp_server_vegalite/init.py"' 或 '"mcp_server_vegalite"'.
  • '"args"': 传递给启动命令的参数列表。
    • '"--directory", "/absolute/path/to/mcp-vegalite-server"': 指定服务器代码所在的目录,请务必替换为您的实际仓库路径
    • '"run", "src.mcp_server_vegalite"' 或 '"-m", "src/mcp_server_vegalite/init.py"': 指定要运行的 Python 模块或脚本。
    • '"--output-type", "png"': 可选参数,指定可视化结果的输出类型,'png' 返回 PNG 图片,'text' 返回包含数据的 Vega-Lite JSON 规范。

基本使用方法

  1. 启动服务器: 配置完成后,启动您的 MCP 客户端(如 Claude Desktop),客户端会自动尝试连接到配置的 MCP 服务器。
  2. LLM 调用工具: 在 LLM 交互中,LLM 可以根据需要调用以下工具:
    • 'save_data': 用于保存数据。LLM 需要提供 'name' (数据表名称) 和 'data' (JSON 数组格式的数据)。
    • 'visualize_data': 用于生成可视化图表。LLM 需要提供 'data_name' (已保存的数据表名称) 和 'vegalite_specification' (Vega-Lite JSON 规范,注意无需包含 data 字段,服务器会自动添加)。
  3. 查看结果: 根据 'output_type' 的配置,LLM 将收到 PNG 图片或 Vega-Lite JSON 规范作为工具调用的结果。

示例对话流程 (Claude Desktop):

用户:请帮我可视化一些数据。

Claude: 好的,请先告诉我您要可视化什么数据?

用户:这是我的数据:[{"name": "A", "value": 10}, {"name": "B", "value": 20}, {"name": "C", "value": 15}]

Claude (可能会调用 'save_data' 工具): 我已将数据保存为 'my_data'。您希望如何可视化这些数据?

用户:请用柱状图展示 name 和 value。

Claude (可能会调用 'visualize_data' 工具,并生成 Vega-Lite 规范): 好的,这是一个柱状图的 Vega-Lite 规范... (服务器返回柱状图图片或 JSON)

(用户在 Claude Desktop 中看到生成的柱状图)

注意事项

  • 服务器端数据存储是临时的,服务器重启后数据会丢失。
  • Vega-Lite 规范需要符合 Vega-Lite v5 版本。
  • 请根据实际需求选择合适的 'output_type'。

信息

分类

AI与计算