dbt と MCP|モデルメタデータをAIに読ませる運用(概念)

この記事をシェア:
目次 クリックで開く

モダンデータスタック(MDS)の中心的存在である dbt (data build tool)。その最大の資産は、SQLコードそのものではなく、YAMLファイルに蓄積された「データの定義(メタデータ)」です。しかし、多くの現場でこのメタデータは、人間がドキュメントサイト(dbt docs)を眺めるためだけにしか使われてきませんでした。

2024年末、Anthropic社が発表した MCP (Model Context Protocol) は、この状況を一変させます。MCP を活用することで、dbt が持つ「どのテーブルが何を表し、どのカラムにどんなルールがあるか」という文脈(コンテキスト)を、LLM(大規模言語モデル)に直接、かつ構造的に提供することが可能になります。本記事では、dbt と MCP を組み合わせた、AI 時代のデータ運用コンセプトとその具体的な実装方法について解説します。

dbt と MCP(Model Context Protocol)が変えるデータ運用の未来

なぜ今、データエンジニアリングに MCP が必要なのか

従来のデータ運用では、データの仕様を知りたいユーザー(アナリストやビジネスサイド)は、dbt docs を検索するか、データエンジニアに Slack で質問を投げる必要がありました。この「人間による仲介」が、データドリブンな意思決定のボトルネックとなっていました。

MCP は、AI アプリケーションと外部データソースを接続するための標準規格です。dbt プロジェクトを MCP サーバー化することで、AI は「manifest.json」などのメタデータを自律的に読み取り、ユーザーの「昨月の売上推移を、dbt の定義に基づいて集計して」という指示に対して、正しい SQL を生成したり、リネージ(家系図)を解説したりできるようになります。

dbt メタデータを AI の「文脈」として活用するメリット

  • ドキュメント参照の自動化:AI が descriptionmeta タグを理解し、人間がドキュメントを探す手間をゼロにします。
  • SQL 生成精度の飛躍的向上:テーブル構造だけでなく、ビジネスロジック(どのフラグが有効な顧客を指すか等)を AI が把握した状態でコーディングします。
  • セマンティックレイヤーの民主化:dbt Cloud の Semantic Layer と連携すれば、AI がメトリクス定義を解釈し、計算ミスを防ぎます。

こうした AI 活用の基盤となるデータエンジニアリングの考え方は、広告運用の自動化などにも応用されています。例えば、広告×AIの真価を引き出す。CAPIとBigQueryで構築する「自動最適化」データアーキテクチャ で解説しているような、高度なデータ連携においても、メタデータの整理は不可欠なステップです。

MCP (Model Context Protocol) の基礎知識と主要コンポーネント

MCP の仕組み:Host, Client, Server の役割

MCP を理解するには、以下の 3 つの登場人物を整理する必要があります。

  1. MCP Host:AI モデルを動かし、ユーザーと対話する環境(例:Claude Desktop, IDE エクステンション)。
  2. MCP Client:Host と Server の仲介役。プロトコルに従ってリクエストを送信します。
  3. MCP Server:特定のデータソース(今回の場合は dbt)へのアクセスを提供し、AI が利用可能な「ツール」や「リソース」を公開するプログラム。

Anthropic が提唱する次世代 AI 連携規格の仕様

MCP は、JSON-RPC 2.0 ベースのオープンプロトコルです。これにより、開発者は特定の LLM 専用のプラグインを書く必要がなくなり、一度 MCP サーバーを構築すれば、対応するあらゆる AI クライアントから dbt のメタデータを参照できるようになります。詳細は MCP 公式ドキュメント を参照してください。

dbt プロジェクトのメタデータを AI に読み込ませる 3 つのアプローチ

実務において、dbt の情報を AI に渡すには以下の手法が考えられます。

1. manifest.json / catalog.json の直接インポート

最もシンプルな方法です。dbt docs generate コマンドで生成される target/manifest.json を直接 AI のコンテキストウィンドウ(チャット画面)にアップロードします。ただし、ファイルサイズが数MB〜数十MBに及ぶ大規模プロジェクトでは、トークン消費が激しく、現実的ではありません。

2. dbt-mcp-server 等の OSS を活用した動的連携

ローカル、あるいはサーバー上で MCP Server を立ち上げ、必要な情報だけを AI が「オンデマンド」で取得する方法です。AI が「fct_sales テーブルのカラム定義を教えて」とリクエストしたときだけ、サーバーが該当する YAML の内容を返します。現在、Python や TypeScript で実装された OSS の MCP Server が増えています。

3. Semantic Layer (dbt Cloud) API との統合

dbt Cloud を利用している場合、Semantic Layer API を MCP Server 経由で叩くのが最も高度な運用です。AI はメタデータだけでなく、「昨日の売上高」といった実際の集計値まで、ビジネス定義に従って取得できるようになります。この手法は、モダンデータスタックにおけるツール選定 の文脈でも非常に重要視されています。

実務で使える MCP サーバーの選定と比較

dbt と AI を接続するための主要なアプローチを比較表にまとめました。

手法 対象ユーザー メリット デメリット / コスト
Local Manifest (OSS) dbt Core 利用者 導入が容易。ローカルで完結し、追加費用がかからない。 dbt docs の定期的な更新(generate)が必要。
dbt Cloud API 連携 エンタープライズ企業 常に最新のメタデータと同期。権限管理が容易。 dbt Cloud (Team/Enterprise) のライセンス費用。
Custom MCP Server 独自の分析基盤を持つ企業 自社特有のルール(命名規則等)を AI に学習させやすい。 サーバーの維持管理コスト、開発工数。

※料金の詳細は、dbt Labs 公式料金ページ をご確認ください。

【実践】dbt × MCP 連携による AI データアシスタントの構築手順

ここでは、ローカル環境の Claude Desktop を Host とし、dbt Core プロジェクトを AI に読ませる具体的な手順を解説します。

Step 1:dbt プロジェクトのメタデータ生成

まずは、AI が参照するためのソースとなる JSON ファイルを生成します。

dbt docs generate

これにより、target/manifest.jsontarget/catalog.json が作成されます。これらが AI にとっての「地図」になります。

Step 2:MCP Server のインストールと設定

次に、dbt 用の MCP Server 実装(例:mcp-server-dbt)をインストールします。ここでは Python 環境を想定します。

pip install mcp-server-dbt

次に、Claude Desktop の設定ファイル(~/Library/Application Support/Claude/claude_desktop_config.json)を編集し、サーバーを登録します。

{
"mcpServers": {
"dbt": {
"command": "python",
"args": ["-m", "mcp_server_dbt", "--manifest", "/path/to/your/manifest.json"]
}
}
}

Step 3:LLM へのコンテキスト注入とプロンプト制御

Claude Desktop を再起動すると、チャット欄に「ツール」のアイコンが表示されます。AI に対して以下のように問いかけてみてください。

「顧客分析に使えそうなテーブルを manifest から探して、主要なカラムとリレーションを解説して。」

AI は MCP 経由で manifest.json を読み、models セクションから関連するテーブルを抽出して回答します。

よくあるエラーとトラブルシューティング

  • Path Not Foundmanifest.json の絶対パスが間違っているケース。相対パスではなく絶対パスで指定してください。
  • Memory Limit:dbt プロジェクトが巨大すぎる場合、MCP Server が全データを一度に返そうとしてタイムアウトすることがあります。特定の tag が付いたモデルのみを返すようサーバー側でフィルタリングするのが有効です。
  • Python Environment:依存パッケージが不足している場合、Claude Desktop のログからエラーを確認できます。

AI に正しく読ませるための dbt 記述作法(ベストプラクティス)

MCP を導入しても、dbt 側の記述が不十分であれば、AI は的外れな回答をします。AI 時代には、「人間向けのメモ」から「AI 向けのメタデータ」へのシフトが求められます。

description フィールドの具体性と粒度

「顧客 ID」という記述だけでは不十分です。「外部システム A から連携される、全社共通のユニークな顧客識別子。論理削除されたレコードも含む」といった、ビジネスルールとデータの出自(リネージ)を意識した記述を心がけましょう。

tests と tags を活用した信頼性の担保

AI に対して、「trusted タグがついているモデルのみを使用して SQL を書いて」と指示することで、開発途中の未検証なテーブルを AI が参照するのを防ぐことができます。

こうしたデータの整理整頓は、企業のバックオフィス自動化においても共通する課題です。たとえば、経理業務の完全自動化 においても、データの定義(勘定科目や部門コード)が明確であることが、AI やスクリプトによる自動化の成否を分けます。

セキュリティとガバナンス:AI に「見せていいデータ」の境界線

MCP を運用する上で最も注意すべきは、データガバナンスです。

メタデータと実データの分離管理

MCP で AI に渡すべきは、原則として「メタデータ(manifest.json)」のみです。実際のテーブル内の値(レコード)まで AI に渡す設定にする場合は、その AI モデルが情報の二次利用をしない設定(Zero Data Retention 等)になっているかを厳格に確認してください。

PII(個人情報)のマスキングと MCP フィルタリング

dbt の meta タグを使用して、機密情報が含まれるカラムに confidential: true などのフラグを立てておきます。MCP Server 側の実装で、このフラグがついた項目は AI に返さないようにフィルタリングをかけるのが実務的な防衛策です。

もし、社内のセキュリティ要件が厳しく、既存の SaaS 運用に課題を感じている場合は、SaaS コストとオンプレ負債の整理 の記事で紹介しているような、インフラ全体を見直すアーキテクチャの検討が必要かもしれません。

まとめ:AI ネイティブなデータ基盤へ

dbt と MCP の連携は、単なるツールの組み合わせではなく、「データドキュメントを、AI が読み取るための実行可能な仕様書に変える」というパラダイムシフトです。これまでデータエンジニアの頭の中にあった、あるいは検索しづらい YAML ファイルに埋もれていた知識が、MCP を通じて AI に開放されます。

まずは、ローカルの manifest.json を MCP 経由で Claude に読ませることから始めてみてください。AI が自社のデータ構造を完璧に把握し、優秀なデータアナリストとして振る舞い始める瞬間に驚くはずです。その準備として、今日から dbt の description を少しだけ丁寧に書くことが、AI 時代のデータ運用の第一歩となります。

dbt × MCP 運用のための実務チェックリスト

MCP を導入して AI にメタデータを読み取らせる準備が整ったら、次は「AI が正しく推論できる状態か」を以下のチェックリストで確認してください。特に大規模なプロジェクトでは、情報の優先順位付けが運用の成否を分けます。

  • YAML の description 記述率:主要な public モデルや intermediate モデルに、ビジネス用語を用いた説明が含まれているか。
  • Relationship(外部キー)の定義:dbt test の relationships が設定されているか。これにより AI はテーブル間の JOIN 経路を正確に把握できます。
  • meta タグによるフィルタリング:機密性の高いカラムに特定のタグ(例:confidential: true)を付与し、MCP Server 側で露出を制限する設計になっているか。

こうした「データ間のつながり」の定義は、単なる SQL 管理を超えた、組織全体のデータアーキテクチャ設計そのものです。全体像の把握には、SFA・CRM・MA・Web を統合する「データ連携の全体設計図」の考え方も参考になります。

MCP 経由で AI と対話するためのプロンプト実例

環境構築後、AI に対して具体的にどのような指示を出すべきか、実務で頻出するケースをまとめました。MCP サーバーが正常に動作していれば、AI は manifest.json を自律的に検索して回答します。

ユースケース AI への指示(プロンプト)例
モデルの探索 「昨日の広告費とコンバージョン数を集計したい。どのテーブルを結合すればいいか manifest から探して。」
SQL 生成の補助 fct_orders テーブルを使って、リピート顧客のみを抽出する SQL を、dbt のカラム定義に基づいて書いて。」
仕様変更の影響確認 stg_usersemail カラムの定義を変更した場合、下流のどのモデルに影響が出るかリネージを教えて。」

公式ドキュメントと最新仕様の確認

MCP(Model Context Protocol)および dbt のメタデータ構造は、頻繁にアップデートが行われます。実装の際は、必ず以下の公式リソースを確認してください。

※ MCP 対応のクライアント(Claude Desktop 等)のバージョンや、使用する MCP Server(Python/TypeScript 版)によって、利用可能な「ツール」の名称や引数が異なる場合があります。動作しない場合は、各リポジトリの README.md を要確認としてください。

ご相談・お問い合わせ

本記事の内容を自社の状況に当てはめたい場合や、導入・運用の設計を一緒に整理したい場合は、当社までお気軽にご相談ください。担当より折り返しご連絡いたします。

お問い合わせフォームへ

AT
aurant technologies 編集

上場企業からスタートアップまで、数多くのデータ分析基盤構築・AI導入プロジェクトを主導。単なる技術提供にとどまらず、MA/CRM(Salesforce, Hubspot, kintone, LINE)導入によるマーケティング最適化やバックオフィス業務の自動化など、常に「事業数値(売上・利益)」に直結する改善実績多数。

この記事が役に立ったらシェア: