项目简介

Pinot MCP 服务器是一个基于 Python 和 FastMCP 框架构建的后端应用,旨在通过 Model Context Protocol (MCP) 标准,将 Apache Pinot 的实时分析和元数据查询能力提供给 LLM 客户端(如 Claude Desktop)。它允许 LLM 助手执行 SQL 查询、获取表结构、段信息等,从而协助业务用户进行数据分析和洞察。

主要功能点

  • 数据查询: 执行针对 Apache Pinot 的只读 SQL 查询,获取实时数据。
  • 元数据浏览: 列出所有表、获取表的详细信息、段列表、段元数据详情、索引/列详情以及表配置和模式详情。
  • 模式与配置管理: 支持创建、更新和获取 Pinot 的模式 (Schema) 和表配置。
  • LLM 集成: 通过 MCP 协议与 LLM 客户端无缝集成,将 Pinot 功能转化为 LLM 可调用的工具。
  • 安全认证: 支持 OAuth 认证,确保数据访问的安全性。
  • 多传输协议: 支持 HTTP、Streamable-HTTP 和 Stdio 等多种通信协议。

安装步骤

  1. 安装 uv (推荐): 'uv' 是一个快速的 Python 包安装器,如果尚未安装,请通过以下命令安装:
    curl -LsSf https://astral.sh/uv/install.sh | sh
    # 刷新你的 shell 配置,或者重启终端:
    # source ~/.bashrc
  2. 克隆仓库并安装依赖:
    git clone https://github.com/startreedata/mcp-pinot.git
    cd mcp-pinot
    uv pip install -e .
  3. 配置 Pinot 连接:
    • 将仓库根目录下的 '.env.example' 文件复制为 '.env'。
    • 根据你的 Apache Pinot 集群配置,编辑 '.env' 文件中的 'PINOT_CONTROLLER_URL'、'PINOT_BROKER_HOST'、'PINOT_BROKER_PORT' 等变量。
    • (可选)如果需要 OAuth 认证,请在 '.env' 文件中配置 'OAUTH_ENABLED=true' 以及 'OAUTH_CLIENT_ID', 'OAUTH_CLIENT_SECRET', 'OAUTH_BASE_URL' 等相关变量。
  4. 运行服务器:
    uv --directory . run mcp_pinot/server.py
    服务器默认将在 'http://127.0.0.1:8080/mcp' 运行。

服务器配置(MCP 客户端配置示例)

如果你使用支持 MCP 协议的 LLM 客户端(例如 Claude Desktop),通常需要在其配置文件中添加 MCP 服务器的启动命令和参数。以下是配置示例,请将 '/path/to/uv' 替换为 'uv' 命令的绝对路径,将 '/path/to/mcp-pinot-repo' 替换为你克隆本仓库的绝对路径:

{
  "mcpServers": {
      "pinot_mcp": { // 自定义 MCP 服务器的名称
          "command": "/path/to/uv", // uv 命令的绝对路径
          "args": [ // 启动 MCP 服务器的参数
              "--directory",
              "/path/to/mcp-pinot-repo", // mcp-pinot 仓库的绝对路径
              "run",
              "mcp_pinot/server.py"
          ],
          "env": {
            // 可选:你也可以在这里配置你的 .env 文件中的环境变量,
            // 例如 "PINOT_CONTROLLER_URL": "http://localhost:9000",
            // "PINOT_BROKER_HOST": "localhost" 等。
            // 这样可以在同一个客户端中配置连接到不同的 Pinot 集群。
          }
      }
  }
}

请注意,与 Claude Desktop 集成时,为了确保兼容性,通常建议使用 'stdio' 传输协议。

基本使用方法

一旦 MCP 服务器运行并成功集成到你的 LLM 客户端中,你就可以通过自然语言指令与 Pinot 数据库进行交互。例如,在 LLM 客户端中尝试以下提示:

  • “Can you help me analyse my data in Pinot? Use the Pinot tool and look at the list of tables to begin with.” (请帮助我分析 Pinot 中的数据?使用 Pinot 工具并查看表列表开始。)
  • “Can you do a histogram plot on the GitHub events against time” (你能对 GitHub 事件按时间绘制直方图吗?)

LLM 客户端将调用 Pinot MCP 服务器提供的工具来执行相应的查询和操作,并返回结果。

信息

分类

AI与计算