GA4查询构建MCP服务

Query Analytics 是一个 MCP 服务器,可将简洁参数转换为合法的 GA4 API 请求,解析日期范围、格式化指标、解析筛选表达式并聚合响应数据,帮助分析工程师、产品开发者和 AI 代理高效完成 Google Analytics 4 数据查询。

  • by joecheofficial
  • JavaScript
  • 混合部署
  • 更新于
在 GitHub 查看 josephtandle/google-analytics-mcp-mcp

使用说明

Stop wrestling with analytics API syntax.

Query Analytics is an MCP server that turns plain parameters into valid GA4 API requests, resolves human-readable date ranges, formats raw metric values, parses filter expressions, and aggregates response rows. No more digging through the GA4 reference docs mid-session.

Quick Start

Add this to your Claude Desktop or MCP client config:

{
  "mcpServers": {
    "query-analytics": {
      "url": "https://query-analytics-YOUR_HASH-uc.a.run.app/mcp"
    }
  }
}

Replace YOUR_HASH with the Cloud Run service URL from your deployment.

Before / After

Before: Hand-building a GA4 request body at 2am.

// What you used to write by hand:
{
  "dimensions": [{"name": "date"}, {"name": "country"}],
  "metrics": [{"name": "sessions"}, {"name": "bounceRate"}],
  "dateRanges": [{"startDate": "2026-03-06", "endDate": "2026-04-02"}],
  "limit": 1000,
  "orderBys": [{"metric": {"metricName": "sessions"}, "desc": true}]
}

After: One tool call.

build_ga4_query(
  metrics: ["sessions", "bounceRate"],
  dimensions: ["date", "country"],
  date_range: "last_28_days",
  order_by_metric: "sessions"
)

Output:

{
  "query": {
    "dimensions": [{"name": "date"}, {"name": "country"}],
    "metrics": [{"name": "sessions"}, {"name": "bounceRate"}],
    "dateRanges": [{"startDate": "2026-03-06", "endDate": "2026-04-02"}],
    "limit": 1000,
    "orderBys": [{"metric": {"metricName": "sessions"}, "desc": true}]
  },
  "resolvedDateRange": {
    "startDate": "2026-03-06",
    "endDate": "2026-04-02",
    "daysCount": 28
  }
}

Tools

Tool What it does
build_ga4_query Build a valid GA4 Data API runReport request body from plain parameters
get_date_range Convert named periods (last_28_days, this_month, etc.) to start/end date strings
format_analytics_metric Format raw numbers into human-readable strings (62.34%, 2m 14s, $1,234.00)
parse_filter_expression Convert plain-text filter strings into GA4 filterExpression JSON
aggregate_rows Roll up GA4 response rows by a dimension with metric summation and top-N

Who is this for?

  • Analytics engineers who are tired of re-reading the GA4 API docs to remember the exact filterExpression schema.
  • Product developers building dashboards who need clean, formatted metric values without writing formatting helpers from scratch.
  • AI agents and automations that need to construct valid GA4 queries programmatically without hallucinating API structure.

Health Check

Both endpoints return the same JSON:

GET /
GET /health
{
  "status": "ok",
  "server": "query-analytics",
  "version": "1.0.0",
  "tools": 5
}

Use /health for Cloud Run liveness probes.

MCP Endpoint

POST /mcp

Handles all MCP protocol requests (tools/list, tools/call) via StreamableHTTP transport.


Built by Mastermind HQ

MIT License