GA4 Analytics MCP V2
GA4 Analytics MCP V2
Claude.ai カスタムコネクタ向けの複数オペレーター対応 Google Analytics 4 コネクタです。Google Cloud Run 上でホストされています。
これはバージョン 2 です。V1 とは別のアプリケーションです。V1 のシークレット、OAuth クライアント、Cloud Run サービス、Git リモートを再利用しないでください。
Operator A or Operator B
→ same Claude Custom Connector URL
→ https://<v2-host>/mcp
→ MCP OAuth (Claude → V2)
→ Google OAuth (operator's own Google account)
→ operator credentials + active GA4 property in Firestore
→ GA4 Admin / Data APIsローカル向けの stdio サーバーや Supabase はありません。
アーキテクチャ
2 つの OAuth レイヤーがリンクしています:
Claude → V2: MCP OAuth 2.1(保護リソースメタデー、DCR、CIMD、PKCE)
V2 → Google: Google サインインは MCP authorize の中で 行われます。MCP アクセストークンの
srは、Google アカウントの субジェクト(sub)です。メールアダレスは表示専用です。
各オペレーター:
自分用に暗号化された Google リフレッシュ・トークン
自分だけがアクセスできる GA4 プロパティ一覧(Google Admin API から取得)
自分だけが保持する永続的なアクティブ・プロパティ
オペレーター A は、オペレーター B の Google 資格情報を使用したリ、Google アカウント A がアクセスできないプロパティを選択することはできません。
Related MCP server: GA4 MCP Server
MCP ツール
ツル | 目的 |
| 認証されたオペレーター(電子メール + 内部 operatorId)。トークンは含まれません。 |
| その Google アカウント・ベースで参照可能なプロパティ。 |
| 現在選択されているプロパティ |
| ライブの許可リスト・チエック後に行われる切替え |
| アクティブまたは新たに認証されたプロパティのデめンション / メトりクス |
| 歴史 GA4 レポート |
| 直近の ~30 分 |
レポート・ツルは、propertyId が省略された場合は、保存されているアクティブ・プロパティを使用します。指定された propertyId が有効になるのは、認証された Google アカウントがそのプロパティへアクセスできる場合だけです。その場合、それが新しいアクティブ・プロパティになります。
ローカル開発
cd D:\MCP_Servers\Ga4McpV2
npm install
copy .env.example .env.local.env.local には V2 の値を入力してください。V1 のシークレットはコピーしないでください。
オプションの Firestore エミュレー ター:
gcloud emulators firestore start --host-port=localhost:8080.env.local に FIRESTORE_EMULATOR_HOST=localhost:8080 と FIRESTORE_PROJECT_ID を設定します。
npm run dev
npm test
npm run buildアプリ:
http://localhost:3000MCP:
http://localhost:3000/mcpヘルス:
http://localhost:3000/healthGoogle コールバック:
http://localhost:3000/oautオ/google/callback
ところが、Claude.ai は localhost に到達できません。カスーム・コネクタを追加する前に、V2 を Cloud Run にデプロイしてください。
環境変数
変数 | 必須 | 目的 |
| はい | パブリック・オリジン。末尾スラッシュなし |
| はい | V2 用 Google OAuth Web クライアント |
| はい | V2 用 Google OAuth シークレット |
| いいえ | デフォルトは |
| はい | MCP JWT を署名 |
| はい | Google ステート の署名と 保留中 authorize のクッキー の暗号化 |
| はい | Google リフレッシュ・トークン を保存時にお号化 |
| 本番 | Fireストア・プロジェクト |
| ローカル/テスと | Fireストア・エミュレーター・ホスト |
| いいえ | オプションの事前登録済みの専用 Claude クライアント |
| いいえ | 上記のオプション・クライアント 用 ペ ア |
V2 は、GOOGLE_REFRESH_TOKEN も MCP_AUTH_TOKENも使用しません。
Google Cloud 設定
可能な場合は新しい Google Cloud プロジェクトを使用してください。V1 とプロジェクトを共有する場合でも、それ用の Cloud Run サービス、Artifact Registry リポジトリ、OAuth クライアント、シークレットを作成してください。
有効にするもの:
Cloud Run
Cloud Build
Artifact Registry
Firestore
Secret Manager
Google Analytics Admin API
Google Analytics Data API
推奨されるリソース名(プレースホルダーはあなたのプロジェクトで置き換え):
Cloud Run サービス:
ga4-mcp-v2Artifact Registry:
ga4-mcp-v2Firestore コレクション:
operators
Cloud Run サービスアカウントには以下が必要:
V2 Firestore データベースに対する
roles/datastore.userV2 のシークレットのみに対する
roles/secretmanager.secretAccessor
サービスアカウントに Secret Manager 管理者権限や、V1 のシークレットへのアクセス権を付与しないでください。
Google OAuth クライアント(V2 のみ)
新しい OAuth Web アプリケーションを作成してください。V1 クライアントを編集しないでください。
Consent Screen
ユーザータイプ: External(Workspace のみ Lite の場合は Internal)
アプリ名:
GA4 MCP Connector V2などスコープ:
openidemailhttps://www.googleapis.com/auth/analytics.readonly
アプリが Testing の間はテストユーザーを追加
Analytics のスコープは機微/sensitive なため、一般ユーザーには公開(Publishing)が必要
認証済みのリダイレクト URI:
https://<v2-cloud-run-url>/oauth/google/callbackローカル:
http://localhost:3000/oauth/google/callbackClaude カスタムコネクタ
V2 をデプロイし、
APP_BASE_URLを Cloud Run の URL に設定します。Claude でカスタムネクタを追加します。
URL:
https://<v2-host>/mcp各オペレーターは自分の Claude アカウントから Google サインインを行います。
もし Google アカウントに複数の GA4 プロパティがある場合は、オペレーターは 1 つ選択します。その選択は切り替えるまで保持されます。
テスト
npm testユニットテストでカバーされる内容:
MCP OAuth メタデータ、DCR、PKCE、Google 側にバインドされた OAuth トークンの
sub(サブジェクト)オペレーターの分離(認証情報とプロパティ許可リスト)
永続化された アクティブプロパティ
トークンのリフレッシュ / ローテーション
取り消された Google 認可許可
構造化ログの 機密情報 マスキング(redaction)
ライブな V1 の認証情報は使用されません。
デプロイ(リクエストされるまで実行しないでください)
ドキュメント用のみの記述です。V1 のデプロイはそのまま変更なしに保ってください。
.\scripts\cloud-run-setup.ps1 -ProjectId YOUR_V2_PROJECT_ID
.\scripts\cloud-run-deploy.ps1 -ProjectId YOUR_V2_PROJECT_ID
.\scripts\cloud-run-set-env.ps1 `
-ProjectId YOUR_V2_PROJECT_ID `
-AppBaseUrl https://YOUR_V2_CLOUD_RUN_URL `
-GoogleClientId YOUR_V2_CLIENT_ID `
-GoogleClientSecret YOUR_V2_CLIENT_SECRET `
-McpTokenSecret YOUR_MCP_TOKEN_SECRET `
-OauthStateSecret YOUR_OAUTH_STATE_SECRET `
-TokenEncryptionKey YOUR_TOKEN_ENCRYPTION_KEYシークレットについて、本番環境ではプレーンの環境変数値ではなく、Secret Manager 参照を推奨します。
デプロイ後:
V2 OAuth クライアントに Cloud Run のコールバック URI を追加します。
Firestore がネイティブモードで作成されていることを確認します。
Claude に
https://<v2-host>/mcpを追加します。
セキュリティ上の考慮点
リフレッシュトークンは Firestore へ書き込む前に AES-256-GCM で暗号化されます。
MCP ツールがアクセストークン、リフレッシュトークン、認証コードを返すことはありません。
ログではトークン、シークレット、クッキー、認証コードがマンキングされます。
Claude からのプロパティ ID は、そのオペレーターに対するライブ Admin API 一覧と照合されます。
リクエストにオペレーターのコンテキストが関連付けられていない場合、ツールはフェイルクローズド(遮断モード)で動作します。
本番では HTTPS 限定のクッキーです。
Git
このリポジトリは V2 のみです。以前の V1 リモートは git@github.com:devopsbrandirechi/Ga4McpServer.git であり、ここには入れないでください。V2 公開時には新しい GitHub リポジトリを作成してください。
This server cannot be deployed
Maintenance
Related MCP Connectors
GA4, Google Ads and Search Console in Claude. Read-only OAuth, multi-account for agencies.
Live Google Ads, GA4, Search Console, Meta Ads and GBP data in Claude, ChatGPT and any MCP client
Hosted MCP server for GA4, Google Ads and Search Console. Google OAuth, nothing to install.
Read-only Google Analytics 4 MCP server for AI assistants.
1
Related MCP Servers
- AlicenseAqualityBmaintenanceConnects Google Analytics 4 data to Claude, Cursor and other MCP clients, enabling natural language queries of website traffic, user behavior, and analytics data with access to 200+ GA4 dimensions and metrics.101,637 PyPI242MIT
- AlicenseAqualityBmaintenanceConnects MCP clients like Claude Desktop to Google Analytics 4 Data API, enabling natural language queries for reports, top pages, traffic sources, conversions, realtime users, and period comparisons.720 PyPIMIT
- FlicenseNot gradedqualityCmaintenanceEnables MCP clients to read Google Analytics 4 data, deployed as a Cloudflare Worker with service account authentication.2-
- AlicenseAqualityDmaintenanceEnables LLM applications to query and analyze Google Analytics 4 data through standard MCP interfaces, supporting service account and OAuth2 authentication.555 npmMIT