Connecting Claude to Google Ads — Without an Official MCP or CLI
An internal automation system that lets an AI agent manage live Google Ads campaigns through natural-language requests — built entirely from scratch, since Google does not provide an official Model Context Protocol (MCP) server or CLI for Ads automation.
Google Ads has no agent-callable interface
Anthropic's Model Context Protocol (MCP) has made it straightforward to connect Claude to dozens of tools and platforms — but Google has not published an official MCP server or CLI for Google Ads. Every other major ad and analytics platform in this client's stack had some form of programmatic or agent-friendly access; Google Ads did not.
That left the marketing team doing what most teams still do: logging into the Google Ads UI multiple times a day to check budget pacing, adjust bids, pause underperforming ad groups, and react to anomalies — all manually, all reactively, and all dependent on someone being available at the right moment.
We built the missing integration layer ourselves
Since no official bridge existed, we built a custom middleware service that exposes Google Ads API actions — campaign and ad group management, bid adjustments, budget changes, and reporting — as a set of structured, tool-callable functions Claude can invoke directly, effectively replicating what an official MCP server would provide.
Every function call passes through an authentication layer, rate limiting to respect Google's API quotas, a full audit log, and a configurable safety-guardrail layer that requires explicit human approval before any action above a defined budget or scope threshold is executed.
From a plain-language request to a logged, auditable action
How we built it
We defined a schema of discrete, named functions (adjust_bid, pause_ad_group, reallocate_budget, get_performance_report, etc.) mirroring exactly what an official MCP server would expose, each with strict input validation.
A dedicated backend service handles OAuth with the Google Ads API, translates Claude's tool calls into authenticated API requests, and normalises responses back into a format Claude can reason about.
Any action affecting budget above a configurable threshold, or any irreversible change, is routed to a human approval queue instead of executing immediately — balancing automation speed with control.
Background jobs continuously check budget pacing, Quality Score drops, and anomalous spend, pushing alerts and triggering proactive Claude-driven recommendations rather than waiting for a scheduled check.
Every tool call, whether auto-executed or human-approved, is logged with the request, the reasoning Claude provided, the API response, and a timestamp — giving the marketing team a complete, reviewable history.
From reactive to proactive campaign management
The marketing team went from manually checking and adjusting campaigns multiple times a day to simply describing what they want in plain language — "pause anything over target CPA," "shift budget toward what's converting" — and letting the automation layer handle the mechanics, with full visibility and an approval step for anything consequential.
Because every action is logged with Claude's reasoning attached, the team also gained something they didn't have before: a clear, reviewable record of why every optimisation decision was made — useful for both internal reporting and ongoing tuning of the automation rules themselves.
Technology Used
Need an AI agent connected to a tool with no official integration?
If a platform you rely on doesn't have an MCP server, an API, or a CLI built for AI agents yet, we build the bridge ourselves — safely, with full auditability.
Discuss Your Automation Project