📖

BigQuery用MCPサーバーでClaude CodeからBigQueryを操作する

に公開

以前から自分で使っている自作のBigQuery用MCPを宣伝します。Claude CodeなどのAIコーディングツールに、BigQueryのSQLを書かせることができるMCPです。

GitHubリポジトリは以下

https://github.com/takada-at/bq_mcp_server

bq_mcp_serverとは

bq_mcp_serverは、BigQueryのSQLクエリを作成・実行するためのMCPサーバーです。主な機能は以下の通りです。

  • テーブル定義のローカルキャッシュ: BigQueryのテーブルスキーマ情報をローカルにキャッシュし、高速に参照できる。
  • クエリ実行制限: デフォルトで1GiB のスキャン容量制限を設定し、高額な課金を防止する。
  • メタデータ検索: データセット、テーブル、カラムの検索機能を提供する。
  • クエリ実行: SQLクエリの実行と結果のCSVまたはJSONL形式での出力が可能。

AIが勝手にテーブル定義などを調べてSQLを書いてくれるため、手作業でのスキーマ確認やSQLの試行錯誤を省略できます。

インストールと設定

前提条件

GCPの認証情報が必要です。以下のいずれかの方法で認証を設定してください。

# Application Default Credentials(推奨)
# 設定済みの場合は不要です
gcloud auth application-default login

または、サービスアカウントキーを使用する場合は、--gcp-service-account-key-path オプションでキーファイルのパスを指定できます。

Claude Codeでの設定

Claude Codeを使用している場合、以下のコマンドで簡単にインストールできます。ただし、事前にuvのインストールが必要です。

claude mcp add bq_mcp_server -- uvx --from git+https://github.com/takada-at/bq_mcp_server bq_mcp_server --project-ids <your project ids>

それ以外のツールでは、MCP設定に以下を追加してください。

{
    "mcpServers": {
        "bq_mcp_server": {
            "command": "uvx",
            "args": [
                "--from",
                "git+https://github.com/takada-at/bq_mcp_server",
                "bq_mcp_server",
                "--project-ids",
                "<your project ids>"
            ]
        }
    }
}

BigQueryパブリックデータを使った実用例

実際の使用例として、BigQueryのパブリックデータセットを使用したデモを紹介します。

デモ環境のセットアップ

BigQueryのパブリックデータにアクセスする場合は、以下のコマンドでインストールします。

claude mcp add bq_mcp_server --\
 uvx --from git+https://github.com/takada-at/bq_mcp_server bq_mcp_server\
 --project-ids bigquery-public-data\
 --dataset-filters 'bigquery-public-data.samples'\
 --query-execution-project-id <your project id>

パブリックデータにアクセスする場合でも、クエリの実行には少額の課金が発生するので注意してください。

実際の操作例

インストール後、Claude Codeを立ち上げ、/mcp で正常起動を確認します。

以下のように表示されていれば問題ありません。

bq_mcp_server  ✔ connected

Claude Codeでの使用例

> MCPでBigQueryのテーブル一覧を確認して

⏺ BigQueryのMCPサーバーを使ってテーブル一覧を確認します。まずはデータセットを取得してから、各データセットのテ
  ーブルを確認しましょう。

(...)

 BigQueryのMCPサーバーで利用可能なデータセットとテーブルを確認しました。

  利用可能なデータセット:
  - bigquery-public-data.samples (USリージョン)

  テーブル一覧:
  1. github_nested - GitHubイベントデータ(ネストした構造)
  2. github_timeline - GitHubイベントデータ(フラット構造)
  3. gsod - 世界気象データ(Global Summary of the Day)
  4. natality - 出生データ
  5. shakespeare - シェイクスピア作品の単語データ
  6. trigrams - n-gramデータ
  7. wikipedia - Wikipedia編集データ

  これらのテーブルはBigQueryの学習用サンプルデータセットです。各テーブルには詳細なスキーマ情報が含まれており、
  さまざまなクエリの練習に使用できます。
> shakespeareにはどんなデータが入ってる?

⏺ Shakespeareテーブルのデータを確認してみましょう。

(...)

⏺ Shakespeareテーブルには以下のデータが含まれています:

  データ構造:
  - word - 単語(空白区切りで抽出)
  - word_count - その単語の出現回数
  - corpus - 作品名
  - corpus_date - 作品の出版年

  含まれる作品(抜粋):
  - sonnets (0年 - 年代不明)
  - various (0年 - 年代不明)
  - 1kinghenryvi, 2kinghenryvi, 3kinghenryvi (1590年)
  - comedyoferrors, kingrichardiii (1592年)
  - tamingoftheshrew, titusandronicus (1593年)
  - loveslabourslost (1594年)

  データの特徴:
  - 最も頻出する単語は "the"(ハムレットで995回)
  - 作品ごとの統計例:
    - ハムレット:ユニーク単語数4,441、総単語数23,272
    - コリオラナス:ユニーク単語数4,683、総単語数27,165

  このデータセットは、シェイクスピア作品の単語頻度分析、作品間の語彙比較、言語学的分析などに使用できます。
> 作品別のワード数を集計してみて

(...)

⏺ シェイクスピア全43作品のワード数集計が完了しました。結果をshakespeare_word_stats.csvに保存しました。

  主な発見:
  - 最長作品: ハムレット(32,446語)
  - 最短作品: 恋人の嘆き(2,586語)
  - ユニーク単語数最多: ハムレット(5,318語)
  - 平均使用頻度最高: リチャード三世、お気に召すまま(6.8回)

  作品カテゴリー別の特徴:
  - 四大悲劇(ハムレット、リア王、オセロ、マクベス)は上位に位置
  - 歴史劇(ヘンリー系、リチャード系)も総単語数が多い
  - ソネット集は17,805語で中規模
  - 詩作品(ヴィーナスとアドニス、ルクレースの凌辱)は下位

アンインストール方法

以下のコマンドで簡単にアンインストールできます。

claude mcp remove bq_mcp_server

まとめ

BigQuery用MCPbq_mcp_serverを紹介しました。AIにSQLを作成してもらうためのツールです。

BigQueryを頻繁に使用する方は、ぜひ一度試してみてください。細かな設定方法は、GitHubリポジトリで確認できます。

Discussion