dbt-labs/dbt-mcp
A MCP (Model Context Protocol) server for interacting with dbt.
dbt-MCP Server - dbtプロジェクトとAIエージェントをつなぐ架け橋
概要
- オープンソースのサーバーであり、Model Context Protocol (MCP) を実装しています。RPCスタイルの豊富なツールを公開しており、外部プログラム(多くの場合、LLMを搭載したエージェント)がdbtプロジェクト(モデル、ソース、メトリクス、セマンティックレイヤー、ジョブ実行、さらには自然言語からのSQL生成)を照会・操作できるようにします。
- サーバーは dbt Core(ローカル)、dbt Fusion、または dbt Platform に対して実行できるため、ローカル開発でもマネージドクラウド環境でも、同じエージェントコードが機能します。
AI/MLワークフローにとって重要な理由
- 最新のデータ中心のAIエージェントにはコンテキストが必要です。それは、ウェアハウスのスキーマ、メトリクスの定義、モデルのリネージなどです。dbt-MCPは、そのコンテキストを構造化されたプログラム的な方法でエージェントに提供します。
- また、エージェントが行動できるようにもします。dbtコマンドの実行、ジョブのトリガー、コンパイル済みSQLの取得、コード生成ヘルパーを使用した新しいモデルファイルの作成などが可能です。
主な機能(ツールカテゴリ別)
| カテゴリ | 注目のツール | エージェントができること |
|---|---|---|
| SQL | execute_sql, text_to_sql |
dbt Platformで任意のSQLを実行するか、プロジェクトのモデルカタログを使用して自然言語プロンプトからSQLを生成します。 |
| セマンティックレイヤー | list_metrics, query_metrics, get_dimension_values など |
dbtセマンティックレイヤーを検査してクエリします。メトリクス定義、コンパイル済みSQL、ディメンション値を取得します。 |
| ディスカバリー | get_all_models, get_lineage, get_node_details, search (アルファ) |
dbt DAG全体を参照し、任意のリソース(モデル、ソース、エクスポージャー、マクロなど)のメタデータを取得し、プロジェクト全体でセマンティック検索を実行します。 |
| dbt CLI | run, build, test, compile, list など |
通常のdbtコマンドをリモートで実行し、エージェントがモデルを具体化したり、テストを実行したり、ドキュメントを生成したりできるようにします。 |
| 管理API | trigger_job_run, cancel_job_run, list_jobs, get_job_run_details など |
dbt Cloudのジョブを管理します。開始、監視、再試行、キャンセルをプログラムで行います。 |
| コード生成 | generate_model_yaml, generate_source, generate_staging_model |
既存のウェアハウスメタデータからボイラープレートのdbtファイル(YAML、ソース定義、ステージングモデル)を自動生成します。 |
| dbt LSP | fusion.compile_sql, fusion.get_column_lineage, get_column_lineage |
Fusionエンジン(またはローカルdbt-LSP)を使用して、完全なJinjaコンテキストでSQLをコンパイルし、列レベルのリネージを追跡します。 |
| 製品ドキュメント | search_product_docs, get_product_doc_pages |
docs.getdbt.comからドキュメントを取得します。公式ガイダンスを引用する必要があるエージェントに役立ちます。 |
| サーバーメタデータ | get_mcp_server_version, get_mcp_server_branch |
実行中のサーバー自体をイントロスペクトします。 |
AI搭載データアシスタントの一般的なワークフロー
- MCPサーバーを起動します(Dockerイメージまたは
python -m dbt_mcp)。 - アシスタント(例:Claude、Cursor、カスタムLLMチェーン)がMCPクライアントライブラリ(
mcpbCLI)を介して接続し、dbt Platformアカウントに認証します。 - エージェントは
list_modelsをクエリして、データウェアハウスのメンタルモデルを構築します。 - ユーザーが「先月のアクティブな顧客は何人でしたか?」と尋ねます。
- エージェントは
text_to_sql(またはquery_metricsでメトリクスクエリを作成)を呼び出して正確なSQLを取得し、execute_sqlで実行して結果を返します。 - ユーザーが新しいメトリクスを希望する場合、エージェントは
generate_model_yamlとrunを呼び出してそれを具体化できます。ユーザーがdbtコードを書く必要はありません。
はじめに
- インストール – Dockerイメージ(
docker pull ghcr.io/dbt-labs/dbt-mcp)をプルするか、リポジトリからPythonパッケージをインストールします。 - MCPバンドルを入手 – 最新リリースから
dbt-mcp.mcpbをダウンロードし、AnthropicのmcpbCLIでインストールします(READMEリンクを参照)。 - サーバーを実行 –
dbt-mcp serve --port 8000(またはドキュメントに記載されているDockerコマンド)。 - 接続 –
mcpbクライアントまたは任意の言語固有のSDKを使用して、上記のツールを呼び出します。 - 例を探索 – リポジトリの
examples/フォルダには、完全なラウンドトリップを示す最小限のPythonスクリプトが含まれています。接続、モデルの一覧表示、SQLの生成、実行です。
誰が使うべきか
- 最新のdbtメタデータを必要とするチャットまたは音声アシスタントを構築しているデータ中心のAI製品チーム。
- セルフサービスのレポート用に内部ボットにdbtプロジェクトを公開したいアナリティクスエンジニア。
- データモデルを深く理解するエージェントにターンキーな方法を探しているカスタムエージェントの開発者(例:LangChainツール)。
制限事項/注意事項
- サーバーは実験的であり、一部のツールは非推奨とマークされており、将来のリリースで削除される可能性があります。
- CLIタイプのツール(
build,run,trigger_job_run)は本番データを変更できます。信頼できるエージェントにのみアクセスを許可してください。 searchツールはアルファであり、まだ一般には利用できません。
関連情報
- 公式ドキュメント: https://docs.getdbt.com/docs/dbt-ai/about-mcp
- 紹介ブログ記事: https://docs.getdbt.com/blog/introducing-dbt-mcp-server
- MCPバンドルCLI: https://github.com/modelcontextprotocol/mcpb
上記の情報はすべてリポジトリのREADMEから直接取得したものです。追加の機能は推測されていません。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト