This repo contains the source code for running a local MCP server that interacts with APIs for Google Analytics.
Join the discussion and ask questions in the 🤖-analytics-mcp channel on Discord.
The server uses the Google Analytics Admin API and Google Analytics Data API to provide several Tools for use with LLMs.
get_account_summaries: Retrieves information about the user's Google Analytics accounts and properties.get_property_details: Returns details about a property.list_google_ads_links: Returns a list of links to Google Ads accounts for a property.
run_report: Runs a Google Analytics report using the Data API.get_custom_dimensions_and_metrics: Retrieves the custom dimensions and metrics for a specific property.
run_realtime_report: Runs a Google Analytics realtime report using the Data API.
✨ Watch the Google Analytics MCP Setup Tutorial on YouTube for a step-by-step walkthrough of these instructions.
Setup involves the following steps:
- Configure Python.
- Configure credentials for Google Analytics.
- Configure Gemini.
Follow the instructions to enable the following APIs in your Google Cloud project:
Configure your Application Default Credentials (ADC). Make sure the credentials are for a user with access to your Google Analytics accounts or properties.
Credentials must include the Google Analytics read-only scope:
https://www.googleapis.com/auth/analytics.readonly
Check out Manage OAuth Clients for how to create an OAuth client.
Here are some sample gcloud commands you might find useful:
-
Set up ADC using user credentials and an OAuth desktop or web client after downloading the client JSON to
YOUR_CLIENT_JSON_FILE.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_FILE
-
Set up ADC using service account impersonation.
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
When the gcloud auth application-default command completes, copy the
PATH_TO_CREDENTIALS_JSON file location printed to the console in the
following message. You'll need this for the next step!
Credentials saved to file: [PATH_TO_CREDENTIALS_JSON]
-
Install Gemini CLI or Gemini Code Assist.
-
Create or edit the file at
~/.gemini/settings.json, adding your server to themcpServerslist.Replace
PATH_TO_CREDENTIALS_JSONwith the path you copied in the previous step.We also recommend that you add a
GOOGLE_CLOUD_PROJECTattribute to theenvobject. ReplaceYOUR_PROJECT_IDin the following example with the project ID of your Google Cloud project.{ "mcpServers": { "analytics-mcp": { "command": "pipx", "args": [ "run", "analytics-mcp" ], "env": { "GOOGLE_APPLICATION_CREDENTIALS": "PATH_TO_CREDENTIALS_JSON", "GOOGLE_PROJECT_ID": "YOUR_PROJECT_ID" } } } }
Launch Gemini Code Assist or Gemini CLI and type /mcp. You should see
analytics-mcp listed in the results.
Here are some sample prompts to get you started:
-
Ask what the server can do:
what can the analytics-mcp server do? -
Ask about a Google Analytics property
Give me details about my Google Analytics property with 'xyz' in the name -
Prompt for analysis:
what are the most popular events in my Google Analytics property in the last 180 days? -
Ask about signed-in users:
were most of my users in the last 6 months logged in? -
Ask about property configuration:
what are the custom dimensions and custom metrics in my property?
このフォークは Vercel 上で HTTP サーバーとして動作します。ローカルへの Python 環境構築なしに、Claude Desktop や Cursor などの MCP クライアントから直接接続できます。
| 項目 | 内容 |
|---|---|
| エンドポイント | https://<your-vercel-domain>/mcp |
| 認証方式 | Bearer トークン(JWT) |
| トークン有効期限 | 2週間 |
Vercel プロジェクトの Environment Variables に以下を設定します。
| 変数名 | 説明 |
|---|---|
GOOGLE_CREDENTIALS |
サービスアカウント JSON の文字列(ファイル内容をそのままペースト) |
MCP_AUTH_TOKEN |
後述のスクリプトで生成した Bearer トークン |
JWT_SECRET |
トークン生成用シークレット鍵 |
JWT_SALT |
トークン生成用ソルト |
ALLOWED_ORIGINS |
CORS 許可オリジン(例: https://claude.ai) |
GOOGLE_CREDENTIALS の値は以下で取得できます。
cat ga4-service-account.json | tr -d '\n'初回のみシークレット鍵とソルトを生成し、.env.local と Vercel 環境変数に保存します。
# 鍵の生成(初回のみ)
openssl rand -base64 32 # → JWT_SECRET
openssl rand -base64 16 # → JWT_SALT2週間ごとにトークンを再生成します(.env.local も自動更新されます)。
JWT_SECRET="..." JWT_SALT="..." python scripts/generate_token.py生成されたトークンを Vercel の MCP_AUTH_TOKEN に設定してから再デプロイしてください。
~/.claude/claude_desktop_config.json または Cursor の MCP 設定に追記します。
{
"mcpServers": {
"google-analytics": {
"url": "https://<your-vercel-domain>/mcp",
"headers": {
"Authorization": "Bearer <MCP_AUTH_TOKEN の値>"
}
}
}
}{
"mcpServers": {
"google-analytics": {
"command": "mcp-remote",
"args": [
"https://<your-vercel-domain>/mcp",
"--header",
"Authorization: Bearer <MCP_AUTH_TOKEN の値>"
]
}
}
}ヘルスチェックエンドポイントで動作を確認できます。
curl https://<your-vercel-domain>/health正常時のレスポンス例:
{
"status": "ok",
"mcp_auth_configured": true
}Contributions welcome! See the Contributing Guide.
