Tutorial · 26 August 2026

Ask Claude about your pageviews: Cookie Free Analytics MCP

Two brass speaking-tube horns on a harbour-paper desk, joined by a thin linen cord.

You already have the numbers. The missing piece was asking Cursor, after a deploy, whether /pricing moved — without opening the Harbour UI and without handing an agent a visitor graph. Cookie Free Analytics now has a hosted MCP: the dashboard as tools, OAuth 2.1 for Claude and Cursor, the hashed bearer for curl, Starter and Growth.

It is not a product-analytics platform. It does not dump pageview rows. It does not return visitor hashes. Live is last page in five minutes. Funnels are Growth, linear, same UTC day. curl still works. That is the honest list.

What “analytics MCP” usually means

Model Context Protocol is how an agent calls tools. For web analytics the useful query is not “write me a HogQL report.” It is “how did /pricing do after yesterday’s deploy?” and “which source sent visitors today?” Those are dashboard slices with names.

As of 26 August 2026 the field looks like this. PostHog documents an official MCP so a coding agent can query web traffic from the editor — including that deploy question. Plausible documents an MCP built by the Sentry team and says it is community, not official; you typically bring a Stats API key. Fathom Analytics has unofficial npm wrappers; do not confuse them with Fathom.video’s meeting MCP. Google Analytics 4 has community Data API servers that still sit on an ads graph. mcp-analytics.com sells MCP-native analytics with no dashboard. Matomo publishes a privacy FAQ because the LLM becomes a recipient of whatever the tools return.

We host POST /mcp on our origin. Same Bearer as GET /api/v1. Six tools that wrap the slices you already see: list_sites, get_overview, get_pages, get_sources, get_live, get_funnels. No npx sidecar. No Google token. The dashboard stays — MCP is a client, not a replacement.

What Claude actually sees

The tools return aggregates: visitor counts, page ranks, sources, a live list of paths, Growth funnel steps. They do not return the daily HMAC, the IP, or the user-agent. That is the privacy win versus pointing an agent at a warehouse or a raw export.

It is not a wall. Once the JSON is in Claude Desktop or Cursor, that vendor’s model sees the tool result if the client sends it. We do not log the chat. We cannot promise Anthropic or Cursor will not. If that is unacceptable, do not connect MCP; keep curl on a machine you run, or stay on the dashboard. Matomo is right to say this out loud. So are we.

What to ask

Did /pricing move after yesterday’s deploy? list_sites, then get_overview and get_pages with range today or 7d. What are the top sources this week? get_sources. Who is on the site right now? get_live — last beacon in five minutes, no heartbeat. Growth: did the signup funnel convert today? get_funnels.

Do not ask for a user journey, a cohort, or a visitor hash. The tools cannot invent one. Do not ask MCP to write pageviews; ingest is still the 1 KB script.

The steps

  1. 1

    Be on Starter or Growth

    Hobby is the dashboard with a badge. MCP and the read API are a paid door. Open Plan if Account says to upgrade.

  2. 2

    Add the hosted MCP

    Cursor Settings → MCP, or Claude: claude mcp add --transport http cookie-free-analytics https://www.cookiefreeanalytics.com/mcp. The client reads /.well-known/oauth-protected-resource, you Allow on this host. That is OAuth 2.1 with PKCE. Not a Google access token.

  3. 3

    Or mint a bearer for curl

    Account → Read API → name it → Mint. Copy cfa_live_… immediately. We store a SHA-256 hash. Scripts send Authorization: Bearer. The MCP card still fills JSON with that secret if you want the old paste path.

  4. 4

    Ask list_sites, then a slice

    list_sites first — you need the site id. Then get_overview, get_pages, get_sources, get_live. Growth can call get_funnels. range is today, 7d, 30d, 90d, or YYYY-MM-DD..YYYY-MM-DD. Same numbers as the dashboard.

Questions

Does MCP return visitor hashes or raw pageviews?
No. Aggregates only — the same ranks and totals as the dashboard. Live is last path per hash in five minutes, without the hash. Raw rows stay the JSON export on Account.
What does Claude or Cursor actually see?
The JSON those tools return: visitors, pages, sources, live counts, Growth funnels. Not IPs, not user-agents, not hashes. The model provider (Anthropic, Cursor, …) then sees whatever the client sends it. We do not train on your pageviews. We also cannot stop the client from pasting that JSON into a chat.
Is Hobby included?
No. Starter and Growth. A Hobby token is rejected. Events are not billed on any plan.
Is this Google OAuth?
No. Google signs humans into the website. MCP OAuth is ours: the client opens /oauth/authorize, you Allow, we mint a token bound to /mcp. A Google access token still cannot read pageviews. curl may keep using cfa_live_… from Account.
Does Plausible ship an official MCP?
Plausible’s docs as of 21 August 2026 list an MCP server built by the Sentry team and call it community, not an official integration. Fathom Analytics MCP wrappers on npm are unofficial. PostHog has an official MCP (HogQL, product analytics). We host POST /mcp ourselves. Claude uses OAuth 2.1; curl uses the same hashed bearer as GET /api/v1.

Read API + MCP docs · Mint a token · Read API tutorial · Features

All notes · How a visitor is counted