Claude CodeにGA4のMCPサーバーを繋いで自然言語で分析する手順
Google公式のAnalytics MCPサーバーをClaude Codeに登録し、GA4のレポートを自然言語で問い合わせる手順。認証(ADC)、読み取り専用の範囲、質問例まで。
GoogleはGoogle Analytics向けのMCP(Model Context Protocol)サーバーを、GitHubのリポジトリ googleanalytics/google-analytics-mcp で公開しています。GA4のデータを、管理画面ではなくClaude Codeとの会話で問い合わせられるようになります。Google自身の説明は「GeminiのようなLLMにAnalyticsのデータをつなぐ」ですが、MCPに対応したクライアントなら同じサーバーを使えます。リポジトリにはClaude Code用の登録コマンドも載っています。
このサーバーは、自分のマシンで動くローカルサーバーです。BigQueryにエクスポートしていない標準のGA4プロパティでも動きます。SQLは要らず、Google Analytics Data APIの上に載っています。
Analytics MCPサーバーでできること
サーバーはGoogle Analytics Admin APIとData APIを使い、次の7つのツールを提供します。
| 区分 | ツール | 内容 |
|---|---|---|
| アカウント・プロパティ情報 | ツールget_account_summaries | 内容アカウントとプロパティの情報を取得 |
| 同上 | ツールget_property_details | 内容プロパティの詳細を返す |
| 同上 | ツールlist_google_ads_links | 内容プロパティに紐づくGoogle広告アカウントのリンクを返す |
| コアレポート | ツールrun_report | 内容Data APIでレポートを実行 |
| 同上 | ツールrun_funnel_report | 内容Data APIでファネルレポートを実行 |
| 同上 | ツールget_custom_dimensions_and_metrics | 内容指定プロパティのカスタムディメンション・カスタム指標を取得 |
| リアルタイム | ツールrun_realtime_report | 内容Data APIでリアルタイムレポートを実行 |
Googleのドキュメントは、このサーバーを「読み取り要求のみ」と説明しています。Google Analyticsの構成や設定を編集する機能はありません。書き込み系のツールが並んでいないのは、この説明どおりです。分析を任せる側としては、誤って計測設定を変えられる心配がない点が安心材料になります。
なおリポジトリのタイトルには「Experimental」と付いています。ツール名やパラメータが今後変わる可能性があるものとして扱っておくのが無難です。
前提: 必要なものを揃える
セットアップは大きく3段階です。Pythonの実行環境、Google Cloudプロジェクトでのプロジェクト設定、認証情報の用意です。
pipx(サーバーをpipx run analytics-mcpで起動するため)- Google Cloudプロジェクト。ここでGoogle Analytics Admin APIとGoogle Analytics Data APIの2つを有効にします
- 対象のGA4アカウント・プロパティにアクセスできるGoogleアカウント、またはそれを代理できるサービスアカウント
APIの有効化はGoogle Cloudコンソールで行います。GA4のプロパティがあるだけでは足りません。API呼び出しの窓口になるプロジェクトが別に要る、という構造です。
認証: ADCとreadonlyスコープ
認証はApplication Default Credentials(ADC)で行います。READMEの条件は2つです。
- 認証情報は、対象のGoogle Analyticsアカウントまたはプロパティにアクセスできるユーザーのものであること
- スコープに
https://www.googleapis.com/auth/analytics.readonlyを含めること
READMEはgcloudコマンドの例を2通り示しています。1つ目は、OAuthクライアントのJSONを使ってユーザー認証情報でADCを作る方法です。
gcloud auth application-default login \
--scopes https://www.googleapis.com/auth/analytics.readonly,\
https://www.googleapis.com/auth/cloud-platform \
--client-id-file=YOUR_CLIENT_JSON_FILE2つ目は、サービスアカウントを借用(impersonation)してADCを作る方法です。
gcloud auth application-default login \
--impersonate-service-account=SERVICE_ACCOUNT_EMAIL \
--scopes=https://www.googleapis.com/auth/analytics.readonly,\
https://www.googleapis.com/auth/cloud-platformどちらも、完了時に次の形で認証情報ファイルのパスが表示されます。このパスを次の登録手順で使うので、控えておきます。
Credentials saved to file: [PATH_TO_CREDENTIALS_JSON]サービスアカウントを借用する場合も、READMEの条件は「認証情報が対象アカウントやプロパティにアクセスできること」です。GA4側の権限の付け方はREADMEに書かれていないため、Google Analyticsの管理画面のアクセス管理で確認します。
Claude Codeに登録する
READMEのClaude Code向け手順は、claude mcp add を1本実行するだけです。
claude mcp add analytics-mcp \
--scope user \
-e "GOOGLE_APPLICATION_CREDENTIALS=PATH_TO_CREDENTIALS_JSON" \
-e "GOOGLE_PROJECT_ID=YOUR_PROJECT_ID" \
-- pipx run analytics-mcpPATH_TO_CREDENTIALS_JSON は前節で控えたパス、YOUR_PROJECT_ID はAPIを有効にしたGoogle CloudプロジェクトのIDに置き換えます。
-- より後ろがサーバーを起動するコマンド本体です。Claude Codeの公式ドキュメントでは、stdioサーバーではこの -- でClaude側のオプション(--env、--scope など)とサーバーへの引数を分けると説明されています。--env の直後にサーバー名を置くと、名前が別の環境変数として読まれて拒否されます。上の例のように --scope を間に挟めば問題ありません。
スコープの選び方
READMEの例は --scope user で、登録するとすべてのプロジェクトからGA4のMCPサーバーが見えます。Claude Codeには3つのスコープがあります。
| スコープ | 読み込まれる範囲 | チーム共有 | 保存先 |
|---|---|---|---|
| local(既定) | 読み込まれる範囲現在のプロジェクトだけ | チーム共有なし | 保存先~/.claude.json |
| project | 読み込まれる範囲現在のプロジェクトだけ | チーム共有あり(バージョン管理) | 保存先プロジェクト直下の .mcp.json |
| user | 読み込まれる範囲すべてのプロジェクト | チーム共有なし | 保存先~/.claude.json |
認証情報ファイルのパスは自分のマシン固有の値です。.mcp.json に書いてチームで共有するには向きません。projectスコープにするなら、認証情報のパスは各自の環境変数で持たせる構成にします。個人でGA4を見る用途なら、READMEどおりuserかlocalで足ります。
つながったかを確認する
登録できたかは、次のコマンドで確認できます。Claude Codeを起動している場合は、セッション内の /mcp でも見られます。
claude mcp list一覧に analytics-mcp が出て、状態が ✔ Connected ならつながっています。✘ Failed to connect が出たら、Claude Codeがサーバーに接続できていません。pipx が実行できるか、認証情報ファイルのパスが正しいかを見直します。
Claude Desktopで使う場合
READMEにClaude Desktop向けの手順はありません。ただしClaude Desktopは claude_desktop_config.json の mcpServers にサーバーを書く方式で、要素は command / args / env です。READMEのGemini向け設定例と同じ形なので、同じ内容を移せます。
{
"mcpServers": {
"analytics-mcp": {
"command": "pipx",
"args": ["run", "analytics-mcp"],
"env": {
"GOOGLE_APPLICATION_CREDENTIALS": "PATH_TO_CREDENTIALS_JSON",
"GOOGLE_PROJECT_ID": "YOUR_PROJECT_ID"
}
}
}
}これは、READMEのGemini向け設定を土台にした書き方の例です。READMEがClaude Desktopでの動作を案内しているわけではありません。ファイルの置き場所や反映手順はClaude Desktop MCP設定ガイドにまとめています。
環境変数の名前にはひとつ注意点があります。READMEの本文は「GOOGLE_CLOUD_PROJECT をenvに足すことを推奨」と書く一方、サンプルのJSONと claude mcp add の例は GOOGLE_PROJECT_ID を使っています。サンプルはどちらも GOOGLE_PROJECT_ID に統一されているので、まずはサンプルどおりに書くのが確実です。
問い合わせの例
登録後は、Claude Codeに自然文で聞くだけです。READMEとGoogleのドキュメントが挙げている質問は次のとおりです。
what can the analytics-mcp server do?(サーバーで何ができるか)Give me details about my Google Analytics property with 'xyz' in the name(名前にxyzを含むプロパティの詳細)what are the most popular events in my Google Analytics property in the last 180 days?(直近180日でよく発生したイベント)were most of my users in the last 6 months logged in?(直近6か月のユーザーの多くはログイン済みか)what are the custom dimensions and custom metrics in my property?(プロパティのカスタムディメンションとカスタム指標)How many users did I have yesterday?(昨日のユーザー数)What were my top selling products yesterday?(昨日売れた商品の上位)
READMEの例はGemini向けですが、質問の中身はMCPクライアントに依存しません。プロパティの特定にはアカウント情報系のツール、集計にはレポート系のツールが使われます。どのツールがどの順で呼ばれたかは、Claude Codeの表示で確認できます。
質問の書き方で結果が安定する
ここからは、Claude Code側で工夫できる部分です。レポート系のツールは、期間・ディメンション・指標を指定して呼び出します。曖昧な聞き方をすると、Claudeが期間や指標を自分で補います。手元の問いに対して答えが揺れないよう、条件を先に書いておきます。
- 期間を日付で書く(「先月」より「2026-08-01から2026-08-31」)
- 見たい指標を名前で挙げる(セッション数、アクティブユーザー、イベント数など)
- 対象のプロパティを名前かIDで指定する
例えば次のように聞きます。
プロパティ「my-site」の 2026-08-01 から 2026-08-31 について、
ページ別のセッション数の上位10件を出して。
run_report でどのディメンションと指標を使ったかも書いて。最後の一行が肝です。Claudeが実際に指定したディメンションと指標を答えに書かせると、数字の意味を後から確かめられます。管理画面の値と突き合わせる際にも、条件が揃っているかを確認できます。
CLAUDE.mdに前提を置く
毎回プロパティ名や期間の書き方を伝えるのは手間です。GA4の分析を繰り返すプロジェクトなら、CLAUDE.md に前提を書いておくと、質問が短くなります。次はその一例で、公式の記述ではなく運用上の書き方の案です。
## GA4の問い合わせ規約
- 分析対象は analytics-mcp のプロパティ「my-site」
- 期間は必ず日付で指定し、比較するときは同じ長さの前期間と並べる
- 数字を答えるときは、使ったディメンションと指標を併記する
- 設定変更が必要な提案は、実行せず手順だけを示す最後の一行は、サーバー自体が読み取り専用でも、GA4の設定変更を提案されたときに、手順として受け取る運用にしておくためのものです。
出力が大きいときの上限
レポートが長い行数を返すと、Claude Codeの側で出力に制限がかかります。Claude Codeは、MCPツールの出力が10,000トークンを超えると警告を出し、既定では25,000トークンで出力を打ち切ります。上限を上げたいときは、環境変数 MAX_MCP_OUTPUT_TOKENS を設定します(警告のしきい値は固定です)。
MAX_MCP_OUTPUT_TOKENS=50000 claudeとはいえ、上限を上げるより、条件を絞ったレポートを複数回に分けて取るほうが扱いやすくなります。ページ別・流入元別など、ディメンションごとに質問を分けます。
つまずきやすい点
| 症状 | 見直す箇所 |
|---|---|
Failed to connect になる | 見直す箇所pipx が実行できるか、GOOGLE_APPLICATION_CREDENTIALS のパスが実在するか |
| プロパティが1件も出ない | 見直す箇所認証したユーザー(またはサービスアカウント)がGA4側で対象プロパティにアクセスできるか |
| APIエラーになる | 見直す箇所Admin APIとData APIの両方をプロジェクトで有効にしたか |
| 権限エラーになる | 見直す箇所スコープに analytics.readonly を含めてADCを作ったか |
上の対処は、READMEが求めている前提条件から順に確認する項目です。エラー文字列ごとの原因はREADMEに載っていません。
ほかのGoogle系MCPサーバーとの違い
BigQueryにGA4のデータをエクスポートしている場合は、Claude BigQuery連携のように、SQLで生データを扱う道もあります。今回のAnalytics MCPサーバーは、SQLもBigQueryも不要で、Data APIのレポートを単位に問い合わせる点が違います。標準のGA4プロパティだけで始められるのが入口の軽さです。
Google Cloud全般の操作はgcloud MCPサーバー、権限の絞り込みはGoogle CloudのMCPサーバーをIAMで権限制御するが扱っています。MCPそのものの仕組みはMCPとはを参照してください。
まとめ
Analytics MCPサーバーは、ローカルで動く読み取り専用のサーバーです。登録は claude mcp add 1本、必要なのはpipx・2つのAPIの有効化・analytics.readonly スコープ付きのADCだけです。GA4の設定を書き換える機能はなく、レポートの取得に用途が絞られています。質問には期間と指標を明示し、答えに使った条件を併記させると、数字を後から検証しやすくなります。