Skip to content

bytech-AI/google-analytics-mcp

 
 

Repository files navigation

Google Analytics MCP Server (Experimental)

PyPI version Python 3.10+ GitHub branch check runs PyPI - Downloads GitHub stars GitHub forks YouTube Video Views

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.

Tools 🛠️

The server uses the Google Analytics Admin API and Google Analytics Data API to provide several Tools for use with LLMs.

Retrieve account and property information 🟠

  • 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 core reports 📙

  • 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 reports ⏳

  • run_realtime_report: Runs a Google Analytics realtime report using the Data API.

Setup instructions 🔧

✨ Watch the Google Analytics MCP Setup Tutorial on YouTube for a step-by-step walkthrough of these instructions.

Watch the video

Setup involves the following steps:

  1. Configure Python.
  2. Configure credentials for Google Analytics.
  3. Configure Gemini.

Configure Python 🐍

Install pipx.

Enable APIs in your project ✅

Follow the instructions to enable the following APIs in your Google Cloud project:

Configure credentials 🔑

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]

Configure Gemini

  1. Install Gemini CLI or Gemini Code Assist.

  2. Create or edit the file at ~/.gemini/settings.json, adding your server to the mcpServers list.

    Replace PATH_TO_CREDENTIALS_JSON with the path you copied in the previous step.

    We also recommend that you add a GOOGLE_CLOUD_PROJECT attribute to the env object. Replace YOUR_PROJECT_ID in 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"
          }
        }
      }
    }

Try it out 🥼

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?
    

Remote MCP Server (Vercel) 🚀

このフォークは Vercel 上で HTTP サーバーとして動作します。ローカルへの Python 環境構築なしに、Claude Desktop や Cursor などの MCP クライアントから直接接続できます。

接続に必要なもの

項目 内容
エンドポイント https://<your-vercel-domain>/mcp
認証方式 Bearer トークン(JWT)
トークン有効期限 2週間

事前準備:Vercel 環境変数の設定

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'

Bearer トークンの生成

初回のみシークレット鍵とソルトを生成し、.env.local と Vercel 環境変数に保存します。

# 鍵の生成(初回のみ)
openssl rand -base64 32  # → JWT_SECRET
openssl rand -base64 16  # → JWT_SALT

2週間ごとにトークンを再生成します(.env.local も自動更新されます)。

JWT_SECRET="..." JWT_SALT="..." python scripts/generate_token.py

生成されたトークンを Vercel の MCP_AUTH_TOKEN に設定してから再デプロイしてください。

MCP クライアント設定

Claude Desktop / Cursor(ネイティブ HTTP 接続)

~/.claude/claude_desktop_config.json または Cursor の MCP 設定に追記します。

{
  "mcpServers": {
    "google-analytics": {
      "url": "https://<your-vercel-domain>/mcp",
      "headers": {
        "Authorization": "Bearer <MCP_AUTH_TOKEN の値>"
      }
    }
  }
}

mcp-remote 経由で接続する場合

{
  "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
}

Contributing ✨

Contributions welcome! See the Contributing Guide.

About

google-analytics-mcpです

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 100.0%