Media MCP server

An assistant that queries Meta, Google Ads, GA4 and three more channels for account teams

EPAIn productionTypeScriptHonoNext.jsMCPClaude · OpenAIFirestoreCloud Run

Problem

Account teams work across six media platforms.

Answering something like “which campaign is ahead of its budget?” meant opening Meta, Google Ads, GA4, TikTok, Bing or DV360 and joining data by hand. The idea was to give them an assistant that queries those sources for them.

How it works

  1. Account teamweb · Claude.ai
  2. REST API + MCPHono · OAuth
  3. Agents and skillsbids · budget · GA4
  4. PlatformsMeta · Google Ads · GA4 · TikTok · Bing · DV360
Cloud Run, 2 to 15 instances
  1. 01People use the web app or connect the MCP server in Claude.ai.
  2. 02They pick the model (Claude or OpenAI, direct or through Vertex AI) and an agent: bid auditor, budget pacing, GA4 channel report or search terms auditor.
  3. 03Conversations are stored in Firestore and an admin dashboard shows usage per person.

Decisions

DECISION 01

Start with MCP on BigQuery.

In 2025 I built the first version on my own: MCP servers on BigQuery with FastMCP and a Claude Desktop extension. The 2026 version grew from there.

DECISION 02

People choose the model.

Claude or OpenAI, direct or through Vertex AI, is picked per conversation. There is no automatic routing: whoever asks decides which model they work with.

DECISION 03

Measure quality on real conversations.

I led a review of 484 real conversations to find where answers failed and why.

People started using it without us asking, for one-off questions like how their campaigns did last week, without building a report.
Key moment · the first use nobody asked for

Result

28active peopleSource: admin dashboard, Oct 2026
14.7Mtokens processedSource: admin dashboard, Oct 2026
484real conversations reviewed in the quality reviewSource: quality review, 2026

It was hard at first: the idea was new and few people at the agency understood what happened inside. Once they did, it became easy to use. It runs in production on Cloud Run and is also used from Claude.ai through OAuth. In October 2026 the final version entered a hardening phase.

MY ROLEFirst version and technical co-owner.I built v1 alone in 2025. In the 2026 version I contributed the DV360 provider, MCP authentication and the interface design, and led the quality review; most of the code is by a developer on my team.