loading…
Search for a command to run...
loading…
Builds valid Google Analytics 4 API requests from plain parameters with automatic date range resolution, metric formatting, and filter expression parsing. Elimi
Builds valid Google Analytics 4 API requests from plain parameters with automatic date range resolution, metric formatting, and filter expression parsing. Eliminates manual GA4 API syntax construction and raw data formatting for analytics queries.
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.
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: 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
}
}
| 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 |
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.
POST /mcp
Handles all MCP protocol requests (tools/list, tools/call) via StreamableHTTP transport.
Built by Mastermind HQ
MIT License
Добавь это в claude_desktop_config.json и перезапусти Claude Desktop.
{
"mcpServers": {
"query-analytics": {
"command": "npx",
"args": []
}
}
}