项目简介

Data Visualization MCP Server 是一个基于 Model Context Protocol (MCP) 构建的后端服务器,旨在为大型语言模型 (LLM) 提供数据可视化的能力。它通过提供 工具 (Tools),允许 LLM 调用服务器的功能,将数据以图表的形式呈现出来,从而帮助用户更直观地理解数据。

主要功能点

  • 数据存储 (save_data 工具): 允许 LLM 将表格数据保存到服务器,以便后续进行可视化操作。
  • 数据可视化 (visualize_data 工具): 允许 LLM 使用 Vega-Lite 语法指定图表,并将之前保存的数据可视化为 PNG 图片或 JSON 格式的 Vega-Lite 规范。
  • 标准 MCP 协议支持: 遵循 MCP 协议标准,易于与各种 MCP 客户端集成。
  • 多种运行方式: 支持使用 'uv'、'Docker' 等多种方式运行。
  • 输出格式可配置: 支持输出 PNG 图片或 JSON 格式的 Vega-Lite 规范。

安装步骤

本仓库无需复杂的安装步骤,可以直接运行。您可以使用 'uv' 或 'Docker' 运行该服务器。

前提条件:

  • 已安装 Python 环境 (如果使用 'uv' 运行)
  • 已安装 Docker (如果使用 Docker 运行)

运行方式:

1. 使用 'uv' 运行 (推荐用于开发和本地测试):

  • 确保您已安装 'uv'。
  • 克隆仓库到本地:
    git clone https://github.com/markomitranic/mcp-vegalite-server.git
    cd mcp-vegalite-server
  • 使用 'uv' 运行服务器:
    uv --directory . run mcp_server_vegalite --output-type png
    uv --directory . run mcp_server_vegalite --output-type text
    '--output-type' 参数用于指定输出格式,'png' 为 PNG 图片,'text' 为 JSON 格式的 Vega-Lite 规范。默认为 'png'。

2. 使用 Docker 运行 (推荐用于部署):

  • 确保您已安装 Docker。
  • 克隆仓库到本地:
    git clone https://github.com/markomitranic/mcp-vegalite-server.git
    cd mcp-vegalite-server
  • 构建 Docker 镜像:
    docker build -t mcp-server-vegalite .
  • 运行 Docker 容器:
    docker run -i --rm mcp-server-vegalite --output-type png
    docker run -i --rm mcp-server-vegalite --output-type text
    '--output-type' 参数用于指定输出格式,'png' 为 PNG 图片,'text' 为 JSON 格式的 Vega-Lite 规范。默认为 'png'。

服务器配置

要将此 MCP 服务器与 MCP 客户端(例如 Claude Desktop)连接,您需要在客户端的配置文件中添加服务器配置信息。以下是 'claude_desktop_config.json' 的配置示例:

{
  "mcpServers": {
    "datavis": {  // 服务器名称,客户端使用此名称引用该服务器
      "command": "uv",  // 启动服务器的命令
      "args": [  // 启动服务器的参数列表
        "--directory",  // 指定工作目录
        "/absolute/path/to/mcp-vegalite-server",  //  替换为 mcp-vegalite-server 仓库的绝对路径
        "run",  // uv 的子命令,用于运行 Python 模块
        "mcp_server_vegalite",  // 要运行的 Python 模块名 (对应 src/mcp_server_vegalite/__init__.py 中的 main 函数)
        "--output-type",  // 服务器参数,指定输出类型
        "png"  //  输出类型设置为 png 图片 (或 "text" 输出 Vega-Lite JSON)
      ]
    }
  }
}

注意:

  • 请将 '/absolute/path/to/mcp-vegalite-server' 替换为您本地 'mcp-vegalite-server' 仓库的实际绝对路径。
  • 您可以根据需要修改 'output-type' 参数为 'png' 或 'text'。
  • 'server name' (这里是 "datavis") 可以自定义,客户端会使用这个名称来调用服务器的功能。

基本使用方法

  1. 启动 MCP 服务器: 根据上述安装步骤启动服务器。
  2. 配置 MCP 客户端: 在 MCP 客户端中配置服务器连接信息,例如 Claude Desktop 的 'claude_desktop_config.json' 文件。
  3. 在 LLM 中使用工具: 在支持 MCP 协议的 LLM 应用中,您可以使用以下工具与该服务器交互:
    • 'save_data' 工具: 用于保存数据,例如:
      {
        "tool_call": {
          "name": "save_data",
          "arguments": {
            "name": "my_data",
            "data": [
              {"x": 1, "y": 2},
              {"x": 2, "y": 5},
              {"x": 3, "y": 3}
            ]
          }
        }
      }
    • 'visualize_data' 工具: 用于可视化已保存的数据,例如:
      {
        "tool_call": {
          "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' 是一个 JSON 字符串,需要符合 Vega-Lite v5 规范,并且 不需要包含 'data' 字段,服务器会自动将指定 'data_name' 的数据注入到 Vega-Lite 规范中。

通过组合 'save_data' 和 'visualize_data' 工具,LLM 可以在对话过程中动态地保存数据并生成可视化图表,从而实现更丰富和直观的交互体验。

信息

分类

AI与计算