/ ディレクトリ / プレイグラウンド / mcp-bigquery-server
● コミュニティ ergut ⚡ 即起動

mcp-bigquery-server

作者 ergut · ergut/mcp-bigquery-server

Claude から BigQuery を読み取り専用で自然言語操作 — スキーマ探索、クエリ制限、PII フィールド制限 — サービスアカウント認証対応。

mcp-bigquery-server は、LLM に BigQuery データセットへの安全な読み取り専用アクセスを提供する Node MCP サーバーです。設定可能なスキャンバイト数のクエリ制限(デフォルト 1GB)を適用し、PII/PHI 向けのフィールドレベル制限をサポートします。Smithery 経由のインストール、またはサービスアカウント認証情報を使った手動設定が可能です。

なぜ使うのか

主な機能

ライブデモ

実際の動作

bigquery-server.replay ▶ 準備完了
0/0

インストール

クライアントを選択

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "bigquery-server": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-bigquery-server"
      ],
      "_inferred": true
    }
  }
}

Claude Desktop → Settings → Developer → Edit Config を開く。保存後、アプリを再起動。

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "bigquery-server": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-bigquery-server"
      ],
      "_inferred": true
    }
  }
}

Cursor は Claude Desktop と同じ mcpServers スキーマを使用。プロジェクト設定はグローバルより優先。

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "bigquery-server": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-bigquery-server"
      ],
      "_inferred": true
    }
  }
}

Cline サイドバーの MCP Servers アイコンをクリックし、"Edit Configuration" を選択。

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "bigquery-server": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-bigquery-server"
      ],
      "_inferred": true
    }
  }
}

Claude Desktop と同じ形式。Windsurf を再起動して反映。

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "bigquery-server",
      "command": "npx",
      "args": [
        "-y",
        "mcp-bigquery-server"
      ]
    }
  ]
}

Continue はマップではなくサーバーオブジェクトの配列を使用。

~/.config/zed/settings.json
{
  "context_servers": {
    "bigquery-server": {
      "command": {
        "path": "npx",
        "args": [
          "-y",
          "mcp-bigquery-server"
        ]
      }
    }
  }
}

context_servers に追加。保存時に Zed がホットリロード。

claude mcp add bigquery-server -- npx -y mcp-bigquery-server

ワンライナー。claude mcp list で確認、claude mcp remove で削除。

ユースケース

実用的な使い方: mcp-bigquery-server

SQL を書かずに BigQuery からプロダクト/グロースの質問に回答

👤 BQ ベースのデータウェアハウスを利用する PM、グロースアナリスト ⏱ ~15 min intermediate

使うタイミング: BQ のイベントテーブルに答えがあるような質問がある場合に使用します。

前提条件
  • BQ Data Viewer + Job User 権限を持つ GCP サービスアカウント — IAM > サービスアカウントを作成し、JSON キーをダウンロード
フロー
  1. テーブルを探索する
    List tables in dataset analytics. Describe events and users.✓ コピーしました
    → スキーマが表示される
  2. 質問する
    How many users who signed up in March 2026 triggered the 'aha_moment' event within 7 days?✓ コピーしました
    → SQL 付きの数値回答
  3. 注意点を確認する
    Any caveats? Timezone, deletion, test users?✓ コピーしました
    → 正直な注意点の提示

結果: データチームへのチケット発行ではなく、数分で回答を取得できます。

注意点
  • 巨大なファクトテーブルに対して SELECT * を実行するとスキャン制限を超過する — 必ずパーティションカラム(多くの場合 _PARTITIONDATE)でフィルタリングしてください

信頼度の低いアナリストに PII 行の閲覧なしでデータ探索を許可する

👤 データプラットフォームチーム ⏱ ~30 min advanced

使うタイミング: チャット経由でより多くのメンバーに BQ アクセスを開放したいが、顧客のメールアドレスは読めないようにしたい場合に使用します。

フロー
  1. 制限フィールドを設定する
    Add config.json entry restricting fields users.email, users.phone, users.ssn. Agent can only aggregate these, not SELECT them raw.✓ コピーしました
    → 設定が完了
  2. テストする
    Run SELECT email FROM users LIMIT 10. Verify it's blocked. Then run SELECT domain, COUNT(*) FROM users GROUP BY domain — verify it works.✓ コピーしました
    → 生データの読み取りはブロック、集計は許可

結果: LLM 時代に対応した、より安全なセルフサービス分析環境を実現します。

注意点
  • 正規表現ベースのフィールド検出では、複雑なエイリアス付き SQL を見逃す可能性がある — 多層防御として、BQ のカラムレベルセキュリティや承認済みビューも併用してください
組み合わせ: gateway

BQ からデイリー指標ダイジェストを自動作成

👤 PM、創業者 ⏱ ~30 min intermediate

使うタイミング: BI ツールなしで毎朝 Slack に KPI を届けたい場合に使用します。

フロー
  1. 指標を定義する
    Define queries for: DAU, signups, revenue, top-3 errors. Each with yesterday / 7-day avg.✓ コピーしました
    → 指標ごとの SQL
  2. 実行してフォーマットする
    Run all and format as a Slack-ready digest. Include week-over-week deltas.✓ コピーしました
    → Slack 投稿用メッセージ

結果: マネージド BI のコストなしでデイリー指標を取得できます。

組み合わせ: notion

組み合わせ

他のMCPと組み合わせて10倍の力を

bigquery-server + notion

週次 KPI ドキュメント

Run my weekly KPI queries and create a Notion page in 'Metrics Weekly' with results + commentary.✓ コピーしました
bigquery-server + gateway

mcp-gateway + Presidio による PII 安全アクセス

Put BigQuery MCP behind mcp-gateway with Presidio; verify customer emails get redacted in results.✓ コピーしました

ツール

このMCPが提供する機能

ツール入力呼び出すタイミングコスト
list_datasets 最初に全体像を把握するために使用 free
list_tables dataset データセット内を探索するために使用 free
describe_table dataset, table クエリ実行前にスキーマを確認するために使用 free
query sql: str, max_bytes?: int 主要な読み取りツール。デフォルトで 1GB スキャン制限あり BQ オンデマンド: スキャン 1TB あたり $6.25

コストと制限

運用コスト

APIクォータ
BigQuery ジョブクォータ(十分な余裕あり)
呼び出しあたりのトークン
クエリ結果が巨大になる可能性あり — 必ず LIMIT または集計を使用してください
金額
GCP のスキャンバイト数に応じた課金(オンデマンド $6.25/TB)。MCP でスキャン制限を設定して上限を管理できます。
ヒント
パーティションでフィルタリングしてください。高トラフィックのファクトテーブルのフルスキャンは実際のコストに直結します。MCP のバイト制限がセーフティネットです。

セキュリティ

権限、シークレット、影響範囲

最小スコープ: bigquery.dataViewer + bigquery.jobUser on specific datasets only
認証情報の保管: サービスアカウント JSON はマウントされたパスに配置。絶対にコミットしないこと
データ送信先: クエリ結果は LLM プロバイダーに送信されます
絶対に付与しない: dataOwner / dataEditor to the MCP's service account

トラブルシューティング

よくあるエラーと対処法

PERMISSION_DENIED on dataset(データセットへのアクセス拒否)

サービスアカウントに BQ Data Viewer 権限がありません。gcloud projects add-iam-policy-binding ... で付与してください。

確認: gcloud bigquery datasets list
Query exceeds configured byte limit(クエリが設定されたバイト制限を超過)

パーティションフィルタまたはカラム射影を追加してください。正当な理由がある場合は制限を引き上げることも可能です。

Restricted field still appearing in results(制限フィールドが結果に表示される)

正規表現マッチがエイリアス付きカラムを検出できていない可能性があります。確実な分離には BQ の承認済みビューを使用してください。

代替案

mcp-bigquery-server 他との比較

代替案代わりに使う場面トレードオフ
Looker / Metabaseチャットではなく BI ツールが必要な場合ダッシュボードに優れるが、対話性は低い
postgres MCP via Cloud SQL分析データが BigQuery ではなく Postgres にある場合エンジンが異なる。Postgres は大規模集計で BQ ほどスケールしない

その他

リソース

📖 GitHub の公式 README を読む

🐙 オープンな issue を見る

🔍 400以上のMCPサーバーとSkillsを見る