GA4 MCP Server
A Model Context Protocol (MCP) server for Google Analytics 4 (GA4) that provides tools for querying GA4 data through the Admin API and Data API.
Features
- Dual Authentication: Supports both OAuth Playground tokens and Service Account credentials
- 8 GA4 Tools:
- Account and property management (Admin API)
- Report execution and realtime data (Data API)
- GTM → GA4 parameter validation (cross-platform orchestration)
- Compatible with Claude Desktop and other MCP-enabled clients
- GTM Integration: Works with GTM MCP Server for end-to-end event validation
Installation
npm install
npm run build
Quick Start (OAuth Setup)
1. Create OAuth Credentials
- Go to Google Cloud Console
- Create a new project or select an existing one
- Enable the Google Analytics Data API and Google Analytics Admin API
- Go to Credentials → Create Credentials → OAuth client ID
- Select Desktop app as the application type
- Download or copy the Client ID and Client Secret
2. Run Setup Script
# Set your OAuth credentials
export GA4_CLIENT_ID="your-client-id.apps.googleusercontent.com"
export GA4_CLIENT_SECRET="your-client-secret"
# Run setup to authenticate with Google
npm run setup
This will:
- Open a browser for Google login
- Request read-only access to Google Analytics
- Save tokens to
~/.ga4-mcp/tokens.json
3. Use the Server
Once authenticated, you can use the MCP server with Claude Desktop or other clients.
Authentication
The server supports two authentication methods, checked in this order:
1. OAuth Playground Tokens (Recommended for personal use)
Set these environment variables:
GA4_ACCESS_TOKEN- OAuth access tokenGA4_REFRESH_TOKEN- OAuth refresh tokenGA4_CLIENT_ID- OAuth client IDGA4_CLIENT_SECRET- OAuth client secret
Or create ~/.ga4-mcp/tokens.json:
{
"access_token": "your-access-token",
"refresh_token": "your-refresh-token",
"client_id": "your-client-id",
"client_secret": "your-client-secret"
}
2. Service Account (Recommended for production)
Options (in priority order):
- Set
GA4_SERVICE_ACCOUNT_JSONenvironment variable with JSON string - Set
GOOGLE_APPLICATION_CREDENTIALSto the JSON file path - Place JSON file at
~/.ga4-mcp/credentials.json - Place JSON file in
./Credential/folder
Usage
Claude Desktop Configuration
Add to your Claude Desktop configuration (~/.config/claude-desktop/config.json):
{
"mcpServers": {
"ga4": {
"command": "node",
"args": ["/path/to/ga4-mcp-server/dist/index.js"],
"env": {
"GA4_ACCESS_TOKEN": "your-access-token",
"GA4_REFRESH_TOKEN": "your-refresh-token",
"GA4_CLIENT_ID": "your-client-id",
"GA4_CLIENT_SECRET": "your-client-secret"
}
}
}
}
Direct Execution
# With OAuth environment variables
GA4_ACCESS_TOKEN="..." GA4_REFRESH_TOKEN="..." GA4_CLIENT_ID="..." GA4_CLIENT_SECRET="..." node dist/index.js
# With Service Account
GOOGLE_APPLICATION_CREDENTIALS="/path/to/service-account.json" node dist/index.js
Available Tools
Admin API Tools
| Tool | Description |
|---|---|
ga4_account_summaries |
List all GA4 accounts and properties the user has access to |
ga4_property_details |
Get detailed information about a specific property |
ga4_google_ads_links |
List Google Ads accounts linked to a property |
ga4_property_annotations |
List annotations for a property (limited support) |
Data API Tools
| Tool | Description |
|---|---|
ga4_run_report |
Run a standard GA4 report with dimensions, metrics, and date ranges |
ga4_run_realtime_report |
Run a realtime report for the last 30 minutes |
ga4_custom_dimensions_metrics |
Get custom dimensions and metrics defined for a property |
GTM Validation Tool
| Tool | Description |
|---|---|
ga4_validate_gtm_params |
Validate GTM event parameters against GA4 custom dimensions and data collection |
Example Usage
Get Account Summaries
{
"tool": "ga4_account_summaries"
}
Run a Report
{
"tool": "ga4_run_report",
"arguments": {
"propertyId": "123456789",
"dateRanges": [
{"startDate": "30daysAgo", "endDate": "yesterday"}
],
"dimensions": ["country", "deviceCategory"],
"metrics": ["activeUsers", "sessions"]
}
}
Run Realtime Report
{
"tool": "ga4_run_realtime_report",
"arguments": {
"propertyId": "123456789",
"dimensions": ["country"],
"metrics": ["activeUsers"]
}
}
Validate GTM Parameters
{
"tool": "ga4_validate_gtm_params",
"arguments": {
"propertyId": "123456789",
"gtmEvents": [
{
"eventName": "purchase",
"parameters": ["transaction_id", "value", "currency"]
}
Tools 8
ga4_account_summariesList all GA4 accounts and properties the user has access toga4_property_detailsGet detailed information about a specific propertyga4_google_ads_linksList Google Ads accounts linked to a propertyga4_property_annotationsList annotations for a propertyga4_run_reportRun a standard GA4 report with dimensions, metrics, and date rangesga4_run_realtime_reportRun a realtime report for the last 30 minutesga4_custom_dimensions_metricsGet custom dimensions and metrics defined for a propertyga4_validate_gtm_paramsValidate GTM event parameters against GA4 custom dimensions and data collectionEnvironment Variables
GA4_ACCESS_TOKENOAuth access tokenGA4_REFRESH_TOKENOAuth refresh tokenGA4_CLIENT_IDOAuth client IDGA4_CLIENT_SECRETOAuth client secretGA4_SERVICE_ACCOUNT_JSONService account JSON stringGOOGLE_APPLICATION_CREDENTIALSPath to service account JSON file