项目简介
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 等多种通信协议。
安装步骤
- 安装 uv (推荐): 'uv' 是一个快速的 Python 包安装器,如果尚未安装,请通过以下命令安装:
curl -LsSf https://astral.sh/uv/install.sh | sh # 刷新你的 shell 配置,或者重启终端: # source ~/.bashrc - 克隆仓库并安装依赖:
git clone https://github.com/startreedata/mcp-pinot.git cd mcp-pinot uv pip install -e . - 配置 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' 等相关变量。
- 运行服务器:
服务器默认将在 'http://127.0.0.1:8080/mcp' 运行。uv --directory . run mcp_pinot/server.py
服务器配置(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与计算