使用说明
项目简介
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 驱动的数据工程自动化流程。
安装步骤
- 环境准备: 确保已安装 Python 和 pip。建议使用虚拟环境。
- 安装依赖:
pip install fastapi uvicorn pydantic python-dotenv requests - 配置环境变量:
- 创建 '.env' 文件,并设置 Slack Webhook URL (可选,用于 Slack 通知功能):
SLACK_WEBHOOK_URL=your_slack_webhook_url - 如果需要与 Claude 等 AI 工具集成,可能还需要配置相应的 API 密钥,但这部分配置在客户端(例如 'claude_client_example.py')中进行。
- 创建 '.env' 文件,并设置 Slack Webhook URL (可选,用于 Slack 通知功能):
服务器配置
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' 配置方式为准。
基本使用方法
-
启动服务器: 在 'dbt-mcp-server' 仓库根目录下,运行以下命令启动服务器:
uvicorn mcp_dispatcher:app --reload --port 8000服务器将会在 'http://localhost:8000' 启动。
-
发送 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 请求内容)
-
查看响应: 服务器会返回 JSON 格式的响应,指示请求是否成功执行。如果配置了 Slack 通知,还会在 Slack 频道收到 dbt 模型运行状态的通知。
总结
'dbt-mcp-server' 提供了一个基于 HTTP API 的 MCP 服务器,用于简化 dbt 模型的管理和自动化。通过配置客户端并发送符合 MCP 协议的 JSON 请求,可以方便地触发 dbt 操作,并将其集成到 AI 工具或自动化工作流中。
信息
分类
开发者工具