Skip to content

rafiki270/google-analytics-mcp

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

36 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

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]

Provide credentials dynamically per request

By default, the MCP server uses your Application Default Credentials. If you prefer to reuse a single server instance with different Google Analytics accounts, each tool exposed by the server now accepts an optional credentials argument. Pass a service account key in any of the following formats to override the credentials just for that request:

  • A dictionary / mapping containing the service account JSON content.
  • A JSON string with the contents of the service account key.
  • A filesystem path pointing to a service account JSON file.

Example:

await run_report(
    property_id="123456789",
    date_ranges=[{"start_date": "2025-01-01", "end_date": "2025-01-31"}],
    dimensions=["sessionSourceMedium"],
    metrics=["activeUsers"],
    credentials="/path/to/client-service-account.json",
)

The supplied credentials must include the https://www.googleapis.com/auth/analytics.readonly scope. When no override is provided, the server returns an error so that requests never fall back to your application default credentials. If you really need the legacy behaviour, opt in explicitly by setting ANALYTICS_MCP_ALLOW_ADC=true before launching the server.

Launch locally with Make πŸ› οΈ

make launch builds a Docker image, updates your Codex MCP config (if the codex CLI is installed), and runs the server inside the container. Provide any runtime credentials via DOCKER_RUN_FLAGS so they are passed to docker run:

make DOCKER_RUN_FLAGS="-e GOOGLE_APPLICATION_CREDENTIALS=/creds.json -v $HOME/keys/analytics.json:/creds.json:ro" launch

If you want to allow the server to fall back to Application Default Credentials, add -e ANALYTICS_MCP_ALLOW_ADC=true to DOCKER_RUN_FLAGS.

To skip Docker entirely and run the server with your active Python environment, use:

make launch-local

make launch automatically attempts to register the MCP server with Codex using codex mcp add. Set CODEX=/path/to/codex or MCP_SERVER_NAME=custom-name if you need to override the defaults. If the Codex CLI is not available, the target falls back to launching the container without modifying your configuration.

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?
    

Contributing ✨

Contributions welcome! See the Contributing Guide.

About

No description, website, or topics provided.

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 97.8%
  • Makefile 1.6%
  • Dockerfile 0.6%