ClaudeとMetabaseを連携する方法 — 質問とダッシュボードを自然言語で作る
MetabaseのMCPサーバーにClaudeをつなぐと、権限内のテーブルを検索してクエリを組み、質問やダッシュボードとして保存できます。接続手順と管理者側の設定、書き込み系ツールの絞り方をまとめます。
MetabaseはMCPサーバーを本体に内蔵しています。ClaudeをそのURLに向けるだけで、Claudeが自分のMetabaseのテーブルやメトリクスを検索し、クエリを組んで実行し、結果を質問(question)やダッシュボードとして保存できます。すべて接続した本人の権限の範囲内で動きます。
Claudeのコネクタ一覧にも「Anthropic verified」付きのMetabaseがあり、開発元はMetabaseです。2026年5月に追加されました。サインインが必要で、紹介文は「Query and explore your Metabase data」です。
この記事では、Claude Code・Claude(Web / Desktop)それぞれの接続手順、Claudeに任せられる操作、管理者が先に済ませる設定、書き込み系ツールの絞り方を順に扱います。
Claude Metabase連携(MetabaseのMCPサーバー)とは
Metabaseの公式ドキュメントでは、AIクライアントを自分のMetabaseに直接つなぐMCPサーバーとして説明されています。エンドポイントは /api/metabase-mcp です。
https://{your-metabase.example.com}/api/metabase-mcp{your-metabase.example.com} は自分のMetabaseのURLに置き換えます。管理者はAdmin > AI > MCP > Settingsの「MCP server URL」でも確認できます。
ここで押さえたいのは、AIを提供するのはClaude側だという点です。ドキュメントは「MCPサーバーはツール(エンティティの検索やクエリの実行など)を提供するだけ」と説明しています。たとえば「今期の売上は?」と聞くと、Claudeが construct_query と execute_query を使うと判断し、クエリの中身も決めます。Metabaseはそのツール呼び出しを実行するだけです。
そのため、MetabaseにAIプロバイダーを設定していなくても使えます。Metabotのために設定済みのプロバイダーがあっても、MCPサーバーの要求には使われません。MCP経由の呼び出しがMetabase側のAIトークン使用量に影響することもありません。
接続の前に管理者が済ませること
接続できるかどうかは、Metabase側の設定で決まります。ユーザー側の操作より先に、管理者が次を確認します。
- Admin > AIを開き、左サイドバーのMCPタブでMCPサーバーのトグルをオンにする
- MetabaseのAI機能そのものを有効にしておく(AI機能がオフだと、MCPサーバーもオフのままです)
- Claude(Claude DesktopとWeb)にインラインチャートを出したいなら、同じ画面の「Show inline charts in these MCP clients」でClaudeをオンにする
3番目のトグルが制御するのは、ブラウザ上のクライアントでのインラインチャート表示だけです。接続そのものを許可・拒否するものではありません。オンにすると、そのクライアントのサンドボックス用ドメインがMetabaseのCORS許可リストに追加されます。Claude Codeのようにブラウザ外で動くクライアントには、この設定は要りません。
社内に自作のブラウザ型クライアントがある場合は、「Custom inline chart origins」欄にオリジンをスペース区切りで追加できます。サブドメインにはワイルドカード(*)が使え、変更の反映には1分ほどかかります。
Claude Codeでつなぐ手順
Claude Codeでは、コマンド1本でMCPサーバーを追加できます。
claude mcp add --transport http metabase \
https://{your-metabase-url}/api/metabase-mcp追加したら claude を起動し、次の流れで認証します。
/mcpを実行する- 一覧からMetabaseのMCPサーバーを選ぶ
- Authenticateを選び、Metabaseにログインして接続を承認する
認証が済んだら、Metabaseについて普通に質問します。ClaudeがMetabaseのツールを呼んでいれば、接続は成功です。
つながらないときの原因
ローカルやコンテナで試すときは、サイトURLの設定が原因になりやすい箇所です。OAuthの探索は、MetabaseがサイトURL設定から組み立てた resource_metadata のURLを返すところから始まります。Dockerの内部ホスト名(metabase-dev:3000 など)が自動検出されていると、クライアントは登録まで進んでも握手に失敗します。
このときClaude Codeは「認証が必要」ではなく ✗ Failed to connect と表示します。対処は環境変数 MB_SITE_URL を、クライアントから届くアドレスに合わせることです。
MB_SITE_URL: http://localhost:3000サイトURLはAdmin > Settings > Generalでも変えられます。なお、Claude DesktopはlocalhostのMCPサーバーへの接続を許可しませんが、Claude Codeは許可します。
ClaudeのWebとDesktopでつなぐ手順
Web版とDesktop版では、ClaudeのコネクタディレクトリにあるMetabaseを追加するか、自分のMetabaseのMCP URLを入力して接続します。管理者がMCPサーバーを有効にしていることは、ここでも前提です。認証は、セットアップ中に自分のMetabaseに対して行います。
自分のURLを入れる方式は、Claudeの「カスタムコネクタ」(リモートMCP)の仕組みに乗ります。Claudeのヘルプによると、カスタムコネクタはClaude・Cowork・Claude Desktopで、Free・Pro・Max・Team・Enterpriseの各プランに提供されています。Freeは1つまでです。TeamとEnterpriseでは、組織へ追加できるのはOwnerだけで、追加後は各メンバーが自分でつないで有効にします。
また、接続元はあなたのPCではなく、Anthropicのサーバーです。社内ネットワークの内側にあるMetabaseを、Web版やDesktop版から使う場合は、この経路で届くかを先に確かめておくと安全です。Claude Codeはローカルから直接つなぐため、この制約とは別です。
Claudeに任せられる操作
ドキュメントは、ツールを対話型・読み取り専用・書き込み系の3つに分けています。
| 種別 | ツール | 役割 |
|---|---|---|
| 対話型 | ツールvisualize_query | 役割クエリ結果をクライアントにインラインチャートで表示 |
| 対話型 | ツールrender_drill_through | 役割インラインチャートからドリルスルーしたチャートを表示 |
| 読み取り専用 | ツールsearch | 役割キーワードや自然言語でテーブルとメトリクスを探す |
| 読み取り専用 | ツールconstruct_query | 役割テーブルやメトリクスに対するクエリを組み、クエリハンドルを返す |
| 読み取り専用 | ツールexecute_query | 役割組んだクエリを実行し、列メタデータ・行数・実行時間つきで返す |
| 読み取り専用 | ツールquery | 役割クエリを実行して結果を返す。大きな結果は継続トークンでページ送りする |
| 読み取り専用 | ツールread_resource | 役割metabase:// のURIで、コレクションやダッシュボードなどを読む |
| 書き込み系 | ツールcreate_question | 役割クエリを名前付きの質問として保存 |
| 書き込み系 | ツールcreate_dashboard | 役割ダッシュボードを新規作成。保存済みの質問を入れることもできる |
| 書き込み系 | ツールcreate_collection | 役割コレクションを作成(親コレクションの下にも作れる) |
| 書き込み系 | ツールupdate_question | 役割保存済みの質問を更新。collection_id を指定すると別コレクションへ移動 |
| 書き込み系 | ツールupdate_dashboard | 役割ダッシュボードの名前・説明・コレクション・アーカイブ状態を更新 |
| 書き込み系 | ツールexecute_sql | 役割データベースに生のSQLを実行 |
query のページ送りは、1ページ最大200行、合計2,000行までです。read_resource は1回に最大5つのエンティティを読め、リストは1つにつき25件までを返します。読めるエンティティにはコレクション・ダッシュボード・データベース・メトリクス・モデル・質問・スキーマ・テーブル・トランスフォームが含まれます。
execute_sql にはさらに条件があります。対象データベースへのネイティブクエリ権限が必要です。管理者は設定 mcp-execute-sql-enabled(既定は有効)で、インスタンス全体のこのツールを無効にできます。
コネクタ一覧のツール名との違い
Claudeのコネクタ一覧に載るツール名は11個で、上の表とは少し違います。get_table・get_table_field_values・get_metric・get_metric_field_values は一覧側だけに、execute_sql・update_question・update_dashboard・create_collection・read_resource・render_drill_through は公式ドキュメント側だけに出てきます。どちらも公式の表記です。実際に使えるツールは、接続後にClaudeが表示する一覧で確かめてください。
「見せて」と頼むとチャートになる
MCPサーバーは、質問の内容によってテキストかインラインチャートで返します。チャートにしたいときは「見せて」「可視化して」と頼みます。
インラインチャートは棒・折れ線・テーブルの3種類で、切り替えられます。ドリルスルーや時間粒度の変更もできます。クライアントによって、その場で探索を続けられるか、Metabaseへのリンクが示されるかが変わります。
質問とダッシュボードを作らせる依頼の例
次は、依頼の形の一例です。ツールの実際の呼び出しはClaudeが決めるので、出力の再現ではなく、頼み方の型として読んでください。
売上のテーブルを探して、月ごとの受注金額を集計してください。
まず結果を可視化して見せてください。
問題なければ「月次受注金額」という質問として、
「営業」コレクションに保存してください。この依頼なら、search で対象を探し、construct_query と execute_query(または query)で集計し、visualize_query で表示し、承認後に create_question で保存する流れが想定できます。保存を「問題なければ」の後ろに置くのがコツです。書き込み系のツールは、結果を目で確かめてから呼ばせる方が安全です。
ダッシュボードも同じ流れです。保存済みの質問を指定して create_dashboard を頼めば、質問を入れた状態で作れます。既存の質問は update_question で書き換えられるため、共有中のものを触らせる依頼は、範囲を明示して出します。
書き込み系ツールをClaude Code側で絞る
MCPサーバー側の権限はMetabaseのユーザー権限で決まります。加えて、Claude Code側でもツール単位で許可を絞れます。ドキュメントには、承認・ブロックするツールはMetabaseではなくクライアント側で決めると書かれています。
Claude Codeの権限ルールでは、MCPツールは mcp__<サーバー名>__<ツール名> で指定します。先ほどの claude mcp add でサーバー名を metabase にしたなら、次のような設定が書けます。.claude/settings.json の例です。
{
"permissions": {
"allow": [
"mcp__metabase__search",
"mcp__metabase__construct_query",
"mcp__metabase__execute_query",
"mcp__metabase__query",
"mcp__metabase__read_resource"
],
"deny": [
"mcp__metabase__execute_sql",
"mcp__metabase__update_question",
"mcp__metabase__update_dashboard"
]
}
}読み取りは確認なしで通し、生SQLと更新系は使わせない構成です。create_question と create_dashboard はどちらにも入れていないので、呼ばれるたびに確認が出ます。新規作成だけ人が見てから通したいときの置き方です。
allowルールでは mcp__metabase__* のように、サーバー名の後ろにだけワイルドカードを付けられます。mcp__* のような書き方は自動承認に使えません。ツール名が将来増えたときに書き込み系まで通してしまわないよう、allowは名前を列挙する形にしています。
結果データの行き先と監査ログ
MCP経由のクエリ結果は、接続したMCPクライアントに送られます。クライアントの設定によっては、そこからAIプロバイダーに転送されます。MetabaseのAIプライバシーの説明にも、MCPサーバー使用時はクエリ結果が接続先のクライアントに送られると書かれています。
管理者は、Admin > AI > MCPのAuthorizationsタブで、どのクライアントが接続したかを監査できます。記録されるのは次の項目です。
- Client: 登録・要求したMCPクライアント(Claude Codeなど)
- User: 承認または拒否した人(登録イベントでは空)
- Redirect URI: クライアントが登録したOAuthのコールバックURL
- Event: Registered、Approved、Deniedのいずれか
- Date: 発生日時
認証はOAuth 2.0で、Metabaseが内蔵のOAuthサーバーを持ちます。外部のOAuthプロバイダーを用意する必要はありません。クライアントが受け取るアクセストークンは、ログインした人のMetabase上の権限にスコープされます。
他のデータ源とあわせて使う
クライアントが複数のMCPサーバーにつながっていれば、Metabaseのデータと他のデータをまたいだ質問ができます。公式ドキュメントの例は、顧客に関する質問で、MetabaseとCRMとサポートチケットの各データを組み合わせるものです。
クエリ言語で作業する分析基盤を持っているなら、ClaudeとSplunkの連携やBigQuery連携のように、データ基盤側のMCPと役割を分ける考え方もあります。Metabaseは集計・可視化の面を、基盤側はログや生データの面を受け持たせる形です。BIツールとの比較ではTableauコネクタの権限モデルと見比べると、違いが分かりやすくなります。アクセス解析ならGA4のMCPサーバーも選択肢です。
エージェント主導の開発でMetabaseのコンテンツを作る
MCPサーバーは、Metabaseのコンテンツをシリアライズ済みのYAMLファイルとして作る用途にも使えます。エージェントにMCPサーバーを向けると、テーブル名・フィールド・サンプル値といったデータベースのメタデータを参照できます。そのため、実在する列を指す質問やダッシュボードを書けます。
Metabaseの公式ドキュメントでは、開発用のMetabaseとGitリポジトリを用意し、エージェント向けのスキルとCLIを入れ、Remote Syncで本番へ反映する流れが説明されています。プルリクエストでYAMLの差分をレビューできる点が、画面で直接作る方法との違いです。この方式は開発用のMetabaseに管理者権限で入れることが前提で、本番のMetabaseに直接書かせる今回の手順とは別の運用です。