使用说明

项目简介

dbt MCP Server 是一个轻量级的 MCP(Model Context Protocol)服务器,专注于为 dbt (data build tool) 提供统一的接口。它允许用户通过 JSON 格式的请求,以标准化的方式触发 dbt 模型的运行、测试等操作。该服务器旨在简化 dbt 的使用,并方便集成到 AI 工具(如 Claude)中,实现基于自然语言的 dbt 工作流自动化。

主要功能点

  • dbt 模型管理: 通过 JSON 请求触发 dbt 模型的运行。
  • 统一 JSON 接口: 使用结构化的 JSON 格式进行请求和响应,符合 MCP 协议的设计理念。
  • HTTP API: 提供 HTTP API 接口 '/trigger' 接收 MCP 请求。
  • Slack 通知: 集成 Slack 通知,在 dbt 模型运行成功或失败时发送消息提醒。
  • 易于扩展: 设计简洁,方便根据需求扩展功能。
  • 兼容 AI 工具: 特别提到兼容 Claude 等 AI 工具,方便构建 AI 驱动的数据工程自动化流程。

安装步骤

  1. 环境准备: 确保已安装 Python 和 pip。建议使用虚拟环境。
  2. 安装依赖:
    pip install fastapi uvicorn pydantic python-dotenv requests
  3. 配置环境变量:
    • 创建 '.env' 文件,并设置 Slack Webhook URL (可选,用于 Slack 通知功能):
      SLACK_WEBHOOK_URL=your_slack_webhook_url
    • 如果需要与 Claude 等 AI 工具集成,可能还需要配置相应的 API 密钥,但这部分配置在客户端(例如 'claude_client_example.py')中进行。

服务器配置

MCP 客户端需要配置服务器的连接信息。对于 'dbt-mcp-server',由于它提供 HTTP API 接口,客户端需要配置服务器的 URL。

以下是一个 MCP 客户端(例如 'claude_client_example.py')中 'mcp_servers.json' 文件的配置示例,用于连接到 'dbt-mcp-server':

{
  "mcpServers": {
    "dbt": {  // 服务器名称,客户端根据此名称调用
      "url": "http://localhost:8000/trigger" // dbt-mcp-server 的 HTTP API 端点 URL
    }
  }
}

配置参数说明:

  • 'dbt': 服务器名称,可以自定义,客户端在发送请求时会使用这个名称来指定目标服务器。
  • 'url': 重要 - 这是 'dbt-mcp-server' 提供的 HTTP API 的完整 URL。客户端将向这个 URL 发送 POST 请求来触发 dbt 操作。 请确保 URL 的主机名和端口与 'dbt-mcp-server' 运行的地址一致(默认本地运行时为 'http://localhost:8000')。

注意: 'dbt-mcp-server' 本身是一个 HTTP 服务器,不需要配置 'command' 和 'args' 启动命令。 客户端只需要知道服务器的 HTTP API 地址即可。 仓库中 'README.md' 的 'Usage' 部分提供的 'mcp_servers.json' 配置示例 (fetch server) 与 'dbt-mcp-server' 的实际运行方式不符,可能是一个错误的或未完成的示例。 请以 HTTP API 的 'url' 配置方式为准。

基本使用方法

  1. 启动服务器: 在 'dbt-mcp-server' 仓库根目录下,运行以下命令启动服务器:

    uvicorn mcp_dispatcher:app --reload --port 8000

    服务器将会在 'http://localhost:8000' 启动。

  2. 发送 MCP 请求 (以 HTTP POST 请求为例): 客户端(例如 AI 工具或自定义客户端)需要构建符合 MCP 协议的 JSON 请求,并将其作为 HTTP POST 请求的 body 发送到服务器的 '/trigger' 端点 ('http://localhost:8000/trigger')。

    MCP 请求示例 (JSON 格式):

    {
      "mcp_version": "1.0",
      "tool": "dbt",
      "action": "run_model",
      "payload": {
        "model_name": "your_dbt_model_name",
        "flags": {
          "full_refresh": false,
          "threads": 4
        },
        "variables": {
          "target_date": "2024-07-08"
        }
      },
      "metadata": {
        "requested_by": "user_name",
        "request_id": "unique_request_id"
      }
    }
    • 'mcp_version': MCP 协议版本。
    • 'tool': 指定要调用的工具,这里是 "dbt"。
    • 'action': 指定要执行的动作,这里是 "run_model" (运行 dbt 模型)。
    • 'payload': 包含工具执行所需的参数,例如 'model_name' (dbt 模型名称), 'flags' (dbt 命令行 flags), 'variables' (dbt 变量)。
    • 'metadata': 可选的元数据,例如请求者信息、请求 ID 等。

    使用 'curl' 发送请求示例:

    curl -X POST -H "Content-Type: application/json" -d @mcp_request.json http://localhost:8000/trigger

    (假设 'mcp_request.json' 文件包含上述 JSON 请求内容)

  3. 查看响应: 服务器会返回 JSON 格式的响应,指示请求是否成功执行。如果配置了 Slack 通知,还会在 Slack 频道收到 dbt 模型运行状态的通知。

总结

'dbt-mcp-server' 提供了一个基于 HTTP API 的 MCP 服务器,用于简化 dbt 模型的管理和自动化。通过配置客户端并发送符合 MCP 协议的 JSON 请求,可以方便地触发 dbt 操作,并将其集成到 AI 工具或自动化工作流中。

信息

分类

开发者工具