All Articles
Digital Marketing Tools

How to Connect Google Ads to Claude with MCP (Step-by-Step Guide)

Wire Google Ads into Claude with an MCP server: developer token, OAuth credentials, config examples, and the read-only rule every agency should follow.

You can wire Google Ads directly into Claude using MCP (Model Context Protocol), so instead of exporting CSVs and pasting screenshots, you just ask: “how did my campaigns do yesterday?” and get a real answer pulled live from the API. We run this exact setup at our agency for daily reporting across client accounts, and this guide covers every step: credentials, the MCP server, and the Claude config.

What You Need Before Starting

  • A Google Ads account (or an MCC manager account if you handle multiple clients)
  • A Google Ads API developer token, free, requested from your MCC
  • A Google Cloud project with OAuth credentials
  • Claude Desktop or Claude Code, both support MCP servers
  • Node.js or Python installed, depending on which MCP server you pick

Total setup time is around 45 to 60 minutes, and most of that is waiting on Google’s screens rather than anything difficult.

Step 1: Get Your Google Ads Developer Token

The developer token identifies your app to the Google Ads API. It lives at the manager account (MCC) level, not the individual account level.

  1. Sign in to your Google Ads manager account
  2. Go to Tools & Settings > Setup > API Center
  3. Fill in the token request form (company name, website, use case)
  4. Copy the token that appears, it looks like a 22-character string

New tokens start with Test Account access only. Apply for Basic access from the same API Center page. Basic access covers 15,000 operations a day, which is far more than any reporting workflow needs. Approval typically takes one to three business days.

Step 2: Create OAuth Credentials in Google Cloud

The API authenticates you with OAuth 2.0, so you need a client ID and secret.

  1. Open the Google Cloud Console and create a new project (call it anything, “ads-mcp” works)
  2. Go to APIs & Services > Library and enable the Google Ads API
  3. Go to APIs & Services > OAuth consent screen, choose External, fill in the app name and your email, and add yourself as a test user
  4. Go to Credentials > Create Credentials > OAuth client ID and pick Desktop app
  5. Download or copy the client ID and client secret

Step 3: Generate a Refresh Token

The refresh token is what lets the MCP server authenticate on your behalf without you logging in every session. The quickest way to mint one is a short helper script, and most Google Ads MCP servers ship one. The flow is always the same: the script opens a browser window, you sign in with the Google account that has access to your Ads accounts, approve the scope, and the script prints the refresh token to your terminal.

If your server doesn’t include a helper, Google’s own OAuth Playground guide walks through generating one manually with the scope https://www.googleapis.com/auth/adwords.

Store all four values somewhere safe. You now have: developer token, client ID, client secret, and refresh token.

Step 4: Install a Google Ads MCP Server

An MCP server is a small local program that translates Claude’s requests into Google Ads API calls. You have two realistic options:

Option A: Use an open-source server

Search GitHub for “google-ads-mcp” and you’ll find several maintained implementations in both Node and Python. Clone one, install its dependencies, and skip to step 5. This is the right choice for most people.

Option B: Build a thin server yourself

If you want control over exactly which queries are exposed, the MCP documentation has SDKs for TypeScript and Python. A reporting-only server needs just two tools: one that lists accessible accounts and one that runs a GAQL query. Ours is a single Node file of about 300 lines.

Step 5: Add the Server to Claude

For Claude Code, register the server from your terminal:

claude mcp add google-ads \
  --env GOOGLE_ADS_DEVELOPER_TOKEN=your_token \
  --env GOOGLE_ADS_CLIENT_ID=your_client_id \
  --env GOOGLE_ADS_CLIENT_SECRET=your_secret \
  --env GOOGLE_ADS_REFRESH_TOKEN=your_refresh_token \
  --env GOOGLE_ADS_LOGIN_CUSTOMER_ID=1234567890 \
  -- node /path/to/google-ads-mcp/server.js

For Claude Desktop, add the same thing to your config file (claude_desktop_config.json, found under Settings > Developer):

{
  "mcpServers": {
    "google-ads": {
      "command": "node",
      "args": ["/path/to/google-ads-mcp/server.js"],
      "env": {
        "GOOGLE_ADS_DEVELOPER_TOKEN": "your_token",
        "GOOGLE_ADS_CLIENT_ID": "your_client_id",
        "GOOGLE_ADS_CLIENT_SECRET": "your_secret",
        "GOOGLE_ADS_REFRESH_TOKEN": "your_refresh_token",
        "GOOGLE_ADS_LOGIN_CUSTOMER_ID": "1234567890"
      }
    }
  }
}

LOGIN_CUSTOMER_ID is your MCC ID without dashes. If you run a single account rather than a manager account, use that account’s ID instead.

Restart Claude Desktop (or start a new Claude Code session) and the server appears in the tools list.

Step 6: Test It

Ask Claude something simple first:

  • “List the Google Ads accounts you can access”
  • “What did account 123-456-7890 spend yesterday, by campaign?”
  • “Show me the top 20 search terms by cost this week”

Behind the scenes Claude writes GAQL (Google Ads Query Language) for you. A spend-by-campaign request becomes something like:

SELECT campaign.name, metrics.cost_micros, metrics.conversions
FROM campaign
WHERE segments.date DURING YESTERDAY
ORDER BY metrics.cost_micros DESC

You never need to write that yourself, which is the whole point. Claude handles the query language, the micros-to-currency conversion, and the formatting.

One Rule We Enforce: Keep It Read-Only

The Google Ads API can also mutate campaigns: change budgets, pause ads, add negatives. Our strong recommendation is to build or configure your MCP server for reporting only and make every change yourself inside the Ads interface. An AI that misreads “this campaign looks overspent” as an instruction can do real damage to a live account. At our studio the MCP server physically has no mutation tools, so analysis is automated and changes stay human.

What This Setup Is Actually Good For

  • Daily reports: spend, conversions, and cost per lead across every client account in one question
  • Search term reviews: pull a week of queries and have Claude flag negative keyword candidates
  • Budget pacing: month-to-date spend against target, per account
  • Anomaly checks: “did anything change dramatically vs last week?”
  • Client-ready summaries: turn raw metrics into plain-English performance notes

If you run ads for clients, this replaces the first hour of every morning. The same MCP approach works for other marketing stacks too, and it pairs naturally with the kind of SEO and digital marketing systems we build for growing businesses.

Frequently Asked Questions

Is the Google Ads API free to use?

Yes. The developer token and API access cost nothing. Basic access allows 15,000 operations per day, and a reporting workflow for a dozen accounts uses a small fraction of that.

Do I need a manager (MCC) account?

No, a single Ads account works fine. An MCC just lets one token and one refresh token cover every client account underneath it, which is why agencies set it up that way.

Which Claude plan supports MCP?

MCP servers run locally with Claude Desktop (free and paid plans) and Claude Code. The server runs on your machine, so your credentials never leave it.

Can Claude change my campaigns through this?

Only if your MCP server exposes mutation tools. Choose or build a read-only server and changes stay impossible by design, which is what we recommend for any live account.

Why am I getting a DEVELOPER_TOKEN_NOT_APPROVED error?

Your token is still at Test Account access level. Apply for Basic access in the API Center and wait for the approval email, then the same token starts working on production accounts.

Wrapping Up

Connect the four credentials to an MCP server, point Claude at it, and Google Ads reporting becomes a conversation. Set it up once, keep it read-only, and let the morning report write itself. If you’d rather have a team wire this into your marketing stack for you, talk to us.

Let's Talk Strategy

Let's Build Something That Performs.

Ready to grow? Tell us about your project. We'll get back to you with a roadmap within 24 hours.

Quick Contact

contact@bcreativestudios.org

Fast-response strategy line

No obligation. No sales spam. Just strategy.