All Case Studies
AI AutomationMarketing OpsCustom Integration

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.

💬
Marketing
Request
🧠
Claude +
Custom Bridge
📊
Ads Platform
API
No official MCPNo official CLICustom Integration Built
92%
Reduction in manual bid-management time
< 5min
Reaction time to budget pacing issues
31%
Cut in wasted spend on underperformers
100%
Actions logged with a full audit trail
The Challenge

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.

The Gap
Google Ads — Official MCP Server
Google Ads — Official CLI Tool
Native Claude Tool-Use Support

Every Google Ads action had to be done manually in-platform — no agent-callable interface existed.

System Architecture
Claude (Tool Use / Function Calling)
Custom MCP-Style Bridge Service
Auth · Rate Limiting · Audit Log · Guardrails
Google Ads API (REST)
Our Approach

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.

How It Works

From a plain-language request to a logged, auditable action

Live — Ads Automation Agent
Pause any ad group with CPA over $50 in the Q3 campaign
Found 4 ad groups over threshold. Pausing 3 — flagging 1 for review (high CPA but rising conversion rate).
✓ Done. Audit log entry #4821 created. Estimated daily spend saved: $186.
Campaign Dashboard
4.8x
ROAS
$1,240
Spend Today
12
Auto-Actions
Safety & Approval Layer
Increase budget — Brand Search +$300/dayapproved
Pause Display campaign — low CTRapproved
Reallocate $500 from Display to Searchpending

Budget-impacting actions above a configurable threshold require explicit sign-off before execution.

Real-Time Alerts
⚠️
Budget pacing 18% ahead of schedule — Campaign: Holiday Promo
2m ago
🤖
Auto-paused 2 keywords with Quality Score < 3
14m ago
📈
Conversion rate up 22% after bid strategy switch
1h ago
Implementation

How we built it

1
Mapped the Google Ads API to agent-callable tools

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.

2
Built the middleware bridge service

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.

3
Added safety guardrails and an approval queue

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.

4
Wired up real-time monitoring and alerts

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.

5
Full audit logging for every action

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.

The Results

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.

Before vs After
Hours/week on manual bid management
6.5 hrs0.5 hrs
Time to react to budget pacing issues
1–2 days< 5 min
Wasted spend on underperforming ad groups
HighDown 31%

Technology Used

Claude API (Tool Use)
Node.js Middleware
Google Ads API
PostgreSQL Audit Log
OAuth 2.0
Webhook Alerts
AWS

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