Skip to content

About

No description, website, or topics provided.

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

 
 

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 a MCP server that interacts with APIs for Google Analytics.

The server supports two deployment modes:

  • Local (stdio) β€” run as a subprocess by Gemini CLI, Claude Desktop, Claude Code, or any MCP client. Uses Application Default Credentials. No extra infrastructure needed.
  • Remote (HTTP + OAuth) β€” deploy to Google Cloud Run and connect from web-based clients such as claude.ai. Users authenticate with their own Google account via OAuth 2.0; no credentials are shared with the server operator. See Remote deployment.

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.
  • run_funnel_report: Runs a Google Analytics funnel 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"
          }
        }
      }
    }

Configure Claude Code

  1. Add the MCP server with the following command:

    Replace PATH_TO_CREDENTIALS_JSON with the path you copied in the previous step, and replace YOUR_PROJECT_ID with the project ID of your Google Cloud project.

    claude mcp add analytics-mcp \
      --scope user \
      -e "GOOGLE_APPLICATION_CREDENTIALS=PATH_TO_CREDENTIALS_JSON" \
      -e "GOOGLE_PROJECT_ID=YOUR_PROJECT_ID" \
      -- pipx run analytics-mcp

Remote deployment (Cloud Run + OAuth) ☁️

Deploy the server to Cloud Run so web-based MCP clients such as claude.ai can connect to it. Each user authenticates with their own Google account via OAuth 2.0 β€” no Analytics credentials are configured on the server, and requests without a valid per-user token are rejected.

1. Enable APIs βœ…

In addition to the Google Analytics Admin API and Google Analytics Data API, enable:

2. Create an OAuth 2.0 client πŸ”‘

  1. Open APIs & Services β†’ Credentials in the Google Cloud Console.

  2. Click Create credentials β†’ OAuth client ID.

  3. Choose Web application as the application type.

  4. Under Authorized redirect URIs, add a placeholder for now β€” you will replace it with the real service URL after deploying:

    https://example.com/auth/callback
    
  5. Click Create and note the Client ID and Client secret.

3. Store the client secret in Secret Manager 🀫

Never pass the OAuth client secret as a plaintext --set-env-vars value β€” it would be visible to anyone who can describe the Cloud Run service.

printf '%s' 'YOUR_OAUTH_CLIENT_SECRET' | gcloud secrets create \
  analytics-mcp-oauth-client-secret --data-file=-

4. Deploy πŸš€

Run the deploy script, which builds the image with Cloud Build and performs the two-phase Cloud Run deployment (deploy β†’ discover service URL β†’ redeploy with ANALYTICS_MCP_BASE_URL set):

PROJECT_ID=YOUR_PROJECT_ID \
REGION=YOUR_REGION \
OAUTH_CLIENT_ID=YOUR_OAUTH_CLIENT_ID \
  ./deploy/cloud-run.sh

The script prints the service URL when it finishes. Then return to your OAuth client in the Google Cloud Console and replace the placeholder redirect URI with:

https://YOUR_SERVICE_URL/auth/callback

The service is deployed with --allow-unauthenticated because authentication happens at the application layer: FastMCP's Google OAuth provider rejects any request to /mcp that doesn't carry a valid per-user token.

5. Connect from claude.ai πŸ€–

  1. Open claude.ai and go to Settings β†’ Connectors.

  2. Add a custom connector with the URL:

    https://YOUR_SERVICE_URL/mcp
    
  3. Authorize with your Google account when prompted.

Environment variable reference

Variable Required Description
ANALYTICS_MCP_OAUTH_CLIENT_ID Yes (HTTP mode) OAuth 2.0 client ID
ANALYTICS_MCP_OAUTH_CLIENT_SECRET Yes (HTTP mode) OAuth 2.0 client secret. Set from Secret Manager via --set-secrets, never --set-env-vars.
ANALYTICS_MCP_BASE_URL Yes (HTTP mode) Public URL of the deployed service
PORT Cloud Run Port to listen on (default: 8080, auto-set by Cloud Run)

When ANALYTICS_MCP_OAUTH_CLIENT_ID and ANALYTICS_MCP_OAUTH_CLIENT_SECRET are both set, the server starts in HTTP mode with OAuth and serves /mcp. Otherwise it runs on stdio exactly as before β€” local setups are unaffected.

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?
    

Contributing ✨

Contributions welcome! See the Contributing Guide.

About

No description, website, or topics provided.

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages