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.
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.
What You Need
| Requirement | Where it comes from |
|---|---|
| A manager account (MCC) | ads.google.com, free. Developer tokens only exist on manager accounts |
| A developer token | API Center inside the manager account |
| Token access above Test Account | An application Google reviews. Days, not minutes |
| OAuth client ID and secret | A Google Cloud project, desktop client type |
| A refresh token | Generated once as an admin of the MCC |
| Python and pipx | Your 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.
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?
Can the Google Ads MCP server change my campaigns?
Why does it say my developer token is only approved for test accounts?
Do I need a Google Ads manager account (MCC) for the MCP server?
What credentials does the Google Ads MCP server need?
Does the refresh token expire?
Can I use an old Google Cloud project for this?
Does this work with Claude on the web?
Do I need to know GAQL to use it?
Is it safe to connect my ad account to an AI model?
Get new posts in your inbox
Occasional notes on Shopify, paid ads, and what I learn. No spam.
Thanks — check your inbox to confirm.
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.