MCP Hub
Back to servers

Google Analytics MCP Server

A local MCP server for Google Analytics 4 that provides tools for SEO and paid reporting, enabling queries on organic and paid search performance, landing pages, channels, campaigns, and real-time data.

glama
Updated
Apr 27, 2026

Google Analytics MCP

Local MCP server for Google Analytics 4. Wraps the GA4 Data API behind tools focused on SEO and Paid reporting.

Tools

ToolPurpose
ga4_organic_search_performanceSEO: Organic Search sessions/users/engagement/conversions by landing page, source, country, or device
ga4_paid_search_performancePaid: Paid Search sessions/conversions/cost/CPC by campaign, landing page, keyword, or source
ga4_all_paid_performancePaid: all paid channels (Search + Social + Video + Display) with cost and ROAS
ga4_google_ads_performancePaid: Google Ads campaign × ad group × keyword (requires GA4 ↔ Google Ads link)
ga4_landing_page_performanceTop landing pages by sessions/engagement/conversions (optional channel filter)
ga4_channel_performanceDefault channel group rollup
ga4_campaign_performanceCampaign × source × medium breakdown
ga4_conversions_by_sourceConversions and key events by source/medium/channel
ga4_realtime_active_usersActive users in last 30 min
ga4_run_reportFlexible escape hatch — any dimensions + metrics

Setup

git clone https://github.com/ZLeventer/google-analytics-mcp-server.git
cd google-analytics-mcp-server
npm install
npm run build

Credentials

Copy .env.example to .env and fill in:

  • GA4_PROPERTY_ID — numeric property ID from GA4 Admin → Property Settings (e.g. 123456789). Not the Measurement ID (G-XXXXXXX).
  • GOOGLE_APPLICATION_CREDENTIALS — absolute path to the service account JSON key file.

Create the service account

  1. Go to console.cloud.google.com → pick/create a project
  2. APIs & Services → Library → enable Google Analytics Data API
  3. IAM & Admin → Service AccountsCreate service account (name it ga4-mcp or similar)
  4. On the created account → KeysAdd keyCreate new keyJSON → download
  5. Save the JSON as service-account.json in this directory (already in .gitignore)
  6. In GA4 → Admin → Property Access Management, click + → paste the service account email (ga4-mcp@project-id.iam.gserviceaccount.com) → assign Viewer

The Google SDK auto-reads GOOGLE_APPLICATION_CREDENTIALS — no code changes needed.

Install into Claude Code

claude mcp add google-analytics \
  --env-file "/absolute/path/to/google-analytics-mcp-server/.env" \
  -- node "/absolute/path/to/google-analytics-mcp-server/dist/index.js"

Or add to ~/.claude.json manually:

{
  "mcpServers": {
    "google-analytics": {
      "command": "node",
      "args": ["/absolute/path/to/google-analytics-mcp-server/dist/index.js"],
      "env": {
        "GA4_PROPERTY_ID": "123456789",
        "GOOGLE_APPLICATION_CREDENTIALS": "/absolute/path/to/google-analytics-mcp-server/service-account.json"
      }
    }
  }
}

Restart Claude Code after install.

Date formats

All date args accept GA4 formats:

  • YYYY-MM-DD (e.g. 2026-04-01)
  • NdaysAgo (e.g. 28daysAgo, 90daysAgo)
  • yesterday, today

Defaults: 28daysAgoyesterday.

Verification

After credentials are in place:

node -e '
  import("./dist/tools/reports.js").then(m =>
    m.channelPerformance({ start_date: "7daysAgo", end_date: "yesterday", limit: 10 })
  ).then(r => console.log(JSON.stringify(r, null, 2)))
'

If that returns rows, everything works. Expected errors:

  • GA4_PROPERTY_ID is not set — check .env
  • PERMISSION_DENIED — service account isn't granted Viewer on the property
  • 403 Google Analytics Data API has not been used — enable the API in the GCP project

Roadmap

  • Admin API tools (list custom dimensions, conversion events, audiences) once needed
  • Search Console MCP as sibling server for rankings / impressions / CTR data (complements this one)
  • Pair with Demandbase MCP to join GA4 traffic with firmographics (account-level attribution)

Reviews

No reviews yet

Sign in to write a review