mcpField
D
dbt MCP Server

dbt MCP Server

本地服务
github.com/dbt-labs数据与分析6141 天前更新

关于 dbt MCP Server

dbt MCP Server 为 AI Agent 提供工具,用于操作 dbt Core、dbt Fusion 和 dbt Platform 项目。其工具涵盖 SQL、语义指标、项目发现、CLI 操作、任务管理、代码生成与文档。

主要功能

  1. 01执行 SQL 并查询语义指标
  2. 02检查模型、来源和血缘
  3. 03运行 dbt CLI 命令与测试
  4. 04管理 Platform 任务和运行记录
  5. 05生成模型与来源文件
  6. 06搜索并获取 dbt 文档

适用场景

  1. 01探索项目模型及其依赖
  2. 02结合项目上下文从自然语言生成 SQL
  3. 03检查模型健康状态和任务运行错误
  4. 04生成暂存模型及 YAML 文件

MCP 相关

向 MCP 客户端提供 dbt 项目、SQL、CLI、Semantic Layer、Platform 管理、代码生成和文档工具。它也为兼容客户端发布实验性的 MCP Bundle。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

dbt MCP 服务

OpenSSF Best Practices

此 MCP(模型上下文协议)服务提供了各种用于与 dbt 交互的工具。你可以使用此 MCP 服务,为 AI Agent 提供 dbt Core、dbt Fusion 和 dbt Platform 项目的上下文。

阅读我们的文档以了解更多信息。这篇博客文章详细介绍了 dbt MCP 服务的功能。

实验性 MCP Bundle

我们会在每次发布时提供一个实验性的 Model Context Protocol Bundle(dbt-mcp.mcpb),以便支持 MCPB 的客户端无需额外设置即可导入此服务。请从最新版本的资源中下载此 Bundle,并按照 Anthropic 的 mcpb CLI 文档安装或检查它。

反馈

如果你有意见或疑问,请创建 GitHub Issue,或加入社区 Slack 的 #tools-dbt-mcp 频道与我们交流。

架构

dbt MCP 服务的架构允许你的 Agent 连接到各种工具。

dbt MCP 服务架构图

工具

SQL

用于在 dbt Platform 基础设施上执行和生成 SQL 的工具。

  • execute_sql:在 dbt Platform 基础设施上执行 SQL,并支持 Semantic Layer。
  • text_to_sql:使用项目上下文,将自然语言转换为 SQL。
Semantic Layer

如需进一步了解 dbt Semantic Layer,请点击此处。

  • get_dimension_values:获取某个维度的不同取值;可选择限定到特定指标。
  • get_dimensions:获取指定指标的维度。
  • get_entities:获取指定指标的实体。
  • get_metrics_compiled_sql:返回指标编译后的 SQL,但不执行查询。
  • list_metrics:检索所有已定义的指标。
  • list_saved_queries:检索所有已保存的查询。
  • query_metrics:执行指标查询,并支持筛选和分组选项。
发现

如需详细了解 dbt Discovery API,请点击此处。

  • get_all_macros:获取宏;可选择按 package 筛选,或仅返回 package 名称。
  • get_all_models:获取所有模型的名称和描述。
  • get_all_sources:获取所有数据源及其新鲜度状态;可选择按数据源名称筛选。
  • get_exposure_details:(已弃用 — 请改用 get_node_details)
  • get_exposures:获取所有 exposure(下游仪表板、应用或分析)。
  • get_lineage:获取有界血缘图,并可按类型、深度和方向筛选。
  • get_macro_details:(已弃用 — 请改用 get_node_details)
  • get_mart_models:获取所有集市模型。
  • get_model_children:(已弃用 — 请改用 get_lineage)
  • get_model_details:(已弃用 — 请改用 get_node_details)
  • get_model_health:获取健康状况信号:运行状态、测试结果和上游数据源的新鲜度。
  • get_model_parents:(已弃用 — 请改用 get_lineage)
  • get_model_performance:获取模型的执行历史;可选择包含测试结果。
  • get_node_details:获取任意 dbt 资源类型(模型、数据源、exposure、测试、seed、snapshot、宏、semantic_model)的完整详情。
  • get_related_models:使用语义搜索查找相似模型。
  • get_seed_details:(已弃用 — 请改用 get_node_details)
  • get_semantic_model_details:(已弃用 — 请改用 get_node_details)
  • get_snapshot_details:(已弃用 — 请改用 get_node_details)
  • get_source_details:(已弃用 — 请改用 get_node_details)
  • get_test_details:(已弃用 — 请改用 get_node_details)
  • search:[Alpha] 搜索 dbt 项目中的资源(通常不开放使用)。
  • search_public_mesh_models:跨项目查找公开的 dbt Mesh 模型,并确认生产方身份,以便构建经过验证的跨项目 ref(仅适用于多项目配置)。
dbt CLI

通过 MCP 工具让客户端使用 dbt 命令,可能会修改数据模型、数据源和数据仓库对象。仅当你信任该客户端并了解潜在影响时,才继续操作。

  • build:按 DAG 顺序执行模型、测试、快照和 seed。
  • clone:将指定 state 中选定的节点克隆到目标 schema。
  • compile:从模型、测试和分析生成可执行 SQL;可用于验证 Jinja 逻辑。
  • docs:为 dbt 项目生成文档。
  • get_lineage_dev:从本地 manifest.json 获取血缘,并可按类型和深度筛选。
  • get_node_details_dev:从本地 manifest.json 获取节点详情(模型、seed、快照、数据源)。
  • list:按类型列出 dbt 项目中的资源,并支持选择器。
  • parse:解析并验证项目文件,检查语法是否正确。
  • run:执行模型,将其物化到数据库中。
  • show:对数据库执行 SQL 并返回结果。
  • test:运行测试,验证数据和模型的完整性。
管理 API

如需进一步了解 dbt 管理 API,请点击此处。

  • cancel_job_run:取消正在运行的作业。
  • get_job_details:获取作业配置,包括触发器、计划和 dbt 命令。
  • get_job_run_artifacts:下载作业运行的指定工件;对于较大的工件,会返回提示信息,建议使用 jq_filter 重试;支持使用 jq 过滤以提取目标内容。
  • get_job_run_details:获取运行详情,包括状态、时间、步骤和工件。
  • get_job_run_error:获取作业运行的错误和/或警告详情;可选择包含警告,或仅显示警告。
  • list_job_run_artifacts:列出作业运行的可用工件。
  • list_jobs:列出 dbt Platform 账户中的作业;可选择按项目或环境筛选。
  • list_jobs_runs:列出作业运行;可选择按作业、状态筛选,或按字段排序。
  • list_projects:列出 dbt Platform 账户中的所有项目。
  • retry_job_run:重试失败的作业运行。
  • trigger_job_run:触发作业运行;可选择覆盖 git 分支、架构或其他设置。
dbt Codegen

这些工具有助于自动生成 dbt 项目文件中的样板代码。

  • generate_model_yaml:生成包含列的模型 YAML;可选择继承上游描述。
  • generate_source:通过检查数据库架构生成源 YAML;可选择包含列。
  • generate_staging_model:根据源表生成暂存模型 SQL。
dbt LSP

一组利用 Fusion 引擎进行高级 SQL 编译和列级沿袭分析的工具。

  • fusion.compile_sql:通过 dbt Platform 在项目上下文中编译 SQL。
  • fusion.get_column_lineage:通过 dbt Platform 追踪列级沿袭。
  • get_column_lineage:在本地追踪列级沿袭(需要通过 dbt Labs VSCE 使用 dbt-lsp)。
产品文档

用于搜索和获取 docs.getdbt.com 官方 dbt 文档内容的工具。

  • get_product_doc_pages:按路径或 URL 获取一个或多个 docs.getdbt.com 页面中的完整 Markdown 内容。
  • search_product_docs:在 docs.getdbt.com 中搜索与查询匹配的页面;按相关性返回标题、URL 和描述。使用 get_product_doc_pages 获取完整内容。
MCP 服务元数据

这些工具提供 MCP 服务本身的信息。

  • get_mcp_server_branch:返回正在运行的 dbt MCP 服务的当前 git 分支。
  • get_mcp_server_version:返回 dbt MCP 服务的当前版本。

示例

通常,你会将 dbt MCP 服务连接到 Claude 或 Cursor 等 Agent 产品。不过,如果你有兴趣创建自己的 Agent,请查看示例目录以了解如何开始。

依赖项

依赖项固定为特定版本,不会自动更新。只有与安全相关的依赖项更新才会通过自动化拉取请求提交。

贡献

阅读 CONTRIBUTING.md,了解如何参与贡献!

请参阅工具输入和解析后的上下文,了解选择器声明和上下文映射器契约。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。