How to Connect Google Ads to Claude with the Official MCP Server

Google ships an official read-only MCP server for the Ads API, which means you can ask your account questions in plain English: where Performance Max spent, which campaigns got more expensive without getting better, what changed this week. The software takes under an hour. The developer token approval takes days, and nothing in the error message tells you that. Do it in the order below.

I run a production Google Ads account day to day, and a meaningful share of that is pulling the same reports in different shapes. Connecting the account to Claude through MCP replaced a lot of it with typed questions.

But the setup has a trap in it that every guide undersells, so this post is ordered around the trap.

⏳
Do this first, today: a new developer token cannot query production accounts until Google approves an access upgrade, and that review takes anywhere from hours to days. Apply before you install anything, and set the rest up while you wait. The software is an hour. The wait is the timeline.

What You’re Setting Up

MCP, the Model Context Protocol, lets an AI assistant call tools in outside systems. Google’s official server at googleads/google-ads-mcp exposes the Ads API as tools, and queries run through GAQL, the Ads query language, which the model writes for you.

It runs locally, on your machine, under your own credentials. No third party hosts it, and nothing leaves except what the model reads.

🔒
And it is read only. It cannot pause a campaign, change a budget, or touch a creative. That is why connecting a production account is a reasonable thing to do at all. If you want a model acting on your account, that is a different build with different guardrails, and I would think hard before granting it.

What You Need

RequirementWhere it comes from
A manager account (MCC)ads.google.com, free. Developer tokens only exist on manager accounts
A developer tokenAPI Center inside the manager account
Token access above Test AccountAn application Google reviews. Days, not minutes
OAuth client ID and secretA Google Cloud project, desktop client type
A refresh tokenGenerated once as an admin of the MCC
Python and pipxYour machine

The Developer Token Problem

This deserves its own section because the error message is actively unhelpful.

A brand new developer token starts at Test Account access level. It can query Google’s test accounts and nothing else. Point it at your real account and you get:

“The developer token is only approved for use with test accounts.”

What it doesn’t say: the fix is an application form, not a code change. In the API Center of your manager account, you apply for Explorer or Basic access, Google reviews it, and until the review completes there is nothing to debug on your side. People lose days here assuming they misconfigured something.

One more rule from Google’s own docs that bites people with old projects: a Cloud project can be associated with one developer token, permanently. If your project was tied to a different token years ago, it will fail in confusing ways. Use a fresh project.

The Setup

1. Get the token and apply for access. In your manager account: Tools and Settings, then API Center. Copy the developer token. Apply for the access upgrade. Do this before anything else.

2. Create OAuth credentials. In a Google Cloud project, create an OAuth client ID of the desktop type. Note the client ID and secret.

3. Generate a refresh token once, signed in as an admin of the manager account, using Google’s OAuth helper for the Ads API. Save it somewhere safe. It does not expire from normal use.

4. Register the server with your client. For Claude Code:

claude mcp add google-ads \
  -e GOOGLE_ADS_DEVELOPER_TOKEN=your-token \
  -e GOOGLE_ADS_CLIENT_ID=your-client-id \
  -e GOOGLE_ADS_CLIENT_SECRET=your-secret \
  -e GOOGLE_ADS_REFRESH_TOKEN=your-refresh-token \
  -e GOOGLE_ADS_LOGIN_CUSTOMER_ID=1234567890 \
  -- pipx run --spec git+https://github.com/googleads/google-ads-mcp.git google-ads-mcp

The login customer ID is your manager account ID, digits only, no dashes.

5. Verify. Run claude mcp list, confirm the server shows as connected, then ask it to list the accounts it can see under the MCC. If you get the test-accounts error here, your access upgrade hasn’t been approved yet. Wait, don’t debug.

🔑
Treat the developer token like a password. It is an org-level credential, not a per-user one. Keep it out of version control. And note that the OAuth scope it uses is broad: the read-only behaviour comes from the server's tool surface, not from the scope itself.

What to Actually Ask It

Connection is the boring part. The value is in questions that used to mean exports.

The drift questions. “Which campaigns had rising cost per conversion over the last eight weeks while conversion volume stayed flat?” The model writes the GAQL, runs it, summarizes. I previously built a whole Sheets automation for this kind of monitoring on the Meta side. The MCP route gets you an ad-hoc version for free.

The Performance Max questions. PMax reporting is deliberately coarse in the UI, and the API exposes more than the interface does. Asking for spend and conversions by channel breakdown stops requiring you to learn GAQL yourself. If you run PMax, pair this with my Performance Max practices.

The lazy-but-honest daily one. “What changed in my account this week?” costs one sentence and is a surprisingly good habit.

And the spot-check rule: verify the first week of answers against the UI the way you’d check a new analyst’s work. The model will query a wrong date range or the wrong conversion action if you’re vague. After a week you’ll know where it’s reliable.

The Real Value Is the Second Server

Google also ships an official MCP server for GA4, and the setup is much lighter, about fifteen minutes. With both connected in one conversation, you get the questions neither system answers alone: “Pull last month’s conversions by campaign from Ads, pull the same period’s purchase events from GA4, show me where they disagree most.”

Ads and Analytics have never agreed on conversion counts and never will, and that gap is where budgets quietly die. Being able to interrogate it in one question is the single best reason to do this setup. I’ve written about the KPIs worth trusting for exactly this reason.

GA4 walkthrough here: connecting Google Analytics to Claude with the official MCP server


I’m Nikhil Sharma. I run data and operations engineering for a DTC brand and write about the systems underneath ecommerce. If you want help wiring your ad accounts into something your team can actually query, book a consultation.

Frequently asked questions

Is there an official Google Ads MCP server?
Yes, at googleads/google-ads-mcp on GitHub. It is read only and queries your account through GAQL, the Google Ads Query Language. It cannot create, edit, or pause anything.
Can the Google Ads MCP server change my campaigns?
No. It is read only by design. It builds queries and reads results. Budgets, statuses, bids, and creatives are untouchable through it.
Why does it say my developer token is only approved for test accounts?
A new developer token starts at Test Account access and cannot query production accounts. You apply for the next access level in the API Center of your manager account, and Google reviews the application, which can take days. The error message does not mention any of this.
Do I need a Google Ads manager account (MCC) for the MCP server?
Yes. Developer tokens only exist on manager accounts. If you run a single Ads account with no MCC, create a manager account first, link your account under it, and request the token there.
What credentials does the Google Ads MCP server need?
Five things: the developer token, an OAuth client ID and secret from a Google Cloud project, a refresh token generated once as an admin of the manager account, and your manager account ID as the login customer ID.
Does the refresh token expire?
Not from normal use. Generate it once as an admin of the MCC, store it safely, and it keeps working. It can be invalidated by password changes or revocation, in which case you generate a new one.
Can I use an old Google Cloud project for this?
Only if it has never been tied to a different developer token. Google allows one developer token per project, permanently. If your project was associated with another token years ago, start a fresh project.
Does this work with Claude on the web?
Not directly. The server runs locally, so you need Claude Desktop, Claude Code, Cursor, or Gemini CLI. Hosted wrappers exist if you need browser access, at the cost of your tokens living with the host.
Do I need to know GAQL to use it?
No, and that is most of the point. You ask in plain English, the model writes the GAQL, runs it, and summarizes. Knowing a little GAQL helps you sanity-check unusual results, but it is not required.
Is it safe to connect my ad account to an AI model?
The server runs locally under your own credentials and is read only, so the risk is data exposure rather than account damage. The developer token is an org-level credential: keep it out of version control and treat it like a password.
Nikhil Sharma

Nikhil Sharma

I'm Nikhil Sharma. I write about Shopify, paid ads, email, and the systems I build for the DTC brands I work with.