🤖 AIでこの記事を要約・質問する
GA4 MCPサーバーをGemini CLIに接続する方法
本記事では、GA4(Google Analytics 4)のMCPサーバーをGoogle Gemini CLIに接続する手順を解説します。Gemini CLIはGoogleが提供するオープンソースのコマンドラインAIエージェントで、ターミナル上からGeminiの機能を利用できます。既にCloud RunにデプロイしたGA4 MCPサーバーをそのまま活用し、Streamable HTTP + OAuth 2.0 Dynamic Discoveryで接続します。
📌 前提条件
本記事は、GA4 MCPサーバーが既にCloud Runにデプロイされていることを前提としています。まだデプロイしていない場合は、先にChatGPT版の接続手順書のステップ5〜7を実施してください。
📋 GA4 MCP Serverシリーズ記事
- Claude Desktop編(Stdio接続・初心者向け)
- ChatGPT編(Streamable HTTP・Cloud Run)
- Microsoft Copilot Studio編(動的検出・無料トライアル)
- Gemini CLI編(コマンドライン・無料)← この記事
1. Gemini CLIとは
Gemini CLIは、Googleが2025年にオープンソースとして公開したAIエージェントツールです。通常のGeminiウェブアプリ(gemini.google.com)はカスタムMCPサーバーに非対応ですが、Gemini CLIはMCPサーバーへの接続をサポートしており、GA4データの自然言語での分析が可能になります。
| 項目 | 内容 |
|---|---|
| 提供形態 | コマンドラインツール(ターミナル操作) |
| インストール | npm(Node.jsパッケージマネージャー) |
| MCPサポート | Stdio / SSE / Streamable HTTP |
| 認証方式 | OAuth 2.0 Dynamic Discovery / Google認証情報 / サービスアカウント |
| 料金 | 無料(Googleアカウントが必要) |
2. ChatGPT・Copilot Studioとの違い
GA4 MCPサーバーはChatGPT、Microsoft Copilot Studio、Gemini CLIの3つのプラットフォームで利用できます。それぞれの特徴を比較します。
| 項目 | ChatGPT | Copilot Studio | Gemini CLI |
|---|---|---|---|
| 操作環境 | Webブラウザ | Webブラウザ | ターミナル |
| 設定方法 | GUI画面 | GUI画面 | JSONファイル編集 |
| OAuth設定 | 自動(DCR) | 動的検出 | 動的検出 |
| リダイレクトURI | chatgpt.com/… | azure-apim.net/… | http://localhost/oauth/callback |
| ライセンス | 有料 | 無料トライアルあり | 無料 |
ChatGPTと同じCloud Run上のGA4 MCPサーバーをそのまま利用できますが、Gemini CLI対応のためにサーバー側の軽微な修正(1行のみ)とCloud Runの再デプロイが必要です。
3. MCPサーバーの更新(Gemini CLI対応)
Gemini CLIは、OAuth認証時にサーバーの .well-known/oauth-protected-resource エンドポイントが返す resource フィールドと、settings.json の httpUrl が完全一致することを検証します。現在のサーバーではこの値が一致しないため、修正が必要です。
3.1 エラーの内容
修正前のサーバーでGemini CLIのMCP認証を行うと、以下のエラーが発生します。
Failed to authenticate with MCP server 'ga4-analytics':
Protected resource https://ga4-mcp-v2-xxxx.us-central1.run.app
does not match expected
https://ga4-mcp-v2-xxxx.us-central1.run.app/mcpサーバーの /.well-known/oauth-protected-resource が返す resource が https://...run.app(末尾に /mcp なし)であるのに対し、Gemini CLIは httpUrl の値 https://...run.app/mcp との一致を検証するためです。
3.2 http_server.pyの修正
Cloud Runのソースコードフォルダにある http_server.py を開き、oauth_protected_resource 関数の1行だけを変更します。
変更前:
"resource": base,変更後:
"resource": f"{base}/mcp",ChatGPT・Copilot Studioへの影響はありません
この変更はChatGPTやCopilot Studioの接続に影響しません。これらのプラットフォームは resource フィールドの厳密な検証を行わないため、安全に変更できます。
3.3 Cloud Runへの再デプロイ
ファイルを保存したら、PowerShellでソースコードのフォルダに移動し、以下のコマンドでCloud Runに再デプロイします。
gcloud run deploy ga4-mcp-v2 --source . --region=us-central1デプロイが完了したら、ブラウザで以下のURLにアクセスし、resource に /mcp が付いていることを確認してください。
https://ga4-mcp-v2-xxxx.run.app/.well-known/oauth-protected-resource4. 前提条件の確認
4.1 必要な環境
- Node.js: v18以上(Gemini CLIの実行に必要)
- npm: Node.jsに付属(パッケージマネージャー)
- Googleアカウント: Gemini CLIの利用に必要
- GA4 MCPサーバー: Cloud Runにデプロイ済みであること
- Google Cloud Console: OAuthクライアントIDの編集権限
4.2 Node.jsの確認とインストール
Gemini CLIはNode.jsが必要です。PowerShellで以下を実行して確認します。
node --versionv18以上が表示されればOKです。表示されない場合は https://nodejs.org/ja からインストールしてください。ChatGPT接続手順書でデプロイ作業を行った際にNode.jsをインストール済みであれば、追加のインストールは不要です。
4.3 準備する情報
| 項目 | 例 |
|---|---|
| MCPサーバーURL | https://ga4-mcp-v2-xxxx.us-central1.run.app/mcp |
| SERVICE_URL | https://ga4-mcp-v2-xxxx.us-central1.run.app |
| Google OAuthクライアントID | xxxx.apps.googleusercontent.com |
5. Gemini CLIのインストールと初期設定
5.1 Gemini CLIのインストール
PowerShellを開き、以下のコマンドでGemini CLIをグローバルインストールします。
npm install -g @google/gemini-cli

インストール完了後、以下で確認します。
gemini --versionnpxでも実行可能
グローバルインストールせずに npx @google/gemini-cli でも実行できますが、毎回ダウンロードが発生するためグローバルインストールを推奨します。
5.2 初回起動とGoogleアカウント認証
PowerShellで gemini を実行してGemini CLIを起動します。初回起動時はブラウザが開き、Googleアカウントでのログインを求められます。ログインしてアクセスを許可すると、ターミナルにGemini CLIのインタラクティブ画面が表示されます。

ターミナルに「>」プロンプトが表示されれば、Gemini CLIのセットアップは完了です。一旦 /exit で終了し、次のMCPサーバー設定に進みます。

6. MCPサーバーの接続設定
6.1 リダイレクトURIの事前登録
Gemini CLIのOAuth認証では、コールバック先としてローカルの localhost を使用します。Google Cloud Consoleに事前登録が必要です。
- Google Cloud Consoleを開きます
- 「APIとサービス」→「認証情報」を選択します
- 対象のOAuth 2.0クライアントIDをクリックします
- 「承認済みのリダイレクトURI」に以下を追加します:
http://localhost/oauth/callback- 「保存」をクリックします

ポート番号について
Gemini CLIは実際には http://localhost:XXXXX/oauth/callback のようにランダムなポート番号を使用します。Googleの仕様では、http://localhost のリダイレクトURIを登録すると、ポート番号が異なっても自動的にマッチします(localhostループバックの特別扱い)。パス部分(/oauth/callback)は完全一致が必要です。
重要: 反映に時間がかかります
リダイレクトURIの変更が反映されるまで最低5分程度かかります。保存後すぐに認証を試すとエラーになる場合があります。また、既存のリダイレクトURI(ChatGPT用・Copilot Studio用)は削除しないでください。複数のリダイレクトURIを並列で登録できます。
6.2 settings.jsonの作成
Gemini CLIのMCPサーバー設定は、settings.json ファイルに記述します。以下のフォルダに作成してください。
ファイルパス: C:\Users\[ユーザー名]\.gemini\settings.json
{
"mcpServers": {
"ga4-analytics": {
"httpUrl": "https://ga4-mcp-v2-xxxx.us-central1.run.app/mcp",
"oauth": {
"enabled": true
}
}
}
}URLを書き換えてください
xxxx 部分を実際のCloud RunのサービスURLに置き換えてください。URLの末尾に /mcp を忘れずに付けてください。
OAuth Dynamic Discoveryの仕組み
"oauth": { "enabled": true } と設定するだけで、Gemini CLIが自動的にMCPサーバーの /.well-known/oauth-authorization-server と /.well-known/openid-configuration エンドポイントを検出します。Client IDやToken URLの手動入力は不要です。

6.3 PowerShellでのファイル作成コマンド
テキストエディタを使わず、PowerShellだけで設定ファイルを作成することもできます。
# .geminiフォルダを作成(存在しない場合)
New-Item -ItemType Directory -Force -Path "$env:USERPROFILE\.gemini"
# settings.jsonを作成
@'
{
"mcpServers": {
"ga4-analytics": {
"httpUrl": "https://ga4-mcp-v2-xxxx.us-central1.run.app/mcp",
"oauth": {
"enabled": true
}
}
}
}
'@ | Out-File -Encoding utf8 "$env:USERPROFILE\.gemini\settings.json"7. OAuth認証と動作確認
7.1 Gemini CLIの起動とMCP認証
PowerShellでGemini CLIを起動し、MCPサーバーの認証を実行します。
geminiGemini CLIのプロンプト内で、以下のコマンドを実行します。
/mcp auth ga4-analyticsブラウザが自動的に開き、Googleアカウントのログイン画面が表示されます。GA4にアクセス権があるアカウントでログインし、アクセスを許可してください。認証が成功すると、ターミナルに成功メッセージが表示されます。

トークンの保存先
OAuthトークンは ~/.gemini/mcp-oauth-tokens.json に自動保存されます。次回以降は自動的にトークンが使用され、再認証は不要です。トークンの期限が切れた場合は自動リフレッシュされます。
7.2 MCPサーバーの接続確認
接続中のMCPサーバーとツールを確認するには、以下のコマンドを実行します。
/mcp以下のようなツールが表示されるはずです。
| ツール名 | 説明 |
|---|---|
list_accounts | GA4アカウントの一覧を取得 |
list_properties | GA4プロパティの一覧を取得 |
run_report | GA4レポートデータの取得 |
run_realtime_report | リアルタイムデータの取得 |
7.3 テスト実行
Gemini CLIのプロンプトで、以下のように質問してみましょう。
> GA4で利用可能なアカウントを一覧表示してください
> 過去7日間のPV数をページ別に教えてくださいGA4データが返ってくれば、接続は正常です。今後は gemini コマンドを実行するだけで、GA4データを利用した分析が可能になります。

8. 便利なコマンドと設定ファイル
8.1 MCP関連コマンド
| コマンド | 説明 |
|---|---|
/mcp | MCPサーバーの接続状況とツール一覧を表示 |
/mcp auth ga4-analytics | GA4 MCPサーバーのOAuth認証を実行 |
/tools | 利用可能なツールの一覧を表示 |
/exit | Gemini CLIを終了 |
8.2 設定ファイルの位置
| ファイル | パス | 用途 |
|---|---|---|
| settings.json | ~/.gemini/settings.json | MCPサーバーの接続設定 |
| mcp-oauth-tokens.json | ~/.gemini/mcp-oauth-tokens.json | OAuthトークンの保存先 |
プロジェクト単位の設定も可能
プロジェクトフォルダに .gemini/settings.json を置くと、そのプロジェクト内でのみ有効な設定として使えます。
9. トラブルシューティング
9.1 redirect_uri_mismatchエラー
症状: ブラウザで「エラー 400: redirect_uri_mismatch」が表示される。
原因: Google Cloud ConsoleにリダイレクトURIが登録されていない、または反映待ち。
解決方法:
- Google Cloud Consoleで「承認済みのリダイレクトURI」に
http://localhost/oauth/callbackを追加 - 保存後、5分以上待ってから再試行
9.2 MCPサーバーが接続されない
settings.jsonのパスが正しいか確認(~/.gemini/settings.json)- JSONのフォーマットが正しいか確認(カンマや括弧の誤り)
httpUrlの末尾に/mcpが付いているか確認- Cloud Runのサービスが稼働中か確認
9.3 認証トークンのリセット
認証に問題がある場合、トークンを削除して再認証できます。
# Windows (PowerShell)
Remove-Item "$env:USERPROFILE\.gemini\mcp-oauth-tokens.json"
# その後、Gemini CLIを再起動して再認証
gemini
/mcp auth ga4-analytics9.4 Protected resource does not match expected
症状: /mcp auth 実行時に「Protected resource … does not match expected」エラーが表示される。
原因: http_server.py の resource フィールドに /mcp が付いていない。
解決方法: セクション3の手順に従い、http_server.py を修正してCloud Runに再デプロイしてください。
9.5 Cloud Runログの確認
問題が解決しない場合は、Cloud Runのログを確認してください。
gcloud run services logs read ga4-mcp-v2 --region=us-central1 --limit=50セットアップチェックリスト
| No. | 確認項目 |
|---|---|
| 1 | http_server.pyのresourceフィールドを修正した |
| 2 | Cloud Runに再デプロイした |
| 3 | Node.js v18以上がインストール済みである |
| 4 | Gemini CLIをインストールした |
| 5 | GoogleアカウントでGemini CLIにログインした |
| 6 | Google Cloud Consoleで http://localhost/oauth/callback を追加した |
| 7 | ~/.gemini/settings.json を作成した |
| 8 | /mcp auth ga4-analytics でOAuth認証が成功した |
| 9 | /mcp でツール一覧が表示された |
| 10 | GA4データの取得テストが成功した |
最後に
Gemini CLIを使うことで、ターミナルから直接GA4データにアクセスし、自然言語でGA4データの分析ができるようになりました。Googleアカウントがあれば無料で利用できるため、コマンドライン操作に慣れている方にとっては非常に便利な選択肢です。
GA4 MCPサーバーはClaude Desktop(Claude版の手順はこちら)、ChatGPT(ChatGPT版の手順はこちら)、Microsoft Copilot Studio(Copilot版の手順はこちら)でも利用できます。お使いのAIツールに合わせてお試しください。
