Skip to content

Google Analytics (unofficial)

by safe-mcp.com · remote · no sign-in to list tools · v1.0.0 · published by com.safe-mcp

Connect Google Analytics to ChatGPT. Query GA4 data in plain English and get instant insights.

Changes · 1

5 tools: 1 change things and 4 only read.

Scanned Oct 21, 2026

2 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http google-analytics-unofficial https://api.safe-mcp.com/mcp

Findings

Matches of fixed checks, with the text they matched.

2 warn
  • The input schema at properties.selectorSets.properties.ga4.anyOf[0].items.$ref contains a 44-character base64 string.

    Matched text

    inputSchema.properties.selectorSets.properties.ga4.anyOf[0].items.$ref: "#/properties/selectors/properties/ga4/anyOf/0"

    What this check looks for
  • The server marks "marketing_manage_surface" as not read-only (readOnlyHint: false), and its words say it reads.

    Matched text

    annotations: {"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false}; The description's first verb is "get": a word for reading.

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

5 tools

Changes things 1Claude Code: ask
  • marketing_manage_surfaceGets or updates persisted selectors for a website/app analysis surface.2 findings

    Why it is in this group

    • The description's first verb is "get": a word for reading.
    • The server marks it as not read-only (readOnlyHint: false).

    Findings

    • Warn

      The input schema at properties.selectorSets.properties.ga4.anyOf[0].items.$ref contains a 44-character base64 string.

      Matched text

      inputSchema.properties.selectorSets.properties.ga4.anyOf[0].items.$ref: "#/properties/selectors/properties/ga4/anyOf/0"

      What this check looks for
    • Warn

      The server marks "marketing_manage_surface" as not read-only (readOnlyHint: false), and its words say it reads.

      Matched text

      annotations: {"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false}; The description's first verb is "get": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Gets or updates persisted selectors for a website/app analysis surface. Use action='get' to inspect mappings and action='update' to persist GA4, Search Console, or Bing Webmaster selectors.

    Annotations the server declares

    • readOnlyHint: false
    • openWorldHint: false
    • destructiveHint: false
Only reads 4Claude Code: allow
  • marketing_get_catalogUse this when the user wants to discover the canonical marketing reporting graph, available sources, supported metrics, supported dimensions, or which connectors are live today.No findings

    Why it is in this group

    • The name "marketing_get_catalog" says "get": a word for reading.
    Description, as the server wrote it
    Use this when the user wants to discover the canonical marketing reporting graph, available sources, supported metrics, supported dimensions, or which connectors are live today. Each source also reports a `passthrough` field describing whether native fields beyond the curated list are accepted (GA4 accepts any native dimension/metric; Search Console accepts any native dimension; Bing is limited to the curated fields). Do not use this for GA4 account discovery or data retrieval.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
    • destructiveHint: false
  • marketing_get_funnelUse for ordered conversion-step analysis: GA4 ordered_steps step funnels (e.g.No findings

    Why it is in this group

    • The name "marketing_get_funnel" says "get": a word for reading.
    Description, as the server wrote it
    Use for ordered conversion-step analysis: GA4 ordered_steps step funnels (e.g. session_start → add_to_cart → purchase) and cross-source holistic_bundle landing-page funnels joining GA4, Google Search Console, and Bing Webmaster. Covers funnel drop-off between steps (e.g. from landing on the site to adding to cart to purchasing), conversion paths, and acquisition-to-conversion context. Pass one date range for a single window or two date ranges for period-over-period comparison.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
    • destructiveHint: false
  • marketing_get_reportPrimary reporting tool for a given GA4 property or site.No findings

    Why it is in this group

    • The name "marketing_get_report" says "get": a word for reading.
    Description, as the server wrote it
    Primary reporting tool for a given GA4 property or site. Use for totals, trends, and breakdowns by dimension across GA4 website traffic and app analytics, Google Search Console site traffic, and Bing Webmaster — including last-30-days summaries, revenue, leads, sessions, users, engagement/time-on-page (average_session_duration, user_engagement_duration), and period-over-period comparisons. Drill deep: GA4 supports up to 9 grouped dimensions (date/hour, geo, device/browser/OS, source/medium/channel, landing_page/page_path, etc.). Defaults to all mapped connected sources merged into one standardized view, aligned on the shared grain (typically landing_page) so a page row blends GA4 sessions+engagement with Search Console/Bing clicks/impressions/CTR/position; per-source detail (e.g. full query lists) stays in sourceSections. Note GA4 has no `query` dimension and Search Console/Bing have no sessions/engagement, so those cannot share one row — query is a Search Console/Bing breakdown. Narrow with sources or sourceMode='single'. Any GA4 dimension/metric name not in the catalog is passed through to the GA4 API automatically; metricMode='source_native' forces a pure GA4-native report. Pass one date range for a single window or two date ranges for period-over-period comparison.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
    • destructiveHint: false
  • marketing_get_sourcesLists connected and missing GA4, Google Analytics properties, property IDs, web streams, app streams, measurement IDs, Firebase app IDs, Google Search Console sites, Bing Webmaster…No findings

    Why it is in this group

    • The name "marketing_get_sources" says "get": a word for reading.
    Description, as the server wrote it
    Lists connected and missing GA4, Google Analytics properties, property IDs, web streams, app streams, measurement IDs, Firebase app IDs, Google Search Console sites, Bing Webmaster sites, and current analysis surface mappings. Use this before reporting when property/site selectors are unknown.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
    • destructiveHint: false

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.0.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http google-analytics-unofficial https://api.safe-mcp.com/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__google-analytics-unofficial__marketing_get_sources",
      "mcp__google-analytics-unofficial__marketing_get_catalog",
      "mcp__google-analytics-unofficial__marketing_get_report",
      "mcp__google-analytics-unofficial__marketing_get_funnel"
    ],
    "ask": [
      "mcp__google-analytics-unofficial__marketing_manage_surface"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as google-analytics-unofficial. Review it before you use it.