项目简介

该仓库提供了一个基于 Model Context Protocol (MCP) 的服务器实现,旨在简化大型语言模型 (LLM) 与 Dremio 的集成。通过遵循 MCP 标准,它允许支持 MCP 协议的 LLM 客户端(如 Claude Desktop)安全、高效地访问 Dremio 中的数据资源、执行查询以及利用 Dremio 相关的自动化工具。

主要功能点

  • Dremio 数据与功能集成: 作为 LLM 与 Dremio 之间的桥梁,将 Dremio 的数据访问和管理能力封装为 LLM 可调用的工具和资源。
  • 提供标准化工具 (Tools): 注册并执行 Dremio 相关的自动化任务,例如:
    • 运行 SQL 查询获取数据。
    • 获取表或视图的 Schema 信息。
    • 获取表或视图的 Lineage(血缘)信息。
    • 执行 Dremio 集群相关的分析(如查询失败详情、引擎使用报告)。
    • (可选)访问 Prometheus 监控指标。
  • 托管数据资源 (Resources): 以结构化方式向 LLM 暴露 Dremio 中的数据概念或元数据,例如提供 Dremio 系统表的描述或可用于分析的提示信息。
  • 定义 Prompt 模板 (Prompts): 提供针对 Dremio 集成优化的系统 Prompt,指导 LLM 如何更好地利用可用的工具和资源与 Dremio 交互。
  • 支持 MCP 协议通信: 通过标准的 JSON-RPC 协议与 MCP 客户端通信,接收指令并返回结果。

安装步骤

  1. 克隆或下载本仓库到本地机器。
  2. 确保已安装 Python 3.11 或更高版本。
  3. 安装 'uv' 包管理器(如果尚未安装)。
  4. 进入仓库根目录。
  5. 运行以下命令进行基本验证:
    uv run dremio-mcp-server --help
    确认能看到命令帮助信息。

服务器配置

MCP 服务器需要通过配置文件连接 Dremio,LLM 客户端需要配置如何启动和连接该服务器。

  1. MCP 服务器配置 ('config.yaml'): 此文件默认位于 '$HOME/.config/dremioai/config.yaml'。您可以使用命令行工具创建:

    # 使用 uv 运行命令
    uv run dremio-mcp-server config create dremioai \
        --uri <您的 Dremio URI> \
        --pat <您的 Dremio PAT> \
        # 如果是 Dremio Cloud,可能还需要 --project-id <您的项目 ID>
        # --mode FOR_DATA_PATTERNS,FOR_SELF  # 可选:指定服务器模式,默认为 FOR_DATA_PATTERNS
        # --enable-experimental # 可选:启用实验性工具
        # --oauth-client-id <您的 OAuth 应用 ID> # 可选:配置 OAuth2 登录

    或者手动创建编辑 YAML 文件,示例如下:

    # config.yaml
    dremio:
        uri: https://<您的 Dremio 地址> # Dremio 连接地址
        pat: <您的 PAT> # Dremio 个人访问令牌,也可以使用 @ 文件路径的方式引用
        # project_id: <您的 Dremio Cloud 项目 ID> # 如果是 Dremio Cloud 则需要
        # enable_experimental: false # 是否启用实验性工具
        # oauth2: # 可选:OAuth2 配置
        #     client_id: <您的 OAuth 应用 ID>
        #     # refresh_token: <刷新令牌> # 登录后自动更新
        #     # dremio_user_identifier: <用户标识符> # 登录后自动更新
        #     # expiry: <令牌过期时间> # 登录后自动更新
    tools:
        server_mode: FOR_DATA_PATTERNS # 服务器模式,可选值及其组合:FOR_SELF, FOR_PROMETHEUS, FOR_DATA_PATTERNS, EXPERIMENTAL
    # prometheus: # 可选:Prometheus 配置
    #     uri: <Prometheus URI>
    #     token: <Prometheus Token>

    根据您的 Dremio 环境和需求修改此文件。

  2. LLM 客户端配置 (如 Claude Desktop): 编辑 Claude Desktop 的配置文件(macOS: '~/Library/Application Support/Claude/claude_desktop_config.json',Windows: '%APPDATA%\Claude\claude_desktop_config.json')。 在 JSON 文件中找到或添加 'mcpServers' 部分,并添加一个条目来配置 Dremio MCP 服务器。配置内容指示客户端如何启动服务器进程:

    {
      // ... 其他配置
      "mcpServers": {
        "Dremio": { // 服务器名称,显示在客户端界面
          "command": "<uv 可执行文件路径>", // 启动服务器的命令,通常是 uv
          "args": [ // 传递给 command 的参数
            "run",
            "--directory", "<您的 dremio-mcp 仓库路径>", // 指向您克隆仓库的根目录
            "dremio-mcp-server",
            "run" // 运行 MCP 服务器主程序
            // 可选:如果您的 config.yaml 不在默认位置,添加 "--cfg", "<您的 config.yaml 文件路径>"
          ]
        }
        // ... 其他 MCP 服务器配置
      }
      // ... 其他配置
    }

    请将 '<uv 可执行文件路径>' 和 '<您的 dremio-mcp 仓库路径>' 替换为您系统上的实际路径。

基本使用方法

完成安装和配置后:

  1. 启动您的 LLM 客户端(如 Claude Desktop)。
  2. 根据客户端界面提示,选择或启用配置好的 "Dremio" MCP 服务器。客户端会自动按照配置的 'command' 和 'args' 启动 Dremio MCP 服务器进程。
  3. 一旦服务器启动并与 Dremio 建立连接(可能需要输入 Dremio 凭证或进行 OAuth 登录),您就可以在 LLM 客户端中通过对话等方式使用 Dremio 相关的工具和访问 Dremio 数据了。尝试向 LLM 提问关于 Dremio 数据、表结构或集群使用情况的问题。

信息

分类

AI与计算