「3月3日のアクセス増の要因を教えて」――こうした自然言語の問い合わせに対して、GA4・Google Search Console・BigQueryのデータを横断的に分析し、推察まで返してくれる仕組みが欲しいと考えていました。ダッシュボードを開いてフィルタを切り替える作業ではなく、Claude Codeのターミナルから直接聞けるアクセス分析基盤を目指しました。
最終的にMCP(Model Context Protocol)サーバーとして実装し、Claude Codeから直接呼び出せる形に落ち着きました。追加のAPI費用はかかりません。Claude Code MAXプランの範囲内で動作します。この記事では、アーキテクチャの変遷、実装の要点、認証周りのハマりどころを記録します。
なぜMCPサーバーなのか:アーキテクチャの変遷
最初の構想はスタンドアロンのCLIツールでした。GA4 Data APIを叩いてデータを取得し、ターミナルに結果を表示します。しかしこれでは「データの取得」で終わります。「なぜアクセスが増えたのか」という分析・推察まで含めるには、LLMとの統合が必要でした。
次に検討したのがClaude APIを直接組み込む方式です。CLIからGA4データを取得し、Claude APIに投げて分析結果を返します。技術的には動きますが、APIの従量課金が発生します。すでにClaude Code MAXプラン(月額固定)を契約している状況で、別途API費用を払うのは合理的ではありません。
1CLI(単体) → データ取得のみ、分析なし2CLI + Claude API → 分析可能だが追加課金が発生3MCP サーバー → Claude Code内で完結、追加費用なしMCPサーバーとして実装すれば、Claude Code自身がGA4/GSC/BigQueryのデータにアクセスできます。分析はClaude Codeのモデルがそのまま担当します。追加のAPI呼び出しは不要で、MAXプランの範囲内で収まります。この判断で設計方針が決まりました。
MCPサーバーの構成
ツール設計
MCPサーバーには以下のツールを実装しました。
| ツール名 | データソース | 用途 |
|---|---|---|
analyze_exploratory | GA4 Data API | 探索的なアクセス分析(期間・ディメンション指定) |
fetch_ga4_report | GA4 Data API | 特定条件でのレポート取得 |
fetch_gsc_data | Search Console API | 検索クエリ・掲載順位・CTRの取得 |
analyze_behavior_flow | BigQuery Export | ユーザー行動フロー分析 |
analyze_exploratoryが中心的なツールで、「特定のランディングページへのアクセス数が多い日付を直近半年間で取得」といった探索的クエリに対応します。
設定:.mcp.json
MCPサーバーの接続設定は.mcp.jsonに記述します。
1{2 "mcpServers": {3 "ga4-analytics": {4 "command": "python",5 "args": ["-m", "ga4_mcp_server"],6 "env": {7 "GA4_PROPERTY_ID": "properties/XXXXXXXXX",8 "GOOGLE_APPLICATION_CREDENTIALS": "/path/to/service-account-key.json",9 "BIGQUERY_PROJECT_ID": "your-project-id"10 }11 }12 }13}環境変数で認証情報とプロパティIDを渡します。サービスアカウントキーのパスは絶対パスで指定します(後述のトラブルシューティング参照)。
GA4 Data API統合
GA4のデータ取得にはGoogle Analytics Data API(v1beta)を使います。google-analytics-dataパッケージ経由でアクセスします。
MCPツールが受け取るのは「期間」「ディメンション」「メトリクス」「フィルタ条件」といったパラメータです。これをGA4 Data APIのリクエスト形式に変換してAPIを呼び出し、結果を整形してClaude Codeに返します。Claude Codeはそのデータを見て分析・推察を行います。
ポイントは、MCPサーバー側では「分析」をしないことです。データの取得と整形だけを担当し、解釈はClaude Codeに任せます。この役割分担がMCPアーキテクチャの利点でもあります。
GSC API統合
Google Search Console APIとの統合で、検索クエリ・掲載順位・CTR・インプレッション数を取得できるようにしました。GA4の「どのページにアクセスが来ているか」に加えて、GSCの「どの検索クエリで流入しているか」を組み合わせることで、アクセス変動の要因分析がより具体的になります。
たとえば「先週アクセスが急増したページ」をGA4で特定し、そのページへの流入クエリをGSCで取得します。Claude Codeはこの2つのデータを突き合わせて「特定キーワードの検索順位が上昇したためアクセスが増えた」といった推察を返します。
BigQuery Exportで行動フロー分析
GA4のBigQuery Exportを有効化し、ユーザー行動フローの分析にBigQueryを使っています。GA4 Data APIではセッション単位の行動遷移を細かく追うのが難しいですが、BigQueryのイベントデータなら「ページA → ページB → 離脱」といったフローをSQLで自由に分析できます。
このBigQuery統合は後から追加したもので、GA4 Data API + GSCの基盤が安定した後に拡張しました。MCPサーバーのツールとして追加するだけで、Claude Codeからシームレスに使えます。
実際のクエリ例
Claude Codeのターミナルで、以下のような自然言語の問い合わせができます。
1「直近半年間で、特定のランディングページへのアクセスが多い日付を教えて」2→ GA4のページビューデータを日別に取得し、上位日を提示3
4「先月のオーガニック検索からの流入が多いクエリを10件教えて」5→ GSCから検索クエリデータを取得し、クリック数順にソート6
7「トップページから問い合わせフォームまでの主要な遷移パスを分析して」8→ BigQueryのイベントデータからページ遷移を集計Claude Codeがデータを取得した後、自動的に「なぜその日にアクセスが増えたのか」「どのクエリが成長しているか」といった分析コメントを付けてくれます。ダッシュボードを見て自分で考える作業が、対話型の分析に変わりました。
トラブルシューティング:認証周りの注意点
サービスアカウントキーのパス
.mcp.jsonに記述するサービスアカウントキーのパスは絶対パスでなければなりません。~や相対パスを使うと認証エラーになります。
1"GOOGLE_APPLICATION_CREDENTIALS": "/Users/username/keys/sa-key.json"サービスアカウントの権限設定
GA4、Search Console、BigQueryそれぞれで権限が必要になります。
- GA4: Google Analytics管理画面でサービスアカウントに「閲覧者」ロールを付与
- Search Console: Search Consoleの設定でサービスアカウントのメールアドレスをユーザーとして追加
- BigQuery: GCPコンソールでBigQueryデータ閲覧者ロールを付与
権限不足の場合、MCPサーバーは起動しますがツール呼び出し時に403エラーを返します。エラーメッセージが不親切なケースがあるため、初回セットアップ時は各APIを個別にテストすることを推奨します。
コスト構造
| 項目 | 費用 |
|---|---|
| Claude Code MAXプラン | 月額固定(既存契約) |
| GA4 Data API | 無料枠内 [要確認: クォータ上限] |
| Search Console API | 無料 |
| BigQuery | GA4 Export自体は無料、クエリは従量課金(個人利用なら月数十円程度) |
| MCPサーバー自体 | ローカル実行のため無料 |
MCPサーバーとして実装した最大のメリットは、LLMの推論コストが追加でかからない点です。Claude APIを直接呼び出す方式では入出力トークンに応じた従量課金が発生しますが、MCPサーバー経由ならClaude Code MAXプランに含まれます。
開発プロセス:仕様駆動開発での進め方
このMCPサーバーは仕様駆動開発(Spec-Driven Development)で進めました。ブレインストーム → 要件定義 → 設計 → テスト設計 → タスク分解 → 実装の5ステージです。
特に効果があったのは要件定義の段階でMCPツールのインターフェース(入力パラメータと出力形式)を明確に定義したことです。MCPサーバーは「Claude Codeから呼び出される」という制約があるため、ツールの名前・説明文・パラメータ定義がそのままユーザー体験に直結します。曖昧な定義のまま実装に入ると、Claude Codeが意図通りにツールを選択してくれません。
まとめ
MCPサーバーとして実装することで、GA4・GSC・BigQueryのデータをClaude Codeから直接分析できる基盤ができました。追加のAPI費用をかけずに、自然言語でアクセス分析ができます。
アーキテクチャの選定では「既存のMAXプランを活かす」という制約が設計を大きく方向づけました。技術的に可能な選択肢(CLI + Claude API)が、コスト面で最適とは限りません。MCPという仕組みが、この問題をきれいに解決してくれました。
独自のMCPサーバーを作る敷居は高く見えますが、やっていることは「外部APIを叩いて結果を返すサーバー」であり、REST APIのエンドポイントを書くのと大差ありません。GA4に限らず、社内システムや独自データソースをClaude Codeから直接扱いたい場合に、MCPサーバーは有力な選択肢になります。