Google Analytics MCPでGA4を見る

Google Analytics MCPでGA4を見る

目的

Hugo site に GA4 tag を入れた後、Google Analytics の画面を毎回開かず、LLM から自然文で GA4 の傾向を読む。

Google Analytics MCP server は、Google Analytics Admin API と Google Analytics Data API を使うローカル MCP server である。 Google 公式ドキュメントでは read requests 専用とされており、Analytics の設定変更や削除はできない。

家庭向け個人サイトでは、最初から自動通知を作り込むより、次の順で使うのが軽い。

  1. GA4 標準 UI / scheduled email で週次のざっくり確認
  2. 気になった時に Google Analytics MCP で自然文確認
  3. 定期 Slack 通知が必要になったら Data API を直接呼ぶ小さい script を作る

MCP は対話的な探索に向く。定期実行や確実な通知は、MCP より Data API 直叩きの方が構成を単純に保ちやすい。

できること

公式 README で公開されている tool は次の通り。

tool用途
get_account_summariesGoogle Analytics account / property 一覧を取得する
get_property_detailsproperty 詳細を取得する
list_google_ads_linksproperty に紐づく Google Ads link を見る
run_reportData API の通常レポートを実行する
run_funnel_reportfunnel report を実行する
get_custom_dimensions_and_metricscustom dimensions / metrics を取得する
run_realtime_reportrealtime report を実行する

このサイトでまず使いそうなのは get_account_summariesget_property_detailsrun_reportrun_realtime_report

前提

  • Hugo site 側で GA4 tag が production HTML に出ている
  • GA4 プロパティにデータが入り始めている
  • Google Cloud プロジェクトがある
  • Google Analytics Admin API と Google Analytics Data API を有効化する
  • Python 3.10 以上と pipx が使える
  • MCP client から Google Application Default Credentials を参照できる
  • 認証主体に対象 GA4 プロパティの閲覧権限がある

Google Analytics と Google Cloud の対応

この作業では Google の画面が 2 種類出てくる。 名前が似ているが、見る場所と役割が違う。

種類開く場所役割
Google Analytics accountGoogle Analytics個人用 Analytics accountGA4 property を入れる箱
GA4 propertyGoogle Analyticschill-out.dev などアクセス解析データ本体
Web data streamGoogle AnalyticsG-...Hugo に入れる Measurement ID を持つ
Google Cloud projectGoogle Cloud Consolega4-mcp-local-kaoruAPI 有効化、OAuth client、quota project の箱
OAuth clientGoogle Cloud Consoledesktop app clientgcloud auth application-default login で使う認可アプリ

ga4-mcp-local-kaoru は Google Cloud project ID であり、Google Analytics の property selector には出ない。 Google Analytics 画面で探すのではなく、Google Cloud Console で project を選ぶ。 Google Cloud Console の画面上部には project ID ではなく project name の GA4 MCP local が表示されることもある。

直接開く場合:

Data API で使う ID は、G- で始まる測定 ID ではなく、数字だけの GA4 プロパティ ID。 Google 公式ドキュメントでは GA_PROPERTY_ID と表記される。

GA4 プロパティ ID は次で確認する。

  1. Google Analytics を開く
  2. 管理 を開く
  3. 対象プロパティを選ぶ
  4. プロパティの詳細 または プロパティ設定 を開く
  5. 数字だけの プロパティ ID を控える

UA-... のトラッキング ID が表示される場合は Universal Analytics プロパティであり、Google Analytics Data API の対象ではない。

実際に作る手順

最初は user credentials で作る。 同じ Google アカウントで GA4 プロパティを作ったなら、Google Analytics 側の追加権限設定は通常不要である。 MCP がその Google アカウントの権限で GA4 プロパティを読むためである。

手順:

  1. GA4 プロパティ側の権限を確認する
  2. Google Cloud プロジェクトを作る、または既存プロジェクトを選ぶ
  3. Google Analytics Admin API と Google Analytics Data API を有効化する
  4. OAuth クライアントを作る
  5. gcloud auth application-default login で ADC を作る
  6. credentials JSON path と Google Cloud プロジェクト ID を MCP client に渡す
  7. MCP client から get_account_summaries を実行して見えるか確認する

1. GA4 プロパティ側の権限を確認する

自分の Google アカウントで読む場合:

  1. Google Analytics を開く
  2. 管理 を開く
  3. 対象アカウント / プロパティを選ぶ
  4. プロパティのアクセス管理 を開く
  5. 自分の Google アカウントが 閲覧者 以上で入っていることを確認する

管理者編集者 でも読めるが、MCP 用には 閲覧者 で足りる。 同じアカウントで GA4 プロパティを作成した場合は、通常ここに既に入っている。 2026-05-31 時点では、このサイト用の GA4 プロパティで自分の Google アカウントが 管理者 として入っていることを確認済み。

service account を使う場合:

  1. Google Cloud で service account を作る
  2. service account の email を控える
  3. Google Analytics の プロパティのアクセス管理 でその email を追加する
  4. role はまず 閲覧者 にする

service account を Google Cloud IAM に追加するだけでは、GA4 プロパティのデータは読めない。 GA4 プロパティ側のアクセス管理にも追加する必要がある。

2. Google Cloud 側で API を有効化する

MCP server は Google Analytics Admin API と Google Analytics Data API を使う。 Google Cloud コンソールの対象プロジェクトで次を有効化する。

  • Google Analytics Admin API
  • Google Analytics Data API

CLI で行う場合:

gcloud services enable analyticsadmin.googleapis.com analyticsdata.googleapis.com

YOUR_PROJECT_ID は、Google Cloud コンソール上部のプロジェクト selector で対象プロジェクトを開くと確認できる。 表示される プロジェクト名 ではなく、英数字と hyphen で構成される プロジェクト ID を使う。 プロジェクト番号 はここでは使わない。

Google Cloud コンソールでの確認導線:

  1. Google Cloud コンソールを開く
  2. 画面上部のプロジェクト selector を開く
  3. 対象プロジェクトを選ぶ
  4. 表示される ID または プロジェクト ID を控える

CLI で自分が見えるプロジェクトを列挙する場合:

gcloud auth login
gcloud projects list

gcloud projects list に GA4 MCP 用に作ったつもりの project が出ない場合は、次のどれかである。

  • Google Cloud コンソールで project 作成が完了していない
  • browser で project を作った Google アカウントと、gcloud auth list の active account が違う
  • project selector で既存 project を選んだだけで、新規 project は作っていない
  • project ID を間違えている
  • project は存在するが、active account に権限がない

既に project ID が分かっている場合は、一覧ではなく個別 describe で確認する。

gcloud projects describe YOUR_PROJECT_ID

NOT_FOUND や permission denied 相当のエラーになる場合は、Google Cloud コンソール側のログインアカウントと gcloud auth list の active account を合わせる。 個人用途で project を分けたいだけなら、CLI で新規作成してしまう方が確実である。

gcloud projects create YOUR_PROJECT_ID --name="GA4 MCP local"
gcloud config set project YOUR_PROJECT_ID
gcloud projects describe YOUR_PROJECT_ID

YOUR_PROJECT_ID は全 Google Cloud で一意である必要がある。 既に使われている場合は、suffix を変えて再作成する。

gcloud projects listYou do not currently have an active account selected で失敗する場合は、gcloud CLI 用のログインがまだない。 gcloud auth login を実行し、ブラウザで Google Cloud プロジェクトにアクセスできる Google アカウントを選ぶ。 既に複数アカウントでログイン済みの場合は、gcloud auth list で候補を見て gcloud config set account ACCOUNT で選ぶ。

gcloud の active project が対象プロジェクトであることも確認する。

gcloud config get-value project

3. 予算とアラートを作る

Google Analytics Admin API / Data API は、個人サイトの手動確認程度では主なコスト源になりにくい。 ただし、同じ Google Cloud プロジェクトで Gemini API など課金され得る API を使う可能性があるため、予算アラートを置く。

Google Cloud コンソールでの導線:

  1. Google Cloud コンソールを開く
  2. 対象プロジェクトを選ぶ
  3. お支払い を開く
  4. 予算とアラート を開く
  5. 予算を作成 を押す
  6. 対象プロジェクトだけに scope を絞る
  7. 予算額を低めに設定する
  8. しきい値を複数設定する

家庭向け検証用途なら、最初は月額 100 円から 500 円程度の小さい予算でよい。 しきい値は、例えば 50%、90%、100% にする。

注意点:

  • 予算アラートは通知であり、課金を自動停止する hard cap ではない
  • アラートは実費発生後に遅れて届くことがある
  • 不要な API key は削除し、必要な API key には API 制限とアプリケーション制限を付ける
  • Gemini API など従量課金 API を試す時は、予算アラートだけでなく API key 制限も必ず見る

請求先アカウントの権限が足りない場合、予算とアラート を作れないことがある。 その場合は、少なくとも API とサービス -> 認証情報 で不要な API key を削除または制限してから進める。

4. OAuth クライアントを作る

user credentials で ADC を作る場合は、Google Cloud コンソールで OAuth クライアント JSON を作る。 OAuth client は Google Cloud project に属する。 GA4 MCP 用 project を新規作成する前に download した OAuth client JSON がある場合は、その JSON は古い project 所属の可能性が高い。 その場合は GA4 MCP 用 project を選び直して OAuth client を作り直す。

Google Cloud Console の OAuth audience / test users を開いて Google Auth Platform はまだ構成されていません と表示される場合、その project では OAuth 同意画面がまだ作られていない。 この状態で ADC 作成時に別 project の app 名が出る場合、手元の OAuth client JSON は別 project で作ったものなので使わない。 GA4 MCP 用 project 側で Auth Platform と OAuth client を作り直す。

直接開く:

https://console.cloud.google.com/auth/overview?project=ga4-mcp-local-kaoru

構成手順:

  1. Google Cloud Console を開く
  2. 対象 project が GA4 MCP 用 project であることを確認する
  3. Google Auth Platform または API とサービス -> OAuth 同意画面 を開く
  4. 開始 または 構成 を押す
  5. App name、user support email、developer contact email を入れる
  6. Audience / User type は 外部 を選ぶ
  7. Publishing status は テスト のままにする
  8. Test users に自分の Google アカウントを追加する
  9. Data access / Scopes で https://www.googleapis.com/auth/analytics.readonly を追加する
  10. 保存する
  11. Clients または 認証情報OAuth クライアント ID を作る
  12. アプリケーションの種類は デスクトップ アプリ を選ぶ
  13. クライアント JSON を download する

個人利用なら外部公開せず testing のままでよい。 testing の場合は、自分の Google アカウントをテストユーザーに入れる。 Audience 画面に Publish app が表示されている場合、その app はまだ Testing 側にいる。 個人利用の GA4 MCP では Publish app を押さず、Testing のままにする。 Testing のまま使うには、同じ Audience 画面の Test usersAdd users を押し、OAuth 画面で選ぶ Google アカウントを追加して保存する。 Publish app は「本番公開へ進める」ボタンであり、test user 追加の代わりではない。 もし In production と表示されている場合は、Google アカウント全体へ利用対象が広がり、scope によっては未確認 app warning や審査要件が絡む。 この用途では、迷ったら GA4 MCP 用 project を Testing のまま作り直す方が分かりやすい。 ADC 作成時に 現在テスト中のアプリへのアクセスが許可されました。招待元を信頼できる場合のみ、続行してください。 という画面が出た場合は、自分で作った GA4 MCP 用 project の app 名であることを確認して 続行 を押す。

OAuth 同意画面の 対象内部外部 が出る。 個人の Gmail / 通常の Google アカウントでは 内部 は選べない。 内部 は Google Workspace 組織内ユーザー向けの OAuth app に使う。 このサイトの GA4 MCP 用途では 外部 を選び、公開ステータスは テスト のままにする。 外部 でも、公開ステータスが テスト でテストユーザーに自分の Google アカウントだけを入れるなら、一般公開されるわけではない。

OAuth 同意画面の最小設定:

対象: 外部
公開ステータス: テスト
アプリ名: ga4-mcp-local
ユーザー サポートメール: 自分の Gmail
デベロッパーの連絡先情報: 自分の Gmail
テストユーザー: 自分の Gmail

このアプリは現在テスト中で、デベロッパーに承認されたテスターのみがアクセスできます / エラー 403: access_denied が出る場合は、OAuth app が testing 状態のまま、認可しようとしている Google アカウントが test user に入っていない。 次を確認する。

  • Google Cloud Console の project が GA4 MCP 用 project になっている
  • OAuth 同意画面 または Google Auth Platform対象 / Audience で test user に自分の Google アカウントを追加している
  • Test users に入れた email と OAuth 画面で選んだ email が完全一致している
  • gcloud auth list の active account と、browser の OAuth 画面で選んだ Google アカウントが同じである
  • 複数 Google アカウントで browser login している場合は、private window か専用 browser profile で認可 URL を開く
  • test user 追加後に保存している
  • download 済み OAuth client JSON が GA4 MCP 用 project のものになっている

testing 状態の OAuth app は、test user に追加したアカウントだけが認可できる。 個人利用の GA4 MCP では、Google の本番審査へ出す必要はない。

browser 側で別 Google アカウントが選ばれる場合は、自動起動ではなく URL を手動で開く。

gcloud auth application-default login \
  --no-launch-browser \
  --scopes="https://www.googleapis.com/auth/analytics.readonly,https://www.googleapis.com/auth/cloud-platform" \
  --client-id-file="$HOME/.config/google-analytics-mcp/oauth-client.json"

表示された URL を private window に貼り、test user に追加した Google アカウントを選ぶ。 認可後に表示された code を terminal に貼り戻す。

download したクライアント JSON は secret として扱う。 Hugo repository、Markdown、commit、terminal log に path や中身を残さない。 download 直後は browser の download directory に置かれることが多い。 そのまま repository 配下へ移動しない。

保存先の例:

~/.config/google-analytics-mcp/oauth-client.json

権限は自分だけ読めるようにする。

mkdir -p ~/.config/google-analytics-mcp
chmod 700 ~/.config/google-analytics-mcp
ls -l ~/Downloads
mv ~/Downloads/YOUR_DOWNLOADED_CLIENT_JSON_FILE.json ~/.config/google-analytics-mcp/oauth-client.json
chmod 600 ~/.config/google-analytics-mcp/oauth-client.json

mv ~/Downloads/ ~/.config/google-analytics-mcp/oauth-client.json のように directory を指定しない。 Downloads directory 全体を移動または rename してしまう可能性がある。 必ず download した JSON file 名まで指定する。

実ファイル名や実 path は公開メモ、commit message、Slack、terminal 共有ログに残さない。

5. ADC を作る

gcloud auth application-default login で Application Default Credentials を作る。 Google Analytics MCP には read-only scope が必要である。

事前に Google Cloud project を設定する。 YOUR_PROJECT_ID には Google Cloud の プロジェクト ID を入れる。 OAuth クライアント ID、GA4 の測定 ID、GA4 のプロパティ ID、プロジェクト番号は入れない。

例:

Google Cloud プロジェクト名: GA4 MCP local
Google Cloud プロジェクト ID: ga4-mcp-local-123456
Google Cloud プロジェクト番号: 123456789012

この場合に使うのは ga4-mcp-local-123456

gcloud config set project YOUR_PROJECT_ID
gcloud config get-value project
gcloud auth application-default login \
  --scopes https://www.googleapis.com/auth/analytics.readonly,https://www.googleapis.com/auth/cloud-platform \
  --client-id-file="$HOME/.config/google-analytics-mcp/oauth-client.json"

--client-id-file=~/.config/... のように = の右側へ ~ を置くと、shell によっては home directory に展開されず、gcloud が literal な ~/.config/... を読もうとして失敗する。 $HOME/... を使うか、--client-id-file ~/.config/... のように option と値を分ける。

ADC 作成後、quota project も合わせておく。

gcloud auth application-default set-quota-project YOUR_PROJECT_ID

完了時に次のような行が出る。

Credentials saved to file: [PATH_TO_CREDENTIALS_JSON]

この PATH_TO_CREDENTIALS_JSON を MCP server の GOOGLE_APPLICATION_CREDENTIALS に渡す。 path は公開メモに残さない。

ADC が使えるか確認する。

gcloud auth application-default print-access-token >/dev/null && echo OK

Admin API の account summaries が読めるか確認する。 返る JSON には account ID / property ID が含まれるため、公開ログには貼らない。

curl -s \
  -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
  "https://analyticsadmin.googleapis.com/v1beta/accountSummaries"

Data API の report が読めるか確認する。 GA_PROPERTY_ID には properties/123456789123456789 部分を入れる。 properties/123456789 全体を入れると、URL が /properties/properties/123456789:runReport になって 404 になる。

GA_PROPERTY_ID="YOUR_GA4_PROPERTY_ID"

curl -s \
  -X POST \
  -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
  -H "Content-Type: application/json" \
  "https://analyticsdata.googleapis.com/v1beta/properties/${GA_PROPERTY_ID}:runReport" \
  -d '{
    "dateRanges": [{"startDate": "7daysAgo", "endDate": "today"}],
    "dimensions": [{"name": "pagePath"}],
    "metrics": [{"name": "screenPageViews"}],
    "limit": 10
  }'

もし GA_PROPERTY_IDproperties/123456789 形式を入れたい場合は、URL 側の properties/ を足さない。

GA_PROPERTY_RESOURCE="properties/YOUR_GA4_PROPERTY_ID"

curl -s \
  -X POST \
  -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
  -H "Content-Type: application/json" \
  "https://analyticsdata.googleapis.com/v1beta/${GA_PROPERTY_RESOURCE}:runReport" \
  -d '{
    "dateRanges": [{"startDate": "7daysAgo", "endDate": "today"}],
    "dimensions": [{"name": "pagePath"}],
    "metrics": [{"name": "screenPageViews"}],
    "limit": 10
  }'

dimensionHeadersmetricHeadersmetadatakind: analyticsData#runReport が返り、rows が無い場合は、API 呼び出し自体は成功している。 指定した date range / dimension / metric の組み合わせで返す行がまだ無い、または GA4 側の処理待ちである。 疎通失敗なら、通常は PERMISSION_DENIEDINVALID_ARGUMENTAPI not enabled、404 などの error JSON または HTML が返る。

計測が今入っているかを見るには realtime report を使う。 公開 site をブラウザで開いた直後に実行する。

GA_PROPERTY_RESOURCE="properties/YOUR_GA4_PROPERTY_ID"

curl -s \
  -X POST \
  -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
  -H "Content-Type: application/json" \
  "https://analyticsdata.googleapis.com/v1beta/${GA_PROPERTY_RESOURCE}:runRealtimeReport" \
  -d '{
    "dimensions": [{"name": "eventName"}],
    "metrics": [{"name": "activeUsers"}],
    "limit": 10
  }'

6. MCP client に渡す値を用意する

必要な値:

export GOOGLE_APPLICATION_CREDENTIALS="PATH_TO_CREDENTIALS_JSON"
export GOOGLE_PROJECT_ID="YOUR_PROJECT_ID"

公式 README の Gemini 用設定例では GOOGLE_PROJECT_ID を渡している。 Google Cloud tooling では GOOGLE_CLOUD_PROJECT を見る実装もあるため、プロジェクト解決で失敗した場合は次も試す。

export GOOGLE_CLOUD_PROJECT="${GOOGLE_PROJECT_ID}"

認証方針

最初は user credentials の Application Default Credentials でよい。 認証 scope は read-only に寄せる。

gcloud auth application-default login \
  --scopes https://www.googleapis.com/auth/analytics.readonly,https://www.googleapis.com/auth/cloud-platform \
  --client-id-file="$HOME/.config/google-analytics-mcp/oauth-client.json"

公式 README では、gcloud auth application-default login 完了時に表示される credentials JSON の path を MCP server の GOOGLE_APPLICATION_CREDENTIALS に渡す手順になっている。

運用上の注意:

  • credentials JSON は Git、Hugo content、commit message、terminal log に残さない
  • credentials JSON の実 path も公開メモには残さない
  • 可能なら write scope ではなく analytics.readonly scope を使う
  • service account を使う場合も、GA4 property 側には Viewer 相当の権限から始める

Codex に追加する案

Codex CLI は MCP server を config で追加できる。 認証情報の値は config に直書きせず、環境変数名だけを渡す。 Google Analytics MCP 公式 README の例では pipx run analytics-mcp を使う。 dev container が rebuild 前で pipx がまだ無い場合は、既にある uvx で一時的に起動確認してもよい。

[mcp_servers.analytics-mcp]
command = "pipx"
args = ["run", "analytics-mcp"]
env_vars = ["GOOGLE_APPLICATION_CREDENTIALS", "GOOGLE_PROJECT_ID", "GOOGLE_CLOUD_PROJECT"]
enabled = false
enabled_tools = [
  "get_account_summaries",
  "get_property_details",
  "run_report",
  "run_realtime_report",
]

最初は enabled = false で設定だけ置く。 ADC と Google Cloud project の値を用意できてから enabled = true にする。

現行 shell で必要な環境変数を用意する例:

export GOOGLE_APPLICATION_CREDENTIALS="$HOME/.config/gcloud/application_default_credentials.json"
export GOOGLE_PROJECT_ID="ga4-mcp-local-kaoru"
export GOOGLE_CLOUD_PROJECT="${GOOGLE_PROJECT_ID}"

Codex を起動し直す場合は、これらの環境変数を持った shell から起動する。 codex mcp add --env KEY=VALUE で config へ値を直接書く方法もあるが、credentials path を複数箇所に残したくない場合は env_vars で shell から渡す方が扱いやすい。

dev container rebuild 前に uvx で一時的に使う場合の形:

[mcp_servers.analytics-mcp]
command = "uvx"
args = ["analytics-mcp"]
env_vars = ["GOOGLE_APPLICATION_CREDENTIALS", "GOOGLE_PROJECT_ID", "GOOGLE_CLOUD_PROJECT"]
enabled = false

Codex process が必要な environment variables を継承していない場合は、private な ~/.codex/config.tomlenv table として値を渡す。 repository や公開メモには実 path を残さない。

[mcp_servers.analytics-mcp]
command = "uvx"
args = ["analytics-mcp"]
enabled = true
enabled_tools = [
  "get_account_summaries",
  "get_property_details",
  "run_report",
  "run_realtime_report",
]

[mcp_servers.analytics-mcp.env]
GOOGLE_APPLICATION_CREDENTIALS = "PATH_TO_CREDENTIALS_JSON"
GOOGLE_PROJECT_ID = "YOUR_PROJECT_ID"
GOOGLE_CLOUD_PROJECT = "YOUR_PROJECT_ID"

起動確認:

codex mcp list
codex mcp get analytics-mcp
timeout 30 uvx analytics-mcp

Starting MCP Stdio Server: Google Analytics MCP Server が出れば server process は起動できている。 stdio MCP server は通常、client から接続されて動き続ける。

公式 README の Gemini 用設定例では GOOGLE_PROJECT_ID を渡している。 Google Cloud tooling では GOOGLE_CLOUD_PROJECT を見る実装もあるため、起動時に project 解決で失敗する場合は、MCP server の README と実装を確認して必要な変数だけ増やす。

2026-05-31 の確認結果

Codex CLI の現行設定では、~/.codex/config.tomlanalytics-mcp が登録されている。 設定値の実 path や project ID は公開メモには残さないが、形は次の通り。

  • command = "uvx"
  • args = ["analytics-mcp"]
  • enabled = true
  • enabled_toolsget_account_summariesget_property_detailsrun_reportrun_realtime_report
  • env table で GOOGLE_APPLICATION_CREDENTIALSGOOGLE_PROJECT_IDGOOGLE_CLOUD_PROJECT を渡す

codex mcp listcodex mcp get analytics-mcp では、analytics-mcp が enabled として表示され、環境変数は mask される。 timeout 30 uvx analytics-mcp では Starting MCP Stdio Server: Google Analytics MCP Server まで出る。

stdio MCP client として JSON-RPC の initializenotifications/initializedtools/list を送ると、server 側は tool 一覧を返した。 この時点で確認できた tool は次の通り。

  • get_account_summaries
  • list_google_ads_links
  • get_property_details
  • list_property_annotations
  • get_custom_dimensions_and_metrics
  • run_report
  • run_realtime_report
  • run_funnel_report
  • run_conversions_report

同じ stdio 経路で get_account_summariestools/call も成功した。 返る JSON には account ID / property ID が含まれるため、公開メモには結果本文を貼らない。

注意点として、Codex CLI の ~/.codex/config.toml に MCP server が存在しても、現在の会話セッションにその tool namespace が callable tool として注入されない場合がある。 その場合、設定欠落と判断する前に codex mcp get analytics-mcptimeout 30 uvx analytics-mcp、小さい stdio JSON-RPC client で tools/list を確認する。 会話セッション側へ tool を出したい場合は、Codex の起動し直しや MCP tool discovery の条件を別途確認する。

確認手順

Codex 側で設定を見られることを確認する。

codex mcp list
codex mcp get analytics-mcp

MCP client から実際に確認する時は、最初に account / property 一覧を読む。

Google Analytics MCP で account summaries を見てください。

次に対象 property を確認する。

Google Analytics MCP で chill-out.dev の property details を見てください。

ここで数字の property ID を確認してから、通常レポートを見る。

Google Analytics MCP で過去7日間の page path 別 views 上位10件を見てください。

Realtime の確認は次。

Google Analytics MCP で realtime report を見て、現在 active users がいるか確認してください。

よく使う質問

GA4 UI を開く代わりに、LLM へ次のように聞く。

  • 昨日の active users と views を教えて
  • 過去7日で読まれたページ上位10件を出して
  • 先週と今週で views が増えたページを比較して
  • 国、言語、デバイスの傾向を要約して
  • 流入元の上位を出して
  • 今 realtime でアクセスがあるか見て
  • アクセスが急に増えたページがあれば推測付きで説明して

LLM の説明は推測を含むため、数字の根拠は run_report の結果を確認する。 特に流入元やユーザー属性は欠損、しきい値、同意状態、広告ブロックの影響を受ける。

自動通知との使い分け

Google Analytics MCP は、手元の MCP client から必要な時に読む用途に向く。 定期通知は、MCP server を scheduler 代わりにするより、次のどちらかに寄せる方がよい。

  • GA4 UI の scheduled email / custom insights を使う
  • Google Analytics Data API を直接呼ぶ script を cron / GitHub Actions / 自宅サーバで動かす

Slack へ定期通知したい場合は、Data API で JSON を取り、Markdown へ整形して送る。 MCP をはさむと LLM 応答の揺れと MCP client の実行環境が増えるため、通知用途では構成が重くなる。

セキュリティメモ

  • Google Analytics MCP server は read-only だが、閲覧できるデータはサイト運用情報である
  • MCP process に渡す環境変数を絞る
  • 不要な Slack token、kubeconfig、private repository token を MCP process に渡さない
  • npm / Python package 経由の MCP は、更新で挙動が変わる可能性がある
  • 個人サイトでは、まず user ADC + Viewer 権限 + read-only scope で十分
  • 自動化する場合は service account を分け、GA4 property 側の権限も最小にする

未検証事項

  • GOOGLE_PROJECT_ID だけで足りるか、GOOGLE_CLOUD_PROJECT も必要か。現行設定は両方を渡して起動確認済み
  • Codex の会話セッションへ、手動設定した stdio MCP tool が callable tool として注入される条件
  • user ADC と service account impersonation のどちらがこの環境で扱いやすいか
  • GA4 の property 権限付与後、MCP server から見えるまでの反映時間
  • Data API quota にどの程度当たるか。個人 Hugo site の手動確認ではまず問題になりにくい

参照