ClaudeとDremio・Starburstを連携する方法 — レイクハウスのデータをMCPで会話から引く
DremioとStarburst GalaxyはどちらもMCPサーバーを公開しています。接続手順、OAuthの準備、読み取り専用などの制約、権限の効き方の違いを比べます。
ClaudeとDremio・Starburstを連携する方法 — レイクハウスのデータをMCPで会話から引く
DremioもStarburst GalaxyもMCPサーバーを用意していて、Claudeから自然言語でテーブルを探し、SQLを走らせられます。ただし接続の作りはかなり違います。同種のデータ基盤はDatabricks MCPサーバーやSnowflake連携でも扱っていますが、ここでは2製品に絞ります。Dremioは「OAuthアプリを作ってエンドポイントを貼る」ホスト型と、「PATを持ってローカルでMCPサーバーを動かす」自前運用型の2系統があります。Starburst Galaxyはホスト型で、OAuthクライアントと専用スコープが前提です。
先に違いを表にします。
| 観点 | Dremio(ホスト型) | Dremio(自前運用) | Starburst Galaxy |
|---|---|---|---|
| 接続先 | Dremio(ホスト型)mcp.dremio.cloud/mcp/{project_id} | Dremio(自前運用)ローカルで起動するdremio-mcp-server | Starburst Galaxyhttps://<account-name>.mcp.galaxy.starburst.io |
| 認証 | Dremio(ホスト型)Native OAuthアプリ | Dremio(自前運用)個人アクセストークン(PAT) | Starburst GalaxyOAuth 2.0(推奨)またはBasic |
| Claude側の入口 | Dremio(ホスト型)カスタムコネクタ | Dremio(自前運用)Claude Desktopの設定ファイル | Starburst GalaxyClaude Desktop、Claude Code |
| 実行できるSQL | Dremio(ホスト型)ビュー作成まで可能(権限次第) | Dremio(自前運用)PATの権限による | Starburst GalaxySELECT / SHOW / EXPLAINのみ |
どちらを先に試すか — 読み取り専用で始めたいならStarburst
Starburst Galaxyは書き込み系のSQLをMCP経由で通しません。INSERT、UPDATE、DELETE、CREATE、DROPは許可されないと明記されています。最初の接続で「うっかり消した」を起こしたくないなら、この制約は安心材料です。
一方、Dremioはビューを作る操作まで案内しています。ホスト型のドキュメントは「データの探索とクエリ、分析と可視化、ビューの作成、システム性能の分析」を挙げます。自前運用型のFOR_DATA_PATTERNSモードも、データ探索、SQL生成、ビュー作成が用途です。何ができてしまうかは、接続するアカウントの権限で決まります。
判断の目安は次のとおりです。
- 既にGalaxyのMission Critical、Enterprise、無料トライアルのいずれかを使っている: Starburstの手順へ
- Dremio Cloudのプロジェクトがある: ホスト型の手順へ
- Kubernetes上やDockerのDremioを使っている: 自前運用型の手順へ
DremioのホストMCPサーバーにClaudeを接続する
ホスト型は、OAuthでユーザー本人の身元と認可がDremioまで伝わる設計です。ドキュメントはこの方式を、実験から本番まで可能な限りすすめています。流れは3段階です。
Dremioホスト型MCPサーバーの接続
- 1
Claude側の要件を確かめる
カスタムコネクタを作れるプランと権限かを先に見ます。Freeは1つまで、Team・Enterpriseでは組織設定から追加できるのはOwnerなどに限られます。
- 2
DremioにNative OAuthアプリを作る
リダイレクトURLに、Claude用の値を入れます。
- 3
Claudeにカスタムコネクタを追加する
OAuthアプリのクライアントIDと、自分のコントロールプレーンのMCPエンドポイントを入れます。
OAuthアプリに登録するリダイレクトURL
Claudeを使う場合、Native OAuthアプリのリダイレクトURLには次の4つをカンマ区切りで入れます。
https://claude.ai/api/mcp/auth_callback,https://claude.com/api/mcp/auth_callback,http://localhost/callback,http://localhostChatGPT用の値は別物なので、混ぜないでください。独自のAIチャットクライアントを使う場合は、管理者に確認するよう書かれています。
エンドポイントはコントロールプレーンで変わる
MCPエンドポイントは、プロジェクトが載っているコントロールプレーンで決まります。
| コントロールプレーン | MCPエンドポイント |
|---|---|
| US | MCPエンドポイントmcp.dremio.cloud/mcp/{project_id} |
| 欧州 | MCPエンドポイントmcp.eu.dremio.cloud/mcp/{project_id} |
どちらか分からなければ、プロジェクト設定の「Project Overview」ページにコピー用のエンドポイントが出ています。
Claudeでカスタムコネクタを追加する
全体像はClaudeコネクタの全体像にあります。ここでの画面操作はClaudeのサポート記事に沿います。個人のPro・Maxプランは「Customize > Connectors」から「+ Add」「Add custom connector」を選び、名前とリモートMCPサーバーのURLを入れて「Continue」を押します。Team・Enterpriseは、OwnerがOrganization settings > Connectorsで「Add」から「Custom」「Web」と進みます。
認証の画面には「OAuth client」の選択肢があり、「Claudeの公開された身元を使う(推奨)」「自動登録」「自前のOAuthクライアントを使う」から選べます。Dremioのドキュメントはクライアントを自分で作ってIDを渡す手順なので、クライアントIDを入れる形になります。
カスタムコネクタは、ローカル端末ではなくAnthropicのクラウドからリモートMCPサーバーに接続します。接続先のMCPサーバーがインターネット越しに届く場所にあるかは、先に確認してください。
自前運用のDremio MCPサーバーをClaude Desktopに繋ぐ
オープンソースのDremio MCPサーバーを手元で動かす方式です。Kubernetes上またはDocker上のDremioが対象で、MCP対応のAIチャットクライアントの例にClaudeが挙がっています。
準備するもの
- MCPに対応したクライアント(例: Claude Desktop)
- Dremio on KubernetesまたはDremio on Docker
- パッケージ管理ツールの
uv - URIエンドポイント(Kubernetesは
https://<coordinator-host>:9047など、Dockerはhttp://localhost:9047/) - PAT
MCPサーバーはPATに紐づく権限で動きます。管理者権限のPATを渡せば、管理者としてクエリが走ります。
インストールと設定ファイルの作成
リポジトリを取得して、ヘルプが出ることを確かめます。
git clone https://github.com/dremio/dremio-mcp
cd dremio-mcp
uv run dremio-mcp-server --help次に、dremioai用の設定ファイルとClaude用の設定ファイルを作ります。PATをシェル履歴に残したくないときは、PATの値の代わりに、PATを書いたファイルのパスを--patに渡す方法が推奨されています。
uv run dremio-mcp-server config create dremioai \
--uri <dremio uri> \
--pat <dremio pat or path to file with PAT>
uv run dremio-mcp-server config create claude
uv run dremio-mcp-server config list --type claudeconfig list --type claudeの出力には、Claude Desktopの設定ファイル(claude_desktop_config.json)のmcpServersにDremioが追加された状態が出ます。コマンドはuv run --directory <dremio-mcp> dremio-mcp-server runの形です。
3つのサーバーモード
設定ファイルのtoolsにはserver_modeがあり、既定の例はFOR_DATA_PATTERNSです。
| モード | 用途 |
|---|---|
FOR_DATA_PATTERNS | 用途データ探索、自然言語からのSQL生成、ビュー作成 |
FOR_SELF | 用途システムの内省と性能の分析 |
FOR_PROMETHEUS | 用途Prometheusを接続している場合に、Reflectionの総数などの指標で洞察を補強 |
用途ごとにモードを分けると、Claudeに見せるツールを絞れます。
動作確認の質問
Claude Desktopで新しいチャットを開き、まず次のように聞きます。
what tables or views are available in Dremio?ClaudeはGetUsefulSystemTableNamesやGetSchemaOfTableといったリソースを使って探索します。続けて最初に見つけたテーブルのサンプルを要求すると、RunSqlQueryが使われ、JSONで結果が返ります。既存のReflectionはMCP経由のクエリでも自動的に効きます。
Dremio側でMCPの利用履歴を確かめる
MCPサーバーの操作は、Dremioコンソール上では通常のREST経由のジョブとして残ります。
- ジョブ(Jobs)ページを開く
- PATに紐づくユーザー名で絞る
- クエリタイプを
External Toolsにする - 会話した時間帯で絞る
MCPサーバーが投げたSQLは、先頭がdremioai:で始まります。監査や、Claudeが実際に何を投げたかの確認に使えます。
Starburst GalaxyのMCPサーバーにClaudeを接続する
Galaxyのホスト型MCPは、アカウントごとのURLが決まっています。
https://<account-name>.mcp.galaxy.starburst.io前提条件
- Mission Critical、Enterprise、または無料トライアルのGalaxyアカウント
- MCP対応のクライアント(Claude Desktop、Cline、LibreChatなど)
- OAuthを使う場合は、設定済みのOAuthクライアント
OAuthクライアントの作成には、MANAGE_OAUTH_CLIENT権限を持つロールが必要です。
認証は2種類、本番はOAuth 2.0
| 認証 | 位置づけ | 注意点 |
|---|---|---|
| OAuth 2.0 | 位置づけ推奨。本番と共有環境向け | 注意点galaxy.mcpスコープが必須。動的クライアント登録(DCR)は非対応 |
| Basic | 位置づけテストと開発向け | 注意点<email>:<password>をbase64にしたヘッダー。サービスアカウントも可。公開APIトークンは使えない |
galaxy.mcpはMCPで受け付けられる唯一のスコープです。DCRが使えないため、Galaxyで先にOAuthクライアントを作り、クライアントIDを持って接続する流れになります。MCPの認可プロトコルは2025-06-18以降の版に対応しています。
Claude Desktopの手順
Claude Desktopは、ドキュメント上OAuth認証が必須です。
- GalaxyでOAuthクライアントを作る。公開クライアントか非公開クライアントかは組織の要件で選び、アプリケーションに
Customを選び、リダイレクトURIにhttps://claude.ai/api/mcp/auth_callbackを入れる - クライアントIDと、必要ならクライアントシークレットを控える
- Claude Desktopで「Customize」画面を開き、「Connect your apps」タブで「Starburst」を検索して接続する
- サーバーURLに
https://<account-name>.mcp.galaxy.starburst.ioを入れ、クライアントID(とシークレット)を入力する - 「Connect」を押す
Claude Codeの手順
Claude CodeはOAuthとBasicの両方に対応しています。OAuthでは、リダイレクトURIをhttp://localhost:<port>/callbackの形で登録したクライアントを用意し、そのポート番号を控えます。
claude mcp add --transport http \
--client-id ${MY_OAUTH_CLIENT_ID} \
--callback-port ${MY_PORT_FROM_ABOVE} \
my-mcp-server ${ACCOUNT_MCP_URL}Basic認証では、認証ヘッダーを静的に渡します。
claude mcp add-json my-mcp-server \
'{"type":"http","url":"${ACCOUNT_MCP_URL}","headers":{"Authorization":"Basic ${CREDENTIALS}"}}'CREDENTIALSは<email>:<password>をbase64にした文字列です。パスワードがシェル履歴や設定ファイルに残るので、検証用のサービスアカウントに限るのが無難です。
その他のMCPクライアント
汎用クライアントでOAuthを使う場合は、次の値を入れます。
- スコープ:
galaxy.mcp - 認可エンドポイント:
https://<account-name>.galaxy.starburst.io/oauth/v2/authorize - トークンエンドポイント:
https://<account-name>.galaxy.starburst.io/oauth/v2/token
MCPサーバーのURLと、認可・トークンのエンドポイントはドメインが違う点に注意してください(mcp.galaxyとgalaxy)。
権限と制約はどこで決まるか
2製品は「Claudeに何をさせられるか」を決める場所が違います。
権限を決める場所
Dremio
自前運用型はPATの権限がそのままMCPサーバーの権限です。ホスト型はOAuthでユーザーの身元と認可が伝わります。
Starburst Galaxy
ユーザーはロールの権限が許すクラスター、カタログ、データだけ使えます。そのうえでMCP側が読み取り専用と結果サイズの上限をかけます。
Starburstの制約を並べると、設計時に引っかかりやすい点が見えます。
- 結果セットは100KBまで。大きなテーブルを丸ごと要約させる用途には向かない
- SELECT、SHOW、EXPLAINのみ
- カスタムロールの指定は未対応で、認証したユーザーの既定ロールが使われる
最後の点は、複数ロールを持つ人が「分析用ロールで見たい」と考えても切り替えられないことを意味します。MCP用にサービスアカウントを作り、そのアカウントの既定ロールを最小権限にしておく運用が現実的です。
Dremioで同等の絞り込みをしたい場合は、PATを発行するユーザーを最小権限にします。ホスト型では、操作するのがログインしたユーザー本人になります。
接続した後のコネクタ側の権限や許可設定は、Claudeコネクタの権限設定でやりがちな失敗も参考になります。
会話でどう使うか — 最初の質問例
どちらも、探索から始めると事故が少なくなります。
この環境で見えるカタログとスキーマの一覧を出して。
orders に近い名前のテーブルがあれば、列名と型を教えて。テーブルが特定できたら、件数を絞ったサンプルを要求します。
orders テーブルの先頭10行を返して。列の意味を推測して、各列を一行で説明して。Starburstは結果が100KBまでなので、LIMITや集計を前提に頼むのが前提になります。Dremioの自前運用型は、既存のReflectionがMCP経由のクエリにも効くので、集計クエリを会話の中で試せます。
ツールの実行前に承認を求める設定にしていれば、承認画面で投げるSQLを読んでから許可できる場合があります。表示内容はクライアントによって異なります。
つまずきやすい点
落とし穴
Starburstで動的クライアント登録を期待すると接続できない
GalaxyのMCPはDCRに対応していません。Claudeの「自動登録」に頼らず、Galaxyで作ったOAuthクライアントのIDを使います。スコープはgalaxy.mcpのみです。
落とし穴
DremioのリダイレクトURLを一部しか入れない
ホスト型のOAuthアプリには、claude.aiとclaude.comの2つのコールバックURLを両方入れます。ドキュメントがカンマ区切りで4つの値を示しているので、そのまま貼るのが確実です。
落とし穴
自前運用のDremio MCPサーバーはサポート対象外
オープンソースのプロジェクトであり、Dremioのサポートポリシーの対象外です。困ったときはGitHubのissueかコミュニティフォーラムに問い合わせる形になります。
まとめ
接続の手間はStarburst Galaxyのほうが定型です。OAuthクライアントとスコープを揃えれば、書き込みはそもそも通らず、結果は100KBまでと決まっています。Dremioはホスト型ならOAuthアプリ1つで済み、自前運用型ならPATの権限設計が安全性の中心になります。どちらも、最初は読み取りだけの権限と探索の質問から始め、ジョブ履歴などで実際のSQLを確認するのが、レイクハウスにClaudeを繋ぐ最初の一歩として扱いやすい形です。