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.
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:
- Campaigns. List with performance metrics (impressions, clicks, conversions, spend), toggle ENABLED/PAUSED, set daily budgets.
- Ad groups. List with status and parent campaign.
- Keywords and bidding. Pull keywords with metrics and current bids, add new keywords with match type and CPC limit, update max-CPC bids.
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
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 →