業界・業務から探す
導入目的・課題から探す
データ・AIについて学ぶ
News
Hakkyについて
ウェビナーコラム
◆トップ【データ基盤】
データハブとは
Ajust
データの保守運用
AI

執筆者:Handbook編集部

今すぐ始めるdbt-mcpサーバ:初心者向け導入と活用方法

はじめに

この記事では、dbtプロジェクトをAI(LLM)から操作するための仕組みとして、

  • dbt-mcpサーバー(LLMとdbtをつなぐMCP準拠のミドルウェア)
  • Cline(VSCodeでAIアシスタントと連携できる拡張機能)

を使い、BigQueryとの疎通確認やモデル作成を自動化する手順を紹介します。

Clineから自然言語のプロンプトを送信し、dbt-mcpサーバを介してdbtコマンドを実行することで、AIによるSQLの生成やモデルの更新、デバッグなどを効率的に行えるようになります。 また、この記事はすでにdbt開発経験があり、AI駆動開発に興味があるエンジニアを対象としています。

dbtに関連する記事はこちらをご参照ください。

dbt-mcpとは

dbt MCP Serverは、Anthropicが提唱する Model Context Protocol(MCP) に準拠したサーバーで、dbtプロジェクト(モデル、ドキュメント、リネージ、セマンティックレイヤーなど)と、Claude Desktop ProjectsやCursorなどのMCP対応クライアントを接続する役割を果たします。 このサーバーは、LLM(大規模言語モデル)やAIエージェントがデータの構造や意味を理解し、自然言語での質問に対して正確な回答を提供できるように設計されています。

主な機能

  1. データの発見
  • dbtプロジェクト内のデータモデルやリネージ情報をAIが探索し、どのようなデータが存在するかを把握できます
  1. データクエリの実行
  • dbtのセマンティックレイヤーを活用して、信頼性の高いメトリクスベースのレポートを生成
  • SQLクエリを直接実行し、柔軟なデータ探索や開発が可能
  1. dbtコマンドの実行
  • AIエージェントがdbt CLIを通じてプロジェクトのビルドや検証などの操作を実行できます
warning
注意

セキュリティと注意点 本番環境のデータにアクセスさせる前に、サンドボックス環境でのテストを推奨します。 AIエージェントには読み取り専用のアクセス権限を付与し、誤操作やデータ漏洩のリスクを最小限に抑えることが重要です。

Clineとは

Clineはプログラミングの開発作業をサポートしてくれる、VSCodeの拡張機能です。 ユーザーの命令に対して、Clineが適切な処理を加えてClaudeやChatGPTといったAIアシスタントと連携することで次のことを自動で実行してくれます。

  • フォルダ・ファイルの解析: プロジェクトのフォルダとその中に存在するファイルを読み込み解析する
  • コード生成・編集: 命令の内容から必要な情報を抽出し、コードの生成から修正を行う
  • バグ修正: コード実行時のエラー内容から修正案を提示
  • ターミナル操作: ターミナルを使用したコマンドの実行が必要な場合、実行してくれる

Clineに関連する記事はこちらをご参照ください。

dbt-mcpサーバのセットアップと動作確認

ここからは、実際にdbt-mcpサーバをセットアップし、簡単なdbt debugコマンドをCline経由でdbt-coreへ実行させてみます。 今回の動作確認は以下の実行環境と前提に記載の環境で進めます。

実行環境と前提

  • dbt-coreを利用している
  • macOS環境で作業を行う
  • すでにBigQuery向けのdbt開発を行っている
  • LLMとしてOpenAIを使用する
  • プロンプトはClineから実行する

dbt-mcpのセットアップ

uvのインストール

Rustで書かれた、非常に高速なPythonパッケージマネージャであるuvをmacOSにインストールします。

curl -LsSf https://astral.sh/uv/install.sh | sh
info
備考

pipをuvの代わりに使用することについてですが、dbt-mcpはuvによるインストールを前提として構成されているため、pipでインストールを行う場合は動作が保証されず、自己責任での利用となります。

もしPythonがmacにインストールされていない場合は次のコマンドでインストールしておきます。

uv python install

dbt-mcpサーバーの設定

macの任意のディレクトリに移動し、dbt-mcpリポジトリをcloneします。

git clone https://github.com/dbt-labs/dbt-mcp.git
cd dbt-mcp

taskコマンドを実行し、依存関係をインストールします。

task install

もしtaskコマンドがインストールされていない場合、以下コマンドでインストールしてください。

brew install go-task/tap/go-task

次に、dbt-mcpサーバーに設定する環境変数を設定します。

cp .env.example .env

.envファイルを以下のように設定します。

DBT_HOST=""
DBT_PROD_ENV_ID=""
DBT_DEV_ENV_ID=""
DBT_USER_ID=""
DBT_TOKEN=""
DBT_PROJECT_DIR=/Users/myuser/workspace/dbt/project_dbt
DBT_PATH=/Users/myuser/workspace/.venv/bin/dbt
MULTICELL_ACCOUNT_PREFIX=""
DISABLE_SEMANTIC_LAYER=true
DISABLE_DISCOVERY=true
DISABLE_REMOTE_TOOLS=true

今回の環境変数はdbt coreの利用を想定しているため、設定が必要な項目は次の5つです。

  • DBT_PROJECT_DIR
  • DBT_PATH
  • DISABLE_SEMANTIC_LAYER
  • DISABLE_DISCOVERY
  • DISABLE_REMOTE_TOOLS

各パラメータについては以下を参照ください。

パラメータ名説明dbt coreに必要dbt cloudに必要
DBT_HOSTdbtクラウドインスタンスのホスト名です。
マルチセルを使用している場合は、ここにACCOUNT_PREFIXを含めないでください
DBT_PROD_ENV_IDdbt cloud本番環境ID
DBT_DEV_ENV_IDdbt cloud開発環境ID
DBT_USER_IDdbt cloudのユーザID
DBT_TOKENdbt cloudの個人アクセストークンまたはサービストークン
セマンティックレイヤーを使用する場合、サービストークンが必要です
DBT_PROJECT_DIRdbtプロジェクトのリポジトリがローカルにホストされている場所へのパス
これは/Users/firstnamelastname/reponameのようなものです
DBT_PATHdbt Coreまたはdbt Cloud CLIの実行ファイルへのパスです
dbtの実行ファイルは、whichコマンドを実行することで見つけることができます
MULTICELL_ACCOUNT_PREFIXマルチセルを使用している場合は、ACCOUNT_PREFIXを設定する
マルチセルを使用していない場合は、この環境変数を設定しないでください
マルチセル利用時のみ必須
DISABLE_SEMANTIC_LAYER「セマンティックレイヤーを無効化する」ためのフラグ
dbt cloudを使わない場合はtrueを設定します。dbt-coreのみ利用する場合は必須です
✅(必須)✅(任意)
DISABLE_DISCOVERYdbt Discovery API MCP オブジェクトを無効にするには、true を設定します
dbt-coreのみ使う場合はtrueを明示的に設定する方が安全です
✅(必須)✅(任意)
DISABLE_REMOTE_TOOLSリモートMCPオブジェクト(dbt cloud)を有効にするには、これをfalseに設定します。
dbt cloudを使わない場合はtrueにします
✅(必須)✅(任意)

Clineでセットアップしたdbt-mcpサーバを指定する

VSCodeの拡張機能からClineへアクセスします。 続いて以下スクリーンショットの手順通りにクリックします。 Configure MCP Serversをクリックすることで以下スクリーンショットの赤枠のようにclne_mcp_settings.jsonが表示されます。 最後に以下の設定をclne_mcp_settings.jsonに貼り付け、<path-to-.env-file>の値をセットアップしたdbt-mcpサーバの環境変数ファイルのパスを指定します。

{
  "mcpServers": {
    "dbt-mcp": {
      "command": "uvx",
      "args": [
        "--env-file",
        "<path-to-.env-file>",
        "dbt-mcp"
      ]
    },
  }
}

clne_mcp_settings.jsonの設定を保存すると、2,3秒ほど待つと、以下スクリーンショットのようにdbt-mcpサーバの文字が表示され、グリーン点灯されていればOKです。

Clineで利用するAPI Providerを指定する

今回、API ProviderはOpenAIを利用します。 以下スクリーンショットの手順通りにクリックし、API configuration項目のAPI ProviderはOpenAIを選択し、OpenAI API KeyにAPIキーを入力します。 Custom Instructionsはリクエストに対するレスポンスの振る舞いを設定できますのでお好みで設定ください。 例えば、レスポンスはすべて日本語で返してほしい、というようなことができます。

Clineからプロンプトを実行してみる

次のようなプロンプトを実行してみます。 dbtのhogehogeプロジェクトに対して、dbt debugコマンドを実行し、Bigqueryと疎通ができるか確認してくれますか? 実行結果として以下スクリーンショットのようになります。 スクリーンショットではわかりにくいかもしれませんが、dbt debug実行のプロンプトを投げても勝手(自動的)にdbt debugは実行されません。 コマンドの実行許可をユーザ側に委ねてくれます。これで万が一誤ったコマンド実行を依頼しても実行前に防ぐことができます。 また、スクリーンショットの黄色枠がdbt debugの実行のサマリ結果になっており、dbt debugの出力結果に不慣れな方でも、サマリを見ることで状態を把握しやすくなっています。

現段階だと、dbt-mcpサーバでは次のようなことが実行可能でした。

  • dbtプロジェクトの解析
  • モデルの作成
  • クエリの修正対応
  • 生成されたモデルをSQLファイルとして保存
  • 生成されたモデルのYAMLファイルの作成

まとめ

自然言語によるプロンプトでdbtを操作できるのは非常に効率的で、開発体験が大きく向上します。 生成されたSQLやYAMLは必ず検証が必要ですが、修正依頼も簡単に行えるため実用性は高いです。 Cline + dbt-mcpサーバの組み合わせは、安全性を保ちながらAIの力を活用できる好例です。 ローカル検証と権限管理を行えば、チーム開発にも十分応用可能でしょう。

参考

info
備考

Hakky ではエンジニアを募集中です!まずは話してみたいなどでも構いませんので、ぜひお気軽に採用ページからお問い合わせくださいませ。

2025年07月05日に最終更新
読み込み中...