August 12, 2026
I got tired of clicking through GA4, so I built an MCP server instead
Why I replaced surfing GA4's admin menus with a small tool I can just ask questions — and what that has to do with client work.
I check my site's traffic more than I'd like to admit — not because I'm precious about the numbers, but because when you change your positioning or publish something new, you want to know if it landed. The problem was never the data. GA4 has all of it. The problem was getting to it: a few clicks into Admin, a report I half-remember the name of, a date range I have to reset every time.
So instead of tolerating the workflow, I built a small tool.
What MCP actually is
Skip this part if you already know. Model Context Protocol is a way to give an AI assistant a defined, narrow set of actions it can take against a real system — not "let it browse the internet and figure it out," but "let it call this specific, well-documented function, with these specific inputs, and nothing else." It's the same pattern I'd use to connect a client's CRM or support inbox into an AI workflow. I just applied it to my own reporting first, because I had a real annoyance to fix and full control over the system I was connecting to.
What I built
A GA4 reporting server with five tools: a traffic overview, top pages, traffic sources, a summary of the custom events I track (form submissions, button clicks, scroll depth), and a flexible fallback for anything the other four don't cover. Each one is scoped to read-only access against a single GA4 property, authenticated through a service account with Viewer permissions — it can't change anything in my Analytics setup, only report on it. That constraint was deliberate. A tool that can only read is a tool I don't have to think twice about handing to an AI assistant.
Does it actually work
Right now I can just ask, in plain language, "how's traffic been the last month," and get back:
Sessions: 16
Active Users: 16
New Users: 15
Engaged Sessions: 8
Avg. Session Duration: 85.4s
Engagement Rate: 50.0%
Small numbers — the site is brand new. That's not really the point. The point is I asked a question in a chat window and got a real answer from a real system, instead of navigating to it myself.
What's next
I've set this up to run automatically once a week — a report comparing the last 7 days against the last 28, flagging what's working, what's not, and a few concrete suggestions, delivered without me opening a dashboard at all. I can also trigger it on demand whenever I want a pulse check between reports.
This is a small example of the bigger thing I actually care about. Most useful "AI integration" work isn't glamorous. It's identifying an annoying, well-defined, repetitive task and building the narrow, boring, reliable tool that removes it — not "add AI to everything," but find the specific friction and build the specific fix. That's the same approach I bring to client work.