Bohea

Managing Google Ads campaigns in plain English

A Model Context Protocol (MCP) server that connects Claude Desktop directly to the Google Ads API: pause campaigns, move budgets, and adjust keyword bids by just asking.

PythonMCPGoogle Ads APIOAuth 2.0Claude Desktop

The problem

Day-to-day Google Ads management is a loop of clicking through the same dashboard screens: check performance, pause the loser, raise the budget on the winner, tweak a bid. Each step is trivial; the loop is a time sink, and the Ads UI buries simple actions under layers of navigation.

The constraint

Google's Ads API is powerful but hostile to casual use: OAuth flows, developer tokens, customer IDs, YAML configs. The goal was to hide all of that behind natural language, without compromising on real API correctness, and to be demonstrable before any credentials existed.

The solution

An MCP server exposing seven tools to Claude Desktop:

So "pause campaign 1002" or "raise the daily budget of campaign 1001 to $65" become things you say, not workflows you click through.

The design decision that sells it: mock mode

The server ships with a built-in simulation mode. With no credentials at all, it serves realistic campaign data, so the full experience is demonstrable in Claude Desktop in minutes, before touching a live ad account. Going live is then a config flip: an interactive OAuth helper script generates the token and writes the config for you.

This is a pattern I use deliberately: the client sees the working product first, and connects real credentials last. Trust flows from demonstration, not from promises.

Proof

Google Ads MCP architecture overview diagram
Architecture: Claude Desktop ⇄ MCP server ⇄ Google Ads API, with mock-mode isolation.

Delivered with the full documentation set: technical specification, setup-and-verification guide with screenshots, developer notes, and a one-click Windows setup script — in both English and Chinese. Including the troubleshooting nobody writes down (Google's "unverified app" screen, testing-mode OAuth audiences). The public version, with a mock mode you can try without any credentials, is on GitHub.  Code →

Where else this applies

Any API your team touches daily through a clunky dashboard can become an MCP server: ad platforms, CRMs, e-commerce backends, internal admin panels. If your team already uses Claude, they can operate these systems by asking.

If a machine you build needs an interface, a device connection, or data that has to land somewhere else, tell me what it's costing you now. You'll get an honest read on whether it's solvable, and usually something running to look at. Start here →

← All case studies