GA4のMCPサーバーは「Google認証で自作」が最適だった|公式・第三者・トークン方式と比べた選定基準

Google Analytics(GA4)のデータをClaudeやChatGPTから直接読むには、MCPサーバーが必要です。「つなぎ方」を書いた記事は増えましたが、「どの方式を選ぶか」を比べたものは見当たりません。当社は4つの方式を検討し、自作(Cloud Runでのリモートサーバー)を選びました。さらに自作の中でも、初版の「トークン認証」から「利用者が自分のGoogleアカウントでログインする方式(OAuth 2.1)」に作り直しています。利用者の手順はコネクタにURLを登録して、Googleでログインするだけ。この方式で作ったサーバーは mcp-dir Hub として誰でも使える形で公開しています。その判断材料を、2026年9月時点の実態として公開します。

初版 2026年9月7日/更新 2026年9月22日(Google認証版を追加)/更新 2026年10月3日(公開版 mcp-dir Hub と、公開後に分かったことを追記)/使用クライアント:Claude Code・Claude(Anthropic)。各サービスの仕様は変わるため、半年ごとに検証し直して更新します(次回 2027年3月予定)。

結論:方式はここが違う

違いは「サーバーがどこで動くか」「認証情報をどこに置くか」「利用者が何をするか」の3点に集約されます。

サーバーの置き場所 認証情報はどこに チームで共有 Google 公式 analytics-mcp ローカル型・実験版 各自のPC 各自のPCにJSON Google Cloud リモートMCP 70製品以上が対応 Google Google認証 GA4は対象外 第三者のMCPコネクタ Windsor・Porter 等(未検証) 第三者 第三者にOAuth 自作(トークン認証) 当社の初版・Cloud Run 自社 サーバー側だけ 自作(Google認証・OAuth 2.1) 当社の現行・Cloud Run 自社 本人のGoogleログイン 2026年9月22日時点
方式 費用 利用者がすること 見えるデータの範囲 向いている相手
Google公式 analytics-mcp 無料 端末にサーバーを入れ、鍵ファイルを置く 置いた鍵の権限 1人で試す人
Google Cloud リモートMCP — — — GA4は対象外
第三者のMCPコネクタ 有料(月額) URL登録とOAuth許可 本人の権限 社内にエンジニアがいない場合
自作(トークン認証) 実行時間のみ(少額) URLとトークンを受け取って登録 サーバーの鍵の権限(全員同じ) 少人数・社内限定
自作(Google認証・OAuth 2.1) 実行時間のみ(少額) URL登録とGoogleログイン 本人の権限 チーム・社外にも広げたい場合

そもそもGA4のMCPサーバーは何をしているのか

MCP(Model Context Protocol)は、AIに外部のデータやサービスをつなぐための共通規格です。GA4の文脈では、AIの代わりにGoogle Analytics Data APIを叩いて、結果をAIが読める形で返す小さなサーバーがMCPサーバーにあたります。

これがないと、GA4の数字をAIに見せる作業は「管理画面でレポートを作る → CSVで書き出す → チャット欄に貼る」の手作業になります。つないでしまえば、「先月の流入元別のコンバージョンを出して」と書くだけで、AIが自分でAPIを呼んで答えます。読み取り専用で作るのが基本で、公式・自作いずれも書き込みはしません。GA4の設定がAIによって勝手に変わることはない、という前提です。

MCPそのものの仕組みは MCP連携とは で解説しています。この記事では、GA4に限った「どう用意するか」だけを扱います。

Google公式のGoogle Analytics MCPで足りなかった3点

まず前提として、公式サーバーはよくできています。GitHubの googleanalytics/google-analytics-mcp がそれで、無料・読み取り専用・first-partyです。導入は pipx run analytics-mcp を指定する形で、実質コマンド1行です。コミュニティ製の非公式ラッパーを使う理由は、もうほとんどありません。

それでも当社の用途には合いませんでした。理由は3つあり、いずれも機能ではなく「どこで動くか」に関する制約です。

① 「リモート」ではなくローカル型だった

公式は各自の端末で動かすローカル型で、ホスト型(リモート)は提供されていません。つまり利用者ごとに、端末にサーバーを入れ、認証情報のJSONファイルを置く必要があります。当社は「ディスクに秘密鍵を置かない」方針で他のMCPサーバーを運用していたため、ここが噛み合いませんでした。

② GA4はGoogle Cloudの公式リモートMCPの対象外だった

Google Cloudは2026年3月から、対応サービスを有効にすると自動でリモートMCPサーバーが使えるようになりました。BigQuery・Cloud SQL・Cloud Run など70製品以上が対象です。しかしGoogle Analytics・Analytics Data API・Search Consoleは、この一覧に含まれていません(2026年9月22日時点で再確認)。

③ Claudeのコネクタ一覧にもGA4はない

Claudeのコネクタ一覧にはNotionやSlackなどが並びますが、GA4・Search Console・Google広告といったデータ系サービスは収録されていません。ワンクリックで繋ぐ経路は、現時点では存在しません。

ツールの数では公式が上。ただし後から足せる

公平に書くと、機能面では公式のほうが充実しています。公式は7つ、当社の自作は2つからのスタートでした。

Google 公式(7ツール) アカウント一覧 プロパティ詳細 Google広告の連携確認 レポート取得 ファネル分析 カスタム項目の確認 リアルタイム 青=自作にもある ピンク=自作に無い 読み取り専用・無料・実験版 当社の自作(2ツールで開始) レポート取得 リアルタイム 足りないもの ファネル分析/カスタム項目の確認 必要になった時点で、後から足せる 使う分だけ作れるので、最初は小さく始められる 読み取り専用にする設計は公式と同じ ツールの数だけを見れば公式が上。ただし「使わないツールが7つある」ことに価値はなく、 必要になった時点で足せるなら、少なく始めても困りません。

自作は2段階で進めた:まずトークン認証、次にGoogle認証

自作と決めてから、当社は2回作っています。1回目は最小構成の「トークン認証」、2回目が現在使っている「Google認証(OAuth 2.1)」です。先に最小構成を出して、人数が増えたときに困った点を2回目で直した、という順番です。

初版:トークン認証 現行:Google認証(OAuth 2.1)
利用者の手順 管理者からURLとトークンを受け取り、クライアントに登録 コネクタにURLを登録し、Googleでログイン
GA4を呼ぶ名義 サーバーが持つサービスアカウント(全員同じ) 利用者本人のGoogleアカウント
見えるプロパティ サービスアカウントに権限を付けたもの全部 本人がGA4で見られるものだけ
利用者を外すとき トークンを無効化し、全員に再配布 GA4側の権限を外すだけ
サーバーが持つ秘密 サービスアカウントの鍵と共有トークン OAuthクライアントの秘密のみ(GA4の鍵は持たない)
構築の手間 4ファイル・本体約200行 認証まわりが増え、初版の数倍

トークン認証で困った2点

1つ目は「誰が呼んでも同じ権限」になること。サーバーは1つのサービスアカウントでGA4を呼ぶので、トークンを持つ人は、そのアカウントに権限を付けたプロパティを全部読めます。社内数人なら問題ありませんが、社外の人やクライアント企業に開放するには向きません。

2つ目はトークンの配布と回収。増員のたびに管理者がトークンを渡し、誰かが抜けたら全員分を作り直す運用になります。人数が10人を超えたあたりから、この手間が無視できなくなりました。

Google認証(OAuth 2.1)にすると何が変わるか

利用者は自分のGoogleアカウントでログインし、サーバーはその人の名義でGA4を呼びます。見えるデータの範囲は「本人がGA4で見られるもの」と完全に一致し、境界を決めるのはGoogle側になります。サーバーにはプロパティの許可リストもサービスアカウントの鍵もありません。コードにバグがあっても、本人の権限を超えて読める余地がない設計です。

ClaudeやChatGPTのカスタムコネクタは、この方式(OAuth 2.1+PKCE、クライアントの自動登録、サーバー情報の自動取得)に対応しています。だから利用者側はURLを登録して、出てきたGoogleのログイン画面で許可するだけで済みます。

Google認証版の構成

当社の構成は Cloud Run + HTTP + OAuth 2.1 です。GA4の鍵はどこにも置きません。要点は「サーバーは本人のトークンを預かって代理で呼ぶだけ」という点にあります。

チームの各端末 Claude / ChatGPT Claude Code など 鍵もトークンもなし HTTPS Googleでログイン Cloud Run(自社) リモートMCPサーバー OAuth 2.1 + PKCE GA4の鍵を持たない 本人のトークンで代理呼び出し 読み取り 専用 GA4 Analytics Data API 見えるのは本人の 権限の範囲だけ 増員はURLを渡すだけ。トークンの発行も、鍵の配布も、端末側の設定も発生しません。

サーバーが用意しているもの

MCPのやりとりをする窓口が1つと、ログインまわりの窓口が数個です。ログインまわりは規格(OAuth 2.1・RFC 8414・RFC 9728)どおりに作ってあるので、ClaudeやChatGPTのコネクタが自動で見つけて使います。

窓口 役割
MCP(Streamable HTTP) ツール一覧の提示とGA4レポートの実行。ログイン済みの人だけ通す
サーバー情報の公開(.well-known) 「どこでログインするか」をクライアントに自動で教える。URL登録だけで済むのはこれのおかげ
クライアント登録 ClaudeやChatGPTが自分を登録する。人手での事前登録は不要
認可・コールバック・トークン発行 Googleのログイン画面へ送り、戻ってきた結果をもとに、サーバー用のトークンを発行する

ツールは run_report(通常レポート)・run_realtime_report(直近30分)・ping・auth_status(ログイン済みかの確認)の4つです。求めるGoogleの権限は analytics.readonly のみで、書き込みはできません。公開版の mcp-dir Hub では、同じ1本の接続に Search Console(webmasters.readonly)と TrendViewer のツールも入っています。

初版(トークン認証)の中身も残しておく

「まず動くものを最短で」という場合は、初版の構成が今でも最小です。書くファイルは4つ、本体は約200行。同じ形でSearch Console用のサーバーも並べられます。

ファイル 役割 分量の目安
server.py ツールの定義、トークンの検証、GA4のAPI呼び出し。実質これが本体 約200行
requirements.txt 使うライブラリの指定(MCPのSDK、Google認証、Webサーバー) 5行
Dockerfile コンテナ化の手順(Python 3.12) 8行
.dockerignore コンテナに入れないファイルの指定 2行

利用者の手順は2ステップ

Google認証版で、利用者がすることは次の2つだけです。端末に何かを入れる作業はありません。

  1. コネクタにURLを登録する。Claudeなら設定の「コネクタ」から「カスタムコネクタを追加」を選び、サーバーのURLを貼ります。ChatGPTも同様です。
  2. Googleでログインする。登録直後にGoogleのログイン画面が開くので、GA4を見ているアカウントを選び、読み取りを許可します。

これで、チャット欄に「先月の流入元別のコンバージョンを出して」と書けば動きます。見えるプロパティは、そのアカウントがGA4の管理画面で見られるものと同じです。

Googleのログイン画面。GA4のMCPサーバーのURLへ移動する旨と、選択できるGoogleアカウントの一覧が表示されている
URLを登録した直後に開くGoogleのログイン画面。GA4を見ているアカウントを選ぶだけ
Claudeのコネクタ設定画面。GA4のMCPサーバーが接続済みで、Auth status・Ping・Run realtime report・Run reportの4つのツールが並んでいる
ログイン後のClaudeのコネクタ画面。4つのツールがそのまま使える状態になる

人数が増えたときに差が出る

1人で使うなら公式が手軽です。差がつくのは利用者が増えたときで、ここが当社の決め手になりました。公式は端末ごとに導入するので設定作業が人数分だけ発生し、自作は初回の構築1回で済みます。さらにGoogle認証版なら、増員時のトークン発行すら不要です。

設定作業が発生する回数 公式(ローカル型) 自作(リモート型) 0 4 8 12 利用者 1人 1 1 利用者 3人 3 1 利用者 10人 10 1 公式は端末ごとに導入するため人数分。自作は初回の構築だけで、以降はURLとトークンを渡すのみ。

自作でうまくいかなかったこと

良いことばかりではありません。実際に運用して困った点を、初版と現行それぞれから挙げます。

初版・現行に共通するもの

仕様変更の追随は自分持ちになる。GA4のAPIが変われば自分で直す必要があります。公式なら追随してもらえるので、ここは明確に不利です。半年に一度は動作確認する運用にしています。

接続済みなのに「ツールが0個」と表示されることがある。同時に多くのセッションから叩くと、ツール一覧の取得がタイムアウトする症状です。サーバー自体は生きているので、慌てて作り直す必要はありません。当社はこの場合、REST APIを直接叩いてその場をしのいでいます。原因の切り分けを知らないと「壊れた」と誤診しがちな挙動です。

最初はツールが少ない。前述のとおり、ファネル分析やカスタムディメンションの確認は後から足す前提になります。「あとで足せる」は裏を返せば「今はない」なので、最初に必要な分析を洗い出しておくほうが手戻りが減ります。

Google認証版で新たに出たもの

Googleの審査が要る。GA4の読み取り権限(analytics.readonly)はGoogleが「機微なスコープ」に分類しています。審査を受けていないアプリは、外部ユーザーの上限が100人です。社内や取引先の数十人までなら審査なしで足りますが、それを超えて開放するならGoogleの審査を通す必要があります。当社は2026年10月1日に審査を申請し、結果待ちです(ブランディングの確認は即日、データアクセスの審査は数日〜数週間かかります)。審査が通るまでは、ログイン時に「このアプリは Google で確認されていません」という警告が出ます。「詳細」から進めますが、初めての人には説明が要ります。必要なものは、自社ドメインのURL、プライバシーポリシーへの明記(何を読み、何を保存し、AIの学習に使わないこと)、ログインからデータ表示までの説明動画の3つでした。

ログイン状態の保存場所を決めないと、再デプロイで全員ログアウトになる。初版のようにサーバーが1つの鍵を持つ構成と違い、Google認証版は「誰がログイン済みか」をサーバーが覚えておく必要があります。これをメモリに置いたままだと、デプロイし直すたびに全員がログインし直しになり、サーバーを2台以上に増やすと片方が発行したログインをもう片方が知らない状態になります。当社は当初Cloud Runを1台に固定して回避していましたが、公開に合わせて保存先を Firestore に移し(トークンは暗号化して保存)、再デプロイしてもログインが切れなくなりました。

Claudeのコネクタ画面に「接続の問題 セッションの有効期限が切れました。再接続して再認証できます」と表示され、再接続ボタンが出ている
保存先をメモリに置いていた頃、再デプロイ後にClaude側で出ていた表示。「再接続」で復旧するが、利用者全員に起きていた

公開して分かったもの(2026年10月追記)

社内数人から「誰でも使える」に広げる前にセキュリティ診断をやり直したところ、認証まわりに2つの穴が見つかりました。どちらも直してから公開しています。

認可コードがそのままアクセストークンとして通っていた。Googleログイン直後に発行する一時的なコードを、本物のトークンと同じ場所に保存していたため、コードを手に入れた人は本来必要な検証(PKCE)を飛ばして10分間データを読めました。コードの保存場所をトークンと分け、検証に通ったときだけトークンを発行するように直しました。

偽のリンクで他人のセッションを奪える構造だった。サーバー側に「どのアプリに、どこへ接続を渡すか」を利用者に見せる画面がなく、Googleの同意画面(正規のアプリ名)だけで進んでいました。攻撃者が自分の受け取り先を指定したリンクを踏ませれば、被害者がGoogleでログインするだけで接続が奪えます。これはOAuthの仕様上よく知られた問題で、登録済みのアプリしか受け付けない・ClaudeやChatGPT以外の接続先には確認画面を出す、の2つで塞ぎました。

不特定多数が同時につなぐと「混みすぎ」で断られる。ClaudeやChatGPTからの登録・トークン取得は、各社のサーバーから来るため全利用者が同じ送信元に見えます。送信元ごとの回数制限を社内向けのまま公開すると、数人が同時に接続しただけで失敗します。公開前にサーバー間の窓口だけ上限を引き上げました。

逆に、想定したほど問題にならなかったのが費用です。Cloud Runはリクエストがない間は課金されないため、社内数人が1日に数十回叩く程度では月額はごくわずかで済んでいます。これは初版・現行とも同じです。

どれを選ぶか

使うのは1人だけ? まずここから 端末に鍵を置ける? 社内規程を確認 社内にエンジニアがいる? 最後の分岐 いいえ いいえ はい はい はい いいえ Google公式 コマンド1行・無料 7ツールが最初から使える Google公式でも運用可 ただし人数分の設定と 鍵の配布が発生する 自作 Google認証で リモート化 第三者 または 構築を外注 1人で試すだけなら公式が最短です。「チームで使う」「端末に鍵を置きたくない」が重なったら自作。 社内数人ならトークン認証の最小構成、社外にも広げるならGoogle認証版を選んでください。作る前に試したい場合は、当社が公開している mcp-dir Hub をそのまま使えます。

よくある質問(FAQ)

GA4のMCPサーバーは公式のものがありますか?

あります。GitHubの googleanalytics/google-analytics-mcp がGoogle公式です。ただし2026年9月時点では実験版で、各自の端末で動かすローカル型です。ホスト型(リモート)は提供されていません。

GA4はGoogle Cloudの公式リモートMCPで使えますか?

使えません。2026年9月時点で70製品以上がリモートMCPに対応していますが、Google Analytics・Analytics Data API・Search Consoleは対象外です。

自作の「トークン認証」と「Google認証(OAuth 2.1)」は何が違いますか?

トークン認証はサーバーが1つの鍵でGA4を呼ぶため、トークンを持つ人は全員同じ範囲が見えます。Google認証は利用者が自分のGoogleアカウントでログインし、本人がGA4で見られる範囲だけが見えます。利用者の手順もURL登録とGoogleログインだけになるため、社外にも広げるならGoogle認証をおすすめします。

Google認証版を使う側に必要なものは何ですか?

GA4のプロパティを閲覧できるGoogleアカウントと、ClaudeまたはChatGPTのカスタムコネクタが使えるプランだけです。端末にサーバーを入れたり、鍵ファイルを置いたりする作業はありません。

GA4のMCPサーバーは自分で作らないと使えませんか?

いいえ。1人で使うなら公式のローカル版がコマンド1行で導入できます。「チームで共有したい」「端末に鍵を配りたくない」という条件が出てきたときに、はじめて自作を検討してください。当社が同じ構成で運用しているサーバーを mcp-dir Hub として公開しているので、URL登録とGoogleログインだけでGA4とSearch Consoleを読むこともできます(無料)。社内に手が足りない場合は、同じ構成での構築代行も承っています。

この記事について

  • 初版は2026年9月7日、Google認証版の追記は2026年9月22日時点の検証です。各サービスの仕様は変わるため、半年ごとに検証し直して更新します(次回 2027年3月予定)。
  • 第三者のMCPコネクタ(Windsor・Porter 等)は未検証です。公開資料の範囲でのみ記載しています。
  • 当社の構成は Cloud Run + HTTP + OAuth 2.1(Google認証)で、現在は GA4・Search Console・TrendViewer を1本の接続で読む mcp-dir Hub(接続URL https://hub.haldata.net/mcp)として公開しています。初版のトークン認証版も最小構成として残しています。セキュリティ上、認証の実装の詳細は掲載していません。
  • レビュー分析データをAIから直接扱う仕組みは TrendViewer MCP、MCPそのものの解説は MCP連携とは をご覧ください。構築のご相談は お問い合わせ から承ります。

Trend Viewerの特徴を
詳しく知る

入力は簡単3項目、1分で完了します。
社内会議や稟議の資料として
ご活用ください。

資料ダウンロード

まずは無料で
アカウント登録!

まずは無料で実際に
使ってみることも可能です。
ぜひ無料アカウント登録から
お進みください。

無料アカウント登録