Back to Blog
AutomationMar 5, 202616 min read

How to Automate Google Ads with Claude AI and MCP — Tools, Workflows, and Real Results

NT

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

Builder: Google (official)
Stars: ~257
Write ops: No — read-only
Setup time: 30–60 min
Tools: 2 (search, list_accessible_customers)
Auth: OAuth2 + Developer Token + GCP project

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

Builder: Community (Ernesto Cohnen)
Stars: ~362
Write ops: Via fork (mathiaschu adds 6 write tools)
Setup time: 20–40 min
Tools: 5 core + write fork
Auth: OAuth2 Client ID + Developer Token

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

Builder: TrueClicks
Stars: Growing
Write ops: No — read/analytics
Setup time: Under 2 min
Tools: GAQL query + account listing
Auth: Single token from GAQL.app

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

Builder: DigitalRocket
Stars: Growing
Write ops: Yes — full CRUD
Setup time: 45–90 min
Tools: 20+ including campaign creation, negative keywords, budgets
Auth: OAuth2 + Developer Token

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.

  1. Go to gaql.app and sign in with your Google account
  2. Authorize access to your Google Ads accounts
  3. Copy the API token GAQL.app generates
  4. Edit your Claude Desktop config file (~/Library/Application Support/Claude/claude_desktop_config.json on 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

  1. Apply for a Google Ads API developer token at Google Ads → Tools → API Center
  2. Create OAuth2 credentials in your Google Cloud Console (Desktop App type)
  3. Download the credentials.json file
  4. 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):

  1. Go to gaql.app — sign in with Google and grab your token (2 minutes)
  2. Install Claude Desktop if you haven't already
  3. Add the TrueClicks MCP config to claude_desktop_config.json (exact JSON above)
  4. Restart Claude Desktop and ask: "List all my Google Ads accounts"
  5. Run the morning audit workflow — you'll have results in 60 seconds

If you're a developer wanting full write access:

  1. Apply for a Google Ads API developer token (3–5 days for approval)
  2. While waiting, set up OAuth2 credentials in Google Cloud Console
  3. Clone and configure DigitalRocket-biz/google-ads-mcp-v20
  4. Test against a sandbox account before connecting to live campaigns
  5. 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:

NT

Written by Nikhil Tiwari

15+ years in product development. AI enthusiast building developer tools that make complex technologies accessible to everyone.