MCP server for Google Analytics providing tools to query GA4 data, retrieve account/property information, and run reports
Server has 7 tools with complete schemas and descriptions. Naming follows verb_noun convention (get_, list_, run_). Descriptions are present and substantive (avg ~150 chars), exceeding the 10-char minimum. However, parameter descriptions lack depth, many are generic ('A list of...') without format constraints, enums, or validation guidance. Output schemas are not documented. Error handling is absent from visible code. No tool annotations (readOnlyHint, destructiveHint). The run_report and run_realtime_report tools accept complex nested objects (FilterExpression, OrderBy) with no schema detail or examples, forcing LLMs to guess structure. Missing: per-parameter type hints in descriptions, output schema documentation, error recovery guidance.
Retrieves information about the user's Google Analytics accounts and properties.
Retrieves custom dimensions and metrics for a property.
Returns details about a property.
Returns a list of links to Google Ads accounts for a property.
Returns annotations for a property. Annotations are a feature that allows you to leave notes on GA4 for specific dates or periods. They are typically used to record service releases, marketing campaign launches or changes, and rapid traffic increases or decreases due to external factors.
Runs a Google Analytics Data API realtime report. See https://developers.google.com/analytics/devguides/reporting/data/v1/realtime-basics for more information.
Complex nested parameter schemas (FilterExpression, OrderBy) lack documentation. run_report and run_realtime_report accept objects with no visible schema detail, format examples, or field descriptions. LLMs cannot infer correct structure.
No output schemas documented. Tools return JSON but LLMs have no visibility into response structure, field types, or required fields. Downstream tool chaining is unsupported.
Parameter descriptions are generic ('A list of dimensions...', 'A list of metrics...') without format constraints, valid value ranges, or examples. Missing: enum declarations for categorical params, min/max for numeric params, regex patterns for strings.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
Runs a Google Analytics Data API report. Note that the reference docs at https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta all use camelCase field names, but field names passed to this method should be in snake_case since the tool is using the protocol buffers (protobuf) format. The protocol buffers for the Data API are available at https://github.com/googleapis/googleapis/tree/master/google/analytics/data/v1beta.
No error handling visible in coordinator.py call_tool(). Exception caught but response is incomplete (code truncated). No error classification (retryable vs fatal), no recovery guidance, no actionable error messages for LLM.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). All tools are read-only but this is not declared in MCP tool definitions, forcing LLMs to infer safety from descriptions alone.