使用说明

项目简介

本项目实现了一个基于 Model Context Protocol (MCP) 的服务器,旨在为大型语言模型 (LLM) 提供数据可视化功能。该服务器允许LLM通过调用工具,将数据保存到服务器,并使用 Vega-Lite 语法生成数据可视化图表。

主要功能点

  • 数据保存 (save_data): 允许LLM将表格数据以命名的形式保存在服务器端,为后续可视化做准备。
  • 数据可视化 (visualize_data): 接收LLM提供的 Vega-Lite 规范和已保存的数据名称,在服务器端渲染生成图表。支持返回 PNG 图片 (base64 编码) 或包含 Vega-Lite 规范的文本结果。

安装步骤

  1. 克隆仓库:
    git clone https://github.com/MCP-Mirror/isaacwasserman_mcp-vegalite-server.git
    cd isaacwasserman_mcp-vegalite-server
  2. 创建并激活虚拟环境 (推荐):
    python3 -m venv venv
    source venv/bin/activate  # 或 venv\Scripts\activate (Windows)
  3. 安装依赖:
    pip install -e .

服务器配置

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

{
  "mcpServers": {
    "datavis": {
        "command": "uv",
        "args": [
            "--directory",
            "/absolute/path/to/mcp-vegalite-server",  // 替换为您的 mcp-vegalite-server 仓库的绝对路径
            "run",
            "mcp_server_vegalite",
            "--output-type",  // 输出类型,可选 "png" 或 "text"
            "png"
        ]
    }
  }
}

配置参数说明:

  • '"datavis"': 服务器名称,可以自定义。
  • '"command": "uv"': 启动命令,这里使用 'uv run' 运行 Python 包。确保您的环境中已安装 'uv' (可以使用 'pip install uv' 安装)。您也可以根据实际情况调整为 'python' 或其他 Python 运行方式。
  • '"args"': 启动参数列表。
    • '"--directory", "/absolute/path/to/mcp-vegalite-server"': 指定服务器代码所在的目录,请务必替换为您的 'mcp-vegalite-server' 仓库的绝对路径。
    • '"run", "mcp_server_vegalite"': 使用 'uv run' 运行 'mcp_server_vegalite' 包,这会执行 'src/mcp_server_vegalite/init.py' 中的 'main' 函数。
    • '"--output-type", "png"': 设置服务器输出类型为 PNG 图片。您可以将其更改为 '"text"' 以获取包含 Vega-Lite 规范的文本输出。

基本使用方法

  1. 启动服务器: 根据您在 'claude_desktop_config.json' 中配置的命令,启动 MCP 服务器。例如,如果使用 Claude Desktop,它会在启动时自动尝试连接并启动配置的 MCP 服务器。
  2. 客户端调用工具: 在支持 MCP 协议的 LLM 客户端中,您可以指示 LLM 使用 'save_data' 工具保存数据,并使用 'visualize_data' 工具生成可视化图表。

工具使用示例:

  • save_data 工具:

    {
      "tool_calls": [
        {
          "id": "call_id_1",
          "type": "function",
          "function": {
            "name": "save_data",
            "arguments": {
              "name": "my_data",
              "data": [
                {"x": 1, "y": 2},
                {"x": 2, "y": 5},
                {"x": 3, "y": 3}
              ]
            }
          }
        }
      ]
    }
  • visualize_data 工具:

    {
      "tool_calls": [
        {
          "id": "call_id_2",
          "type": "function",
          "function": {
            "name": "visualize_data",
            "arguments": {
              "data_name": "my_data",
              "vegalite_specification": "{\"mark\": \"line\", \"encoding\": {\"x\": {\"field\": \"x\", \"type\": \"quantitative\"}, \"y\": {\"field\": \"y\", \"type\": \"quantitative\"}}}"
            }
          }
        }
      ]
    }

注意:

  • 'vegalite_specification' 参数需要提供符合 Vega-Lite v5 规范的 JSON 字符串。请确保 Vega-Lite 规范的正确性。
  • 数据必须先使用 'save_data' 工具保存,才能在 'visualize_data' 工具中使用。
  • 服务器日志文件 'logs/mcp_vegalite_server.log' 记录了服务器运行日志,可用于问题排查。

信息

分类

AI与计算