dbt

官方

dbt(資料建置工具)的官方 MCP 伺服器,提供與 dbt Core/Cloud CLI 的整合、專案中繼資料探索、模型資訊及語意層查詢功能。

你可以用 Dbt MCP 做什麼?

  • 查詢指標 — 請助理透過 query_metrics 執行帶有篩選與分組的指標查詢,或使用 list_metrics 列出已定義的指標。
  • 探索模型血緣 — 使用 get_lineage 要求取得帶有類型、深度與方向篩選條件的有限範圍血緣圖。
  • 檢查模型健康狀態 — 使用 get_model_health 查詢模型的執行狀態、測試結果與上游來源資料的新鮮度。
  • 執行 dbt 指令 — 讓助理對你的專案執行 build、run、test、compile 或 show。
  • 管理工作執行 — 觸發、重試、取消或檢視 dbt Platform 的工作執行及其產出物。
  • 產生樣板 — 使用 generate_model_yaml、generate_source 與 generate_staging_model 建立模型 YAML、來源 YAML 或暫存模型 SQL。

文件

dbt MCP Server

OpenSSF Best Practices

此 MCP(Model Context Protocol)伺服器提供各種工具來與 dbt 互動。你可以使用此 MCP 伺服器,為 AI 代理提供 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 伺服器架構可讓你的代理連線到各種工具。

architecture diagram of the dbt MCP server

工具

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:執行指標查詢,並提供篩選與分組選項。

Discovery

若要進一步了解 dbt Discovery API,請按這裡。

  • get_all_macros:擷取巨集;可選擇依套件篩選或僅傳回套件名稱。
  • get_all_models:擷取所有模型的名稱與描述。
  • get_all_sources:取得所有來源及其新鮮度狀態;可選擇依來源名稱篩選。
  • get_exposure_details:(已棄用 — 請改用 get_node_details)
  • get_exposures:取得所有 exposure(下游儀表板、應用程式或分析)。
  • get_lineage:取得有界限的 lineage 圖,並支援類型、深度與方向篩選。
  • get_macro_details:(已棄用 — 請改用 get_node_details)
  • get_mart_models:擷取所有 mart 模型。
  • 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 資源類型(model、source、exposure、test、seed、snapshot、macro、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:將所選節點從指定狀態複製到目標 schema。
  • compile:從模型/測試/分析產生可執行的 SQL;有助於驗證 Jinja 邏輯。
  • docs:為 dbt 專案產生文件。
  • get_lineage_dev:從本機 manifest.json 擷取 lineage,並支援類型與深度篩選。
  • get_node_details_dev:從本機 manifest.json 擷取節點詳細資料(models、seeds、snapshots、sources)。
  • list:依類型列出 dbt 專案中的資源,並支援選擇器。
  • parse:剖析並驗證專案檔案的語法正確性。
  • run:執行模型以在資料庫中具體化。
  • show:對資料庫執行 SQL 並傳回結果。
  • test:執行測試以驗證資料與模型的完整性。

Admin API

若要進一步了解 dbt Administrative 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 分支、schema 或其他設定。

dbt Codegen

這些工具有助於自動化 dbt 專案檔案的樣板程式碼產生。

  • generate_model_yaml:產生包含欄位的模型 YAML;可選擇繼承上游描述。
  • generate_source:透過檢視資料庫 schema 產生來源 YAML;可選擇包含欄位。
  • generate_staging_model:從來源資料表產生 staging 模型 SQL。

dbt LSP

一組運用 Fusion 引擎進行進階 SQL 編譯與欄位層級 lineage 分析的工具。

  • fusion.compile_sql:透過 dbt Platform 在專案上下文中編譯 SQL。
  • fusion.get_column_lineage:透過 dbt Platform 追蹤欄位層級 lineage。
  • get_column_lineage:在本機追蹤欄位層級 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 Server 中繼資料

這些工具提供 MCP 伺服器本身的相關資訊。

  • get_mcp_server_branch:傳回執行中 dbt MCP 伺服器目前的 git 分支。
  • get_mcp_server_version:傳回 dbt MCP 伺服器目前的版本。

範例

通常,你會將 dbt MCP 伺服器連線到 Claude 或 Cursor 等代理產品。不過,如果你有興趣建立自己的代理,請參閱範例目錄以了解如何開始。

相依性

相依性會固定於特定版本,且不會自動更新。只有與安全性相關的相依性更新會透過自動化提取要求提交。

貢獻

閱讀 CONTRIBUTING.md 以了解如何參與!

請參閱工具輸入與解析後的上下文以了解選擇器宣告與上下文對應器契約。