How to Automate Google Ads with Claude AI and MCP — Tools, Workflows, and Real Results
Nikhil Tiwari
MCP Playground
📖 TL;DR — Key Takeaways
- Google now maintains an official MCP server (
googleads/google-ads-mcp) — plus three strong community alternatives with write capabilities - Claude can query campaigns, ad groups, keywords, search terms, and budgets using natural language translated to GAQL
- The easiest zero-credential setup is via TrueClicks/GAQL.app — connected in under 2 minutes
- For full write operations (pause campaigns, add negatives, update bids), use DigitalRocket google-ads-mcp-v20
- The five workflows below cover the most common PPC time-sinks: audits, negatives, budget reallocation, ad copy, and keyword discovery
Managing Google Ads manually in 2026 feels like navigating by paper map. The data is there — campaigns, search terms, Quality Scores, ROAS by ad group — but accessing it means logging into the dashboard, pulling reports, exporting CSVs, and staring at pivot tables before you can act on anything.
By the time you finish that process, the budget you should have paused has already wasted another $400.
Google Ads MCP changes the loop. It connects Claude directly to your live campaign data through the Model Context Protocol, so instead of exporting and analyzing, you have a conversation. Ask what is burning money. Ask which keywords are dragging down Quality Score. Ask where to move budget. Claude pulls the live data and answers in seconds — and with the right server, it can act on it too.
This guide covers every Google Ads MCP server option available, how to pick the right one for your situation, and five concrete workflows you can run today.
What Is the Google Ads MCP Server?
The Google Ads MCP server is an implementation of the Model Context Protocol — the open standard that lets AI models like Claude connect to external tools and data sources with live, authenticated access.
Instead of Claude reasoning about your campaigns from a pasted screenshot or a CSV dump, it has a direct connection to the Google Ads API. When you ask a question, Claude translates it into a GAQL (Google Ads Query Language) query, executes it against your live account, and returns structured analysis — all in the same conversation.
Google officially released its own MCP server in October 2025 under the googleads GitHub organization. But the ecosystem around it has grown fast. There are now four distinct server options, each with different trade-offs on setup complexity, read/write capability, and authentication overhead.
Understanding which server to use is the first decision — because the wrong choice either leaves you with read-only access when you need write ops, or adds an hour of Google Cloud setup when you just want to ask a quick question about campaign performance.
The Four Server Options Compared
Here are the four Google Ads MCP servers worth knowing, mapped to the right use case:
1. Official Google Server — googleads/google-ads-mcp
search, list_accessible_customers)The canonical, Google-maintained implementation. Minimal surface area by design — two tools that let Claude execute arbitrary GAQL queries and enumerate accessible accounts. Read-only by intent. Best for teams who need auditability and want to run on their own infrastructure with full control over what data the model can access.
Best for: Enterprise teams with existing Google Ads API credentials who want the official implementation.
2. Community Server — cohnen/mcp-google-ads
The most-starred community implementation. Richer default toolset than the official server: list_accounts, execute_gaql_query, get_campaign_performance, get_ad_performance, and run_gaql. A fork by mathiaschu adds six write operations. Node.js based, well-documented, works with Claude Desktop, Cursor, and Windsurf.
Best for: Developers who want a richer tool surface than the official server without full CRUD complexity.
3. Zero-Credential Setup — TrueClicks/google-ads-mcp-js
The standout option for non-technical users. Instead of OAuth credentials, a Google Cloud project, and a developer token, you log into GAQL.app with your Google account, grab a single token, and paste it into Claude Desktop config. GAQL.app handles all authentication behind the scenes. No terminal needed beyond editing one JSON file.
Best for: PPC managers and marketers who want analytics access without any API setup overhead.
4. Full Write Access — DigitalRocket-biz/google-ads-mcp-v20
The most capable server for teams who want Claude to act, not just analyze. Implements Google Ads API v20 with full read+write: create_campaign, add_negative_keywords (including Performance Max), create_budget, run_gaql_query, get_campaign_performance, change history tracking, and experiments management. Automatic retry logic and OAuth token auto-refresh built in.
Best for: PPC teams who want Claude to execute optimizations, not just surface them.
| Server | Write Ops | Setup Difficulty | Best For |
|---|---|---|---|
googleads/google-ads-mcp |
❌ Read-only | 🟡 Medium | Enterprise / auditability |
cohnen/mcp-google-ads |
⚠️ Via fork | 🟡 Medium | Developers wanting richer tools |
TrueClicks/google-ads-mcp-js |
❌ Read-only | 🟢 Very easy | PPC managers, non-technical users |
DigitalRocket google-ads-mcp-v20 |
✅ Full CRUD | 🔴 Advanced | Teams wanting Claude to act, not just analyze |
Setup: Three Paths to Connection
Path 1 — Easiest (GAQL.app, 2 minutes)
This uses the TrueClicks server. No Google Cloud project, no developer token application, no OAuth2 flow.
- Go to gaql.app and sign in with your Google account
- Authorize access to your Google Ads accounts
- Copy the API token GAQL.app generates
- Edit your Claude Desktop config file (
~/Library/Application Support/Claude/claude_desktop_config.jsonon Mac) and add:
{
"mcpServers": {
"google-ads": {
"command": "npx",
"args": ["-y", "google-ads-mcp-js"],
"env": {
"GAQL_TOKEN": "your_gaql_app_token_here"
}
}
}
}
Restart Claude Desktop. That's it.
Path 2 — Official Google Server (30–60 minutes)
Prerequisites: Python 3.9+, pipx, active Google Ads account, Google Cloud project
- Apply for a Google Ads API developer token at Google Ads → Tools → API Center
- Create OAuth2 credentials in your Google Cloud Console (Desktop App type)
- Download the
credentials.jsonfile - Add to your Claude Desktop config:
{
"mcpServers": {
"google-ads-mcp": {
"command": "pipx",
"args": [
"run", "--spec",
"git+https://github.com/googleads/google-ads-mcp.git",
"google-ads-mcp"
],
"env": {
"GOOGLE_APPLICATION_CREDENTIALS": "/path/to/credentials.json",
"GOOGLE_PROJECT_ID": "your-gcp-project-id",
"GOOGLE_ADS_DEVELOPER_TOKEN": "your-22-char-developer-token"
}
}
}
}
Path 3 — Full Write Access (DigitalRocket v20, 45–90 minutes)
Prerequisites: Node.js 18+, Google Ads API developer token, OAuth2 credentials
git clone https://github.com/DigitalRocket-biz/google-ads-mcp-v20
cd google-ads-mcp-v20
npm install
# Set up your .env file
cp .env.example .env
# Edit .env with your Google Ads credentials
# Add to Claude Desktop config
{
"mcpServers": {
"google-ads-v20": {
"command": "node",
"args": ["/path/to/google-ads-mcp-v20/index.js"],
"env": {
"GOOGLE_ADS_DEVELOPER_TOKEN": "your_developer_token",
"GOOGLE_ADS_CLIENT_ID": "your_oauth_client_id",
"GOOGLE_ADS_CLIENT_SECRET": "your_oauth_client_secret",
"GOOGLE_ADS_REFRESH_TOKEN": "your_refresh_token"
}
}
}
}
⚠️ Before connecting to production accounts
Always test write-capable servers against a test account first. The Google Ads API Sandbox environment at googleads.googleapis.com/sandbox is designed for exactly this. Write operations cannot be undone through the API — a misfired campaign creation or budget change is real money.
💡 Want to explore before committing?
Go to MCP Playground Online to connect any MCP server URL in your browser and inspect its tools without any local installation. You can see exactly what queries the Google Ads MCP servers expose before setting anything up.
What Claude Can Actually Query
All four servers use GAQL — Google Ads Query Language — as the underlying data access mechanism. GAQL is SQL-like: you select fields from resources, filter by conditions, and order results. Claude handles the GAQL generation transparently; you just ask questions in natural language.
Here is the range of data Claude can access across your Google Ads account:
📊 Campaign Metrics
Clicks, impressions, CTR, CPC, conversions, conversion rate, ROAS, cost — by campaign, ad group, or ad
🔍 Search Terms
Every query that triggered your ads, with metrics — the raw material for negative keyword discovery
📝 Ad Performance
Headline/description performance, Quality Score, Ad Strength, approval status — per ad and per asset
🎯 Keywords
Keyword text, match type, Quality Score, first-page bid estimates, search volume, competitive data
💰 Budgets
Daily budget amounts, budget utilization, limited-by-budget signals, shared budget allocations
📅 Time-Series Data
LAST_7_DAYS, LAST_30_DAYS, LAST_MONTH, THIS_WEEK, custom date ranges — for trend analysis
Example GAQL queries Claude generates under the hood:
-- Campaign performance last 7 days
SELECT campaign.name, metrics.clicks, metrics.impressions,
metrics.conversions, metrics.cost_micros, metrics.ctr
FROM campaign
WHERE segments.date DURING LAST_7_DAYS
ORDER BY metrics.cost_micros DESC
-- Search terms with spend and no conversions
SELECT search_term_view.search_term, metrics.clicks,
metrics.cost_micros, metrics.conversions
FROM search_term_view
WHERE metrics.conversions = 0
AND metrics.cost_micros > 5000000
AND segments.date DURING LAST_30_DAYS
-- Keywords by Quality Score
SELECT ad_group_criterion.keyword.text, ad_group_criterion.quality_info.quality_score,
metrics.impressions, metrics.average_cpc
FROM keyword_view
WHERE ad_group_criterion.quality_info.quality_score < 5
AND segments.date DURING LAST_7_DAYS
ORDER BY metrics.impressions DESC
Workflow 1: Morning Campaign Audit (What Used to Take 90 Minutes)
The classic PPC morning routine: check every campaign's performance, spot anything that has shifted overnight, flag budget issues, identify winners to scale. The manual version involves navigating four tabs in Google Ads, cross-referencing date ranges, and maintaining a mental model of what "normal" looks like for each campaign.
With Claude connected to live Google Ads data:
You:
"Give me a full performance summary across all active campaigns for the last 7 days. Flag anything with ROAS below 2.0, CPA above target, or campaigns that are budget-limited. Also show me any ad groups where impressions dropped more than 20% versus the prior week."
Claude: [Pulls live data via GAQL — campaigns, metrics, budget status, week-over-week comparison]
"Here's your 7-day summary across 11 active campaigns:
🔴 NEEDS ATTENTION:
— 'Brand Competitors — Exact' — CPA $84 (target: $45), ROAS 1.6. Bid strategy showing erratic behavior. Recommend reviewing automated bidding signals or switching to manual CPC temporarily.
— 'RLSA — Cart Abandoners' — Budget limited 6/7 days. Spending $180/day of $180 cap. Missed ~340 eligible impressions/day. Raise budget or accept the cap.
🟡 MONITOR:
— 'Non-brand — BMM Broad' — Impressions down 31% week-over-week. No budget or bid changes detected. Possible auction dynamics shift or quality score degradation. Check search term report.
✅ PERFORMING WELL:
— 'Non-brand — Exact Match Core' — ROAS 4.8, CPA $31 (target: $45). Below daily budget by 40%. Budget increase candidate.
— 'Dynamic Search — All Pages' — Stable CPA, 12% conversion rate increase vs prior week. No action needed."
Time: 35 seconds. The same audit that previously took 60–90 minutes of tab-switching and spreadsheet work.
Workflow 2: Negative Keyword Discovery — Before the Budget Burns
Search term reports are one of the highest-leverage activities in PPC management. A single poorly matched keyword can quietly drain thousands of dollars a month — but finding it requires pulling the search term report, manually scanning hundreds of rows, and cross-referencing against your existing negative lists.
Claude can do this analysis in seconds, and with the v20 server, it can add the negatives automatically with your approval.
You:
"Pull the search terms report for the last 30 days across all non-brand campaigns. Find every query that spent more than $20 with zero conversions, and group them by intent category — informational, competitor, job-seeker, anything that clearly won't convert for a B2B SaaS product. Show me the top 20 by wasted spend."
Claude: [Executes GAQL search_term_view query, groups by intent pattern, ranks by cost_micros]
"Top 20 non-converting search terms by wasted spend (30 days):
Job-seeker intent ($847 wasted):
— 'project management jobs' — $312, 0 conv
— 'project manager salary' — $198, 0 conv
— 'project management certification' — $337, 0 conv
Informational / Free tool intent ($634 wasted):
— 'free project management template' — $201, 0 conv
— 'project management excel template' — $156, 0 conv
— 'project management tutorial' — $277, 0 conv
Competitor brand ($512 wasted):
— 'asana free plan' — $189, 0 conv
— 'trello alternatives free' — $323, 0 conv
Total identifiable waste: $1,993/month
Recommended negative keyword list (campaign-level): jobs, salary, certification, free template, tutorial, excel, asana free, trello free.
Shall I add these as campaign-level negatives to all non-brand campaigns?"
With a read-only server, you take the list and add the negatives manually. With the v20 write server, one confirmation adds them all via add_negative_keywords.
Workflow 3: Budget Reallocation Based on Live ROAS
Most Google Ads accounts have the same problem: budgets set months ago based on guesswork or even-split logic, running unchanged while performance has shifted dramatically underneath them. Some campaigns are starving for budget while delivering 5x ROAS. Others are consuming their full cap and delivering 1.2x.
Claude can surface the reallocation math in seconds.
You:
"I have $4,500/day total budget across 8 campaigns. Pull last 30-day ROAS and budget utilization for each. Recommend a reallocation that maximizes total ROAS without increasing total daily spend, and show me the current vs recommended budget for each campaign."
Claude: [Queries campaigns, metrics.cost_micros, metrics.conversions_value, budget data over LAST_30_DAYS]
"Current state vs recommended reallocation:
| Campaign | 30-Day ROAS | Budget Limited? | Current | Recommended | Reasoning |
|---|---|---|---|---|---|
| Non-brand Exact Core | 5.1x | Yes (daily) | $600 | $900 | Highest ROAS + constrained |
| RLSA Cart Abandoners | 4.4x | Yes (daily) | $400 | $600 | Strong ROAS, constrained |
| Brand — Exact | 3.8x | No | $500 | $500 | Stable — maintain |
| Broad Match Prospecting | 1.4x | No | $800 | $400 | Persistent underperformer |
| Competitor Conquesting | 1.1x | No | $700 | $300 | Consider pausing or restructuring |
Same $4,500 total budget. An estimated 28–35% improvement in blended ROAS from reallocation alone — no new creative, no new audiences, no A/B tests.
Workflow 4: Quality Score Triage
Quality Score is one of the most impactful — and most neglected — levers in Google Ads. A keyword with QS 3 pays 64% more per click than the same keyword at QS 7 for the same ad position. Most accounts have a long tail of low-QS keywords silently inflating CPC across the board.
You:
"Find all keywords in active ad groups with Quality Score below 5 and at least 200 impressions in the last 30 days. For each one, show the QS component scores (expected CTR, ad relevance, landing page experience) and identify the most likely root cause."
Claude: [GAQL query on keyword_view joining quality_info fields]
"Found 14 keywords with QS < 5 and significant impression volume. Here are the top 5 by cost impact:
'project management software for teams' — QS 3
Expected CTR: Below average | Ad relevance: Below average | Landing page: Average
Root cause: The ad headline doesn't contain this keyword and the landing page copy emphasizes 'work management' not 'project management software'. This is a relevance mismatch, not a landing page problem. Fix: add a responsive search ad headline that mirrors the keyword exactly.
'task tracking tool' — QS 4
Expected CTR: Average | Ad relevance: Below average | Landing page: Below average
Root cause: Landing page has almost no mentions of 'task tracking' — the page is optimized for 'project management'. Consider creating a dedicated landing page or sending this keyword to a page that addresses task tracking specifically."
This workflow turns a 3-hour QS audit into a 90-second prioritized action list. Every keyword gets a diagnosis, not just a score.
Workflow 5: Keyword Opportunity Mining
Beyond managing what already exists, Claude can help you find what you are missing — keywords your competitors might be bidding on that you are not, or high-performing search terms that should be promoted to exact match keywords.
You:
"Look at my search terms report for the last 60 days. Find queries that triggered ads via broad or phrase match, have 3+ conversions, a CPA under $40, and are not already added as exact match keywords. These are candidates to promote to exact match."
Claude: [Queries search_term_view, cross-references against keyword_view for exact match duplicates]
"Found 11 search terms worth promoting to exact match. Top 5 by conversion volume:
— 'project management tool for remote teams' — 8 conv, CPA $28, $224 spend. Not in account as exact match.
— 'team task management app' — 6 conv, CPA $31. Partially covered by 'task management app [phrase]' but the 'team' qualifier is adding conversion intent — worth isolating.
— 'agile project management software small business' — 5 conv, CPA $37. Long-tail with clear commercial intent. Create as exact match with dedicated ad.
Total projected savings if isolated as exact match: 15–22% CPA reduction on these terms by reducing wasted broad match spend on low-intent variants."
What Claude Cannot Do (Be Realistic)
The integration is powerful, but the constraints matter — particularly if you're evaluating whether to use a read-only or write-capable server.
❌ Cannot see attribution truth
Google Ads data reflects Google's attribution model. Cross-channel attribution, view-through conversions, and assisted conversions require a separate analytics source (GA4 MCP, etc.).
❌ Cannot access Performance Max internals
PMax campaigns hide asset-level and placement-level data. Claude can see overall PMax performance metrics but not the granular creative or placement breakdown.
❌ Cannot guarantee ROAS improvements
Claude surfaces optimization opportunities — but campaign performance ultimately depends on offer quality, landing page conversion rate, and market conditions.
❌ Cannot access competitive intelligence
Auction insights and impression share data is available through GAQL, but competitor ad copy, landing pages, and bid strategies are not accessible via the API.
❌ Official server is read-only
Google's own MCP server intentionally has no write operations. For negative keywords, campaign pausing, or budget changes, you need the community write servers.
❌ Developer token approval takes days
Getting a Google Ads API developer token requires submitting your use case for review. Plan for 3–5 business days. The TrueClicks/GAQL.app path bypasses this entirely.
The right mental model: Claude is a senior analyst who works at AI speed and never sleeps — but you are still the account strategist. The best results come from using Claude to surface what deserves your attention, then applying judgment on whether and how to act.
Combining Google Ads MCP with Other Servers
The real compound value comes from chaining Google Ads MCP with other data sources in the same Claude session.
📊 Full-Funnel Performance View
Google Ads MCP + GA4 MCP + Stripe MCP
→ Claude sees ad spend, on-site behavior, and revenue in one view
→ Calculates true LTV-adjusted ROAS, not just last-click conversion value
📢 Performance Alert → Team Notification
Google Ads MCP + Slack MCP
→ Claude detects a campaign with CPA spiking above 2x target
→ Posts alert to #paid-search Slack channel with campaign name, metric, and recommended action
→ Zero human monitoring required
📋 Weekly Reporting — Automated
Google Ads MCP + Google Sheets MCP
→ Claude pulls 7-day data across all campaigns every Monday morning
→ Formats into your standard client reporting template in Google Sheets
→ What took 3 hours now takes 4 minutes
🔀 Cross-Platform Budget Command Center
Google Ads MCP + Meta Ads MCP
→ Claude sees ROAS across both platforms in one view
→ Recommends budget shifts not just within Google, but between Google and Meta
→ Total media mix optimization from a single conversation
Getting Started Today
If you're a PPC manager (non-technical):
- Go to gaql.app — sign in with Google and grab your token (2 minutes)
- Install Claude Desktop if you haven't already
- Add the TrueClicks MCP config to
claude_desktop_config.json(exact JSON above) - Restart Claude Desktop and ask: "List all my Google Ads accounts"
- Run the morning audit workflow — you'll have results in 60 seconds
If you're a developer wanting full write access:
- Apply for a Google Ads API developer token (3–5 days for approval)
- While waiting, set up OAuth2 credentials in Google Cloud Console
- Clone and configure
DigitalRocket-biz/google-ads-mcp-v20 - Test against a sandbox account before connecting to live campaigns
- Run the negative keyword workflow — then let Claude add them with one approval
If you want to explore MCP before committing to a setup:
Go to MCP Playground Online — connect any MCP server URL in your browser to inspect its tools and run test queries before installing anything locally. You can see exactly what Google Ads GAQL queries are available and what the response format looks like.
The Bigger Picture
What's happening with Google Ads and MCP mirrors a broader shift in how performance marketing operates.
The Google Ads API has existed since 2007. The data has always been there. But accessing it required engineering resources, custom scripts, or expensive third-party tools that turned raw signals into dashboards — and dashboards into PDFs that someone had to read and act on.
MCP removes the abstraction. The raw signal goes directly into Claude's context window — with the ability to not just analyze it, but act on it through write-capable servers. The feedback loop between performance data and campaign decisions, which used to take days, now takes seconds.
For individual PPC managers, this is a 10x force multiplier on analytical bandwidth. For agencies managing multiple accounts, it's the difference between drowning in reporting and actually doing strategy. For in-house teams, it means the person who spent Monday morning building the weekly performance deck can now spend Monday morning doing something that actually requires human judgment.
The infrastructure exists. The servers are live. The only question is when you connect them.
The Google Ads MCP servers referenced are unofficial community tools and are not affiliated with or endorsed by Google LLC. Always test integrations against a sandbox or test account before connecting to live ad campaigns with real budgets.
Resources:
- googleads/google-ads-mcp — Official Google MCP server
- cohnen/mcp-google-ads — Community server with richer tools
- TrueClicks/google-ads-mcp-js — Zero-credential setup via GAQL.app
- DigitalRocket google-ads-mcp-v20 — Full write access, v20 API
- Google Ads API MCP Documentation — Official developer guide
- MCP Playground Online — Explore MCP servers in your browser
- Google Ads Developer Blog — Official MCP server announcement
Written by Nikhil Tiwari
15+ years in product development. AI enthusiast building developer tools that make complex technologies accessible to everyone.
Related Resources