![[新機能]dbt CloudでホストされたRemote MCP Serverがパブリックベータとしてリリースされました](https://images.ctfassets.net/ct0aopd36mqt/wp-thumbnail-f846b6052d1f7b983172226c6b1ed44b/6b4729aabfb5b7a3359acc27dc6b5453/dbt-1200x630-1.jpg)
[新機能]dbt CloudでホストされたRemote MCP Serverがパブリックベータとしてリリースされました
さがらです。
dbt CloudでホストされたRemote MCP Serverがパブリックベータとしてリリースされました。
この新機能を実際に試してみたので、その内容について本記事でまとめてみます。
Remote MCP Serverとは
まず前提として、dbtはOSSでdbt MCP Serverをリリースしていました。
このOSSのdbt MCP Serverはユーザーがそれぞれセットアップする必要があり、以下の課題がありました。
- デプロイの難しさ: 複数のユーザーが利用する(マルチテナント)環境でのホスティングや運用が難しい。
- 用途の制限: 主に個人の開発環境での利用が想定されており、Webアプリケーションのような共有サービスを構築するには不向きである。
こういった課題を解決できるのが、今回リリースされたRemote MCP Serverです!「Remote」という名の通り、ユーザー側でMCP Serverのセットアップが不要でdbt CloudにホストされたMCP Serverを利用する形式となっています。
以下はこちらの公式ブログの内容を元に、従来のローカルのMCP Serverと、今回リリースされたRemote MCP Serverの違いをまとめた表となります。
ローカル MCP Server | Remote MCP Server | |
---|---|---|
ホスティング | ユーザー自身が管理 | dbt Labsが管理(クラウドサービス) |
接続方法 | ローカル環境で実行 | HTTP API経由で接続 |
主な用途 | 個人の開発支援(ローカルでのコーディングエージェントなど) | 共有アプリケーション、Webアプリ、サーバーサイドのAIエージェント構築 |
メリット | ローカルのコードとAIが持つ情報が完全に一致する | インフラ管理が不要で、導入が容易。スケーラビリティやセキュリティをdbt Cloudに任せられる。 |
こちらの公式ブログではRemote MCP Serverの用途として、以下を挙げていました。(日本語訳したものを記載)
- dbtの正確で管理された指標を使用して、ビジネス関連の質問に回答
- PII列を識別し、ガバナンスポリシーを自動的に適用
- コード品質を向上させ、レビュープロセスを迅速化するPRレビューエージェント
- メタデータとカタログ情報を調べて、データの検出とトラブルシューティングを高速化
- オンコールのインシデントサポートエージェントが問題をより早く解決
Remote MCP Serverのセットアップに必要な情報を確認
ということで、リリースされたMCP Serverを試してみようと思います!
今回は一番セットアップが簡単そうなCursorからRemote MCP Serverにアクセスすることを試してみます。
dbt CloudのホストURL
まず、dbt CloudのホストURLを確認します。
dbt Cloudにアクセスして下図のようにURLが表示されていたら、MCP Server用のURLはhttps://cloud.getdbt.com/api/ai/v1/mcp/
となります。
サービストークン
次に、サービストークンを生成します。
Semantic Layerも含めてフルに活かしたい場合には、Semantic Layer Only
、Metadata Only
、Developer
をPermissionとして指定し、サービストークンを生成します。
Production EnvironmentのID
最後に、Production EnvironmentのIDを確認します。これも対象のEnvironmentの画面を開いて、URL欄から確認可能です。
Cursorから接続設定
先ほどdbt Cloudで確認した情報を元に、Cursorから接続設定を行います。(Cursor自体のセットアップは事前に行っているものとします。)
以下のURLにアクセスし、Set up with remote dbt MCP server
の配下にあるAdd to Cursor
を押します。
すると、Cursorが立ち上がるため、先程確認した情報を入れてinstall
を押します。サービストークンについては、token
の後に入れる必要があるためご注意ください。
無事にインストールされると、MCP Tools欄に下図のようにdbtのRemote MCP Serverが追加されます。
Remote MCP Serverを活用してみる
では実際に、CursorからRemote MCP Serverを活用してみます!(Cursorは無料のHobbyプランを利用しています。)
利用可能なモデルの確認
雑に、「利用可能なモデルの一覧を教えて」と聞いてRun tool
を押すと、下図のように返ってきました。Descriptionが英語で書かれている場合でも、日本語に翻訳されて返ってきました。
各モデルが正常かどうかの確認
各モデルが正常に更新されているかを確認するために、「各モデルに異常はないか確認して」と聞いてみます。
すると、1つ1つのModelに対してget_model_health
が動き、結果としては全てのモデルが問題ないことが返ってきました。
より具体的にどういったテストを行っているか、「テストを行っているモデルについて、どのようなテストを行っていますか」と聞いて確認してみます。
すると、各モデルについて実施しているテストの詳細が返ってきました。
自然言語でSQLの生成をリクエスト
「stg_customersを軸に、売上のデータをJOINして顧客ごとの売上状況を知るためのsqlを生成してください」と聞いて、SQLの生成をリクエストしてみます。
これにより、下図のようにSQLが生成されました。
生成されたSQLが本当に正しく動くのかを確認するため、「生成されたSQLを実行して、どんなデータが取得できるか確認したいです」と聞くと、上手く実行ができませんでした。
参考までに、生成されたSQLをdbt Cloud上で動かすと、Encountered an error: Runtime Error Database Error in sql_operation inline_query (from remote system.sql) 002140 (42601): SQL compilation error: Unknown function STRING_AGG
と返ってきました。
今回利用しているDWHはSnowflakeなのですが、STRING_AGG
という関数が存在しないためエラーとなったようです。
メトリクス関係の問い合わせ
次に、メトリクス関係の問い合わせを行ってみます。
「プロダクトごとの売上実績を知りたいです」や「年月別の売上を知りたいです」と問い合わせを行ったら、下図のように表示され、回答は返ってこずにトークンを延々と消費するだけとなる事態が起きました。
最後に
dbt CloudでホストされたRemote MCP Serverがパブリックベータとしてリリースされたので、試してみました。
パブリックベータということが理由なのか、私の試し方が悪いのか、原因はわからないのですがSQL生成とメトリクス関係については満足いく結果を得ることができませんでした…
一方で、各モデルの説明を得たり、各モデルが正常かどうかの問い合わせは問題なく行えたので、カタログ情報に対して自然言語で問い合わせするという用途では現時点でも上手く動きそうな印象を得ました。
まだパブリックベータですので、今後のアップデートに期待したいところです!!