Skip to main content
Glama
GA4 MCP Server

GA4 MCP Server

by aarcheco

GA4 MCP Server

A Model Context Protocol server that connects Claude to Google Analytics 4, enabling natural language queries of your website analytics data.

Features

  • get_traffic_summary — Sessions, users, page views, bounce rate, avg session duration

  • get_top_pages — Most visited pages with engagement metrics

  • get_traffic_sources — Traffic breakdown by source (organic, direct, referral, etc.)

  • get_user_engagement — Engaged sessions, bounce rate, screen counts per session

Related MCP server: GA4 MCP Server

Quick Start

1. Install Dependencies

npm install

2. Set Up Credentials

  1. Copy the GA4 service account JSON file you downloaded to this folder:

    cp ~/Downloads/app-coaching-ga4-73c82846b5b0.json ./credentials.json
  2. Create a .env file:

    cp .env.example .env
  3. Update .env with your GA4 Property ID:

    GA4_CREDENTIALS_PATH=./credentials.json
    GA4_PROPERTY_ID=544866887

3. Add Service Account to GA4

In Google Analytics:

  1. Go to Admin → Property Access Management

  2. Click + (Add user)

  3. Paste: ga4-mcp-server@app-coaching-ga4.iam.gserviceaccount.com

  4. Assign Viewer role

  5. Save

4. Build & Test

npm run build
npm run dev

You should see: GA4 MCP Server started

5. Test with MCP Inspector

In a new terminal:

npm run inspect

This opens an interactive tool to test the server. Try:

  • Tool: get_traffic_summary

  • Inputs:

    • propertyId: 544866887

    • startDate: 2026-07-01

    • endDate: 2026-07-10

Deployment Options

Option 1: Replit (Easiest)

  1. Create a new Replit

  2. Import from GitHub (clone this repo) or upload files

  3. Set environment variables in Replit Secrets:

    • GA4_CREDENTIALS_PATH=./credentials.json

  4. Upload credentials.json to Replit

  5. Run: npm install && npm run build && npm run dev

  6. Replit gives you a live URL

  7. Connect to Claude using that URL

Option 2: Railway

  1. Create a Railway project

  2. Upload this repo via GitHub

  3. Add credentials.json as a config file

  4. Set env var: GA4_CREDENTIALS_PATH=./credentials.json

  5. Deploy

  6. Get the URL from Railway

  7. Connect to Claude

Option 3: Local (for testing only)

Run npm run dev locally, then in Claude's MCP settings add:

{
  "name": "ga4-mcp",
  "type": "stdio",
  "command": "node",
  "args": ["dist/index.js"]
}

Usage in Claude

Once deployed, ask Claude things like:

  • "What's the traffic summary for appcoaching.io for the last 7 days?"

  • "Which pages on my site get the most traffic?"

  • "What's driving traffic to appcoaching.io? Organic or direct?"

  • "What's the engagement rate on my site?"

Claude will automatically call the appropriate GA4 tools and analyze the data.

Troubleshooting

"Credentials file not found"

  • Ensure credentials.json is in the project root

  • Check GA4_CREDENTIALS_PATH env var is set correctly

"Unauthorized" or "Permission denied"

  • Verify the service account email is added to GA4 with Viewer role

  • Check that the correct Property ID is being used (544866887)

"No data available"

  • Ensure the date range has actual GA4 data

  • GA4 can take 24-48 hours to start collecting data on a new property

Files

  • src/index.ts — Main MCP server implementation

  • package.json — Dependencies and scripts

  • tsconfig.json — TypeScript configuration

  • credentials.json — GA4 service account (keep secure!)

Security

Never commit credentials.json to GitHub. Add to .gitignore:

credentials.json
.env
node_modules/
dist/

The credentials file is sensitive—treat it like a password.

Available Tools

4 tools
get_top_pagesB

Get top pages by views for a date range

Inputs: endDate (required), startDate (required), propertyId (required), limit.

get_traffic_sourcesB

Get traffic breakdown by source (organic, direct, referral, etc.)

Inputs: endDate (required), startDate (required), propertyId (required).

get_traffic_summaryA

Get overall traffic summary for a date range (sessions, users, page views, bounce rate, avg session duration)

Inputs: endDate (required), startDate (required), propertyId (required).

get_user_engagementC

Get user engagement metrics (engaged sessions, bounce rate, avg session duration, screens per session)

Inputs: endDate (required), startDate (required), propertyId (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.5/5.0

    Scored across 4 tools

    Disambiguation5/5

    Each tool targets a distinct aspect of GA4: top pages, traffic sources, overall traffic summary, and user engagement. No overlapping purposes.

    Naming Consistency5/5

    All tools follow a consistent verb_noun pattern ('get_<metric_group>'), making them predictable and easy to navigate.

    Tool Count4/5

    With 4 tools, the set is lean but covers core reporting needs. Slightly under-scoped for a full analytics server, but still reasonable.

    Completeness3/5

    Covers basic traffic, pages, sources, and engagement, but missing key GA4 reports like events, conversions, and user demographics, limiting agent capabilities.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      B
      maintenance
      Connects Google Analytics 4 data to Claude, Cursor and other MCP clients, enabling natural language queries of website traffic, user behavior, and analytics data with access to 200+ GA4 dimensions and metrics.
      12
      2,370 PyPI
      244
      MIT
    • A
      license
      A
      quality
      C
      maintenance
      Connects MCP clients like Claude Desktop to Google Analytics 4 Data API, enabling natural language queries for reports, top pages, traffic sources, conversions, realtime users, and period comparisons.
      7
      64 PyPI
      MIT
    • F
      license
      Not graded
      quality
      D
      maintenance
      Enables interactive Google Analytics 4 visualizations inside Claude conversations, supporting ad-hoc queries with line, bar, pie charts and data tables.
      -