How to connect Claude to Google Ads with Google's MCP server
A step-by-step setup of Google's read-only Google Ads MCP server for Claude Desktop and Claude Code, the GAQL questions worth asking about your search campaigns, and what it cannot change.
Short answer: you connect Claude to Google Ads through the Google Ads MCP server, an open-source server that Google publishes on GitHub. You need a Google Cloud project with Google Ads API access, a set of credentials on your computer, and a few lines of config in Claude Desktop or one claude mcp add command in Claude Code. In its current release the server is read-only: Claude can pull campaign data and answer questions about it, but it cannot pause a campaign or change a bid (Google for Developers, updated October 2026).
This guide covers the local, do-it-yourself route. If you have used the Google Cloud console before, it takes one sitting. It ends with the questions worth asking if you run search campaigns.
What does the Google Ads MCP server give Claude?
It gives Claude three tools and a query language. Claude decides when to call a tool, the server runs the request against the Google Ads API on your behalf, and the rows come back into the chat.
| Key fact | Value, per Google's guide |
|---|---|
| Mode | Read-only (current release) |
| Language | Python |
| Transport | stdio on your computer, or streamable HTTP on Cloud Run |
| Sign-in | OAuth 2.0 or a service account |
| Repository | github.com/googleads/google-ads-mcp, Apache-2.0 |
The three tools Claude can call
| Tool | What it does |
|---|---|
list_accessible_customers |
Lists the Google Ads account IDs and names your login can reach |
search |
Runs a GAQL query for metrics, budgets and status |
get_resource_metadata |
Describes a resource, such as campaign, and the fields you can query on it |
GAQL is the Google Ads Query Language, a SQL-like syntax (SELECT ... FROM campaign WHERE ...). You never have to write it: Claude writes the query, calls search, and reads the answer back to you. Claude uses get_resource_metadata to check a field name instead of guessing it.
What changed in September 2026
Older guides tell you to request a developer token first. Google sunset developer tokens on September 9, 2026. API access levels now belong to the Google Cloud project, and the latest version of the MCP server no longer needs a token (Google for Developers, 2026). The GitHub README still lists GOOGLE_ADS_DEVELOPER_TOKEN in one of its examples, so if a tutorial asks for a token, follow Google's guide instead.
Our articles are still written by HUMANS! Get human written articles in your Google feed.
Add as preferred sourceWhat do you need before you connect Claude to Google Ads?
You need four things: a Google Cloud project, the right API access level on it, credentials on your computer, and pipx to run the server.
A Google Cloud project with the right access level
Create a project in the Google Cloud console and enable the Google Ads API on it. Enabling the API gives the project Test access, which only works against test accounts. To read your real account, apply for Explorer access on the Google Ads API Overview page in the console ("Upgrade access level", then "Apply for access").
| Access level | Production accounts | Operations per day |
|---|---|---|
| Test | No | 15,000 on test accounts |
| Explorer | Yes | 2,880 on production |
| Basic | Yes, after brand verification | 15,000 |
| Standard | Yes, after a manual review | No daily cap |
Source: Google Ads API access levels, Google for Developers (October 2026).
For one marketer asking Claude questions, Explorer is usually enough: each query Claude runs counts as an operation, and 2,880 a day leaves plenty of room for a working session.
Credentials on your computer
The simplest route is Application Default Credentials (ADC). Create an OAuth client in the Cloud console, download its JSON file, then run the command from the README with the Google Ads scope:
gcloud auth application-default login \
--scopes https://www.googleapis.com/auth/adwords,https://www.googleapis.com/auth/cloud-platform \
--client-id-file=YOUR_CLIENT_JSON_FILE
A browser opens, you sign in with the Google account that can see your ads, and gcloud prints "Credentials saved to file" with a path. Copy that path. If you reach your client accounts through a manager (MCC) account, also note the manager's ID for GOOGLE_ADS_LOGIN_CUSTOMER_ID.
How do you add the Google Ads MCP server to Claude?
Claude Desktop reads a JSON file. Claude Code takes one terminal command. Both start the same Python server on your machine through pipx.
Claude Desktop: the JSON config
Open Claude Desktop, then Settings, Developer, Edit Config. That opens claude_desktop_config.json (on a Mac it lives in ~/Library/Application Support/Claude/). Add the server from Google's guide:
{
"mcpServers": {
"google-ads-mcp": {
"command": "pipx",
"args": [
"run",
"--spec",
"git+https://github.com/googleads/google-ads-mcp.git",
"google-ads-mcp"
],
"env": {
"GOOGLE_PROJECT_ID": "YOUR_PROJECT_ID",
"GOOGLE_APPLICATION_CREDENTIALS": "/path/to/credentials.json"
}
}
}
}
Save, quit Claude Desktop completely and open it again (Model Context Protocol docs). The server shows up under Connectors in the chat box menu. If it does not, the logs for each server are in ~/Library/Logs/Claude on a Mac.
Claude Code: one command
In Claude Code, add it as a local stdio server. The -- splits Claude's own options from the command that runs the server (Claude Code docs):
claude mcp add --env GOOGLE_PROJECT_ID=YOUR_PROJECT_ID \
--env GOOGLE_APPLICATION_CREDENTIALS=/path/to/credentials.json \
--transport stdio google-ads-mcp \
-- pipx run --spec git+https://github.com/googleads/google-ads-mcp.git google-ads-mcp
Run /mcp in a session to check it says connected. Add --scope user if you want it in every project, not only the folder you ran it in.
| Claude Desktop | Claude Code | |
|---|---|---|
| Where it is set | claude_desktop_config.json |
claude mcp add (stored in ~/.claude.json) |
| Apply the change | Quit and reopen the app | Works in the next session |
| Check it | Connectors menu in the chat box | /mcp |
| Good for | Asking questions in plain chat | Exporting results to files and scripts |
What about claude.ai on the web?
Claude on the web cannot start a program on your computer, so it needs the HTTP version. Google's guide shows how to deploy the server to Cloud Run with your own OAuth client, add https://claude.ai/api/mcp/auth_callback as a redirect URI, and then add the Cloud Run URL ending in /mcp as a custom connector in Claude. That is a small hosting project of its own. Google also mentions a hosted endpoint pilot for allowlisted participants. For one person, the local setup above is the shorter path.
What should you ask Claude about your Google Ads account?
Start with the questions you already answer by hand on a Monday morning. The server reads; you decide.
Account and campaign questions
Google's own sample prompts are a good first test: "What customers do I have access to?", then "How many active campaigns do I have?", then "How is my campaign performance this week?". If the first one returns your account names, the credentials work.
Then ask the questions that take ten clicks in the Google Ads interface:
| Ask Claude | What it queries |
|---|---|
| Which 10 search terms spent the most in the last 30 days with zero conversions? | search_term_view with cost and conversions |
| Which campaigns are limited by budget, and what share of their budget did they spend each day? | campaign with budget and status fields |
| Compare cost per conversion by device for the last 7 days | campaign segmented by segments.device |
| Which ad groups have the lowest CTR among those with at least 1,000 impressions? | ad_group with clicks and impressions |
| List my responsive search ads and their headlines in the brand campaign | ad_group_ad |
One detail trips people up: the API returns cost in micros, so 2,500,000 means 2.50 in your account currency. Claude normally converts it, but check the first answer against the Google Ads interface before you trust the rest.
Turn the numbers into a CPC check
A useful habit: ask Claude for spend and clicks per campaign, then sanity-check the cost per click yourself. If Claude says a campaign spent 1,240 on 310 clicks, put both into the calculator and you get 4.00:
Your numbers
Add this and you get your CTR and CPM from the same three numbers, without opening another tool.
Your cost per click
CPC
—
CTR
—
CPM
—
The formula
CPC = ad spend / clicks
CPC Calculator: the full tool, with the benchmarks and the FAQ
Add to Chrome
A CPC that jumped while CTR held steady usually points at the auction (more competitors on the same terms). A CPC that rose with a falling CTR points at the ad itself, and that is a creative problem the data alone will not fix. Our guide to ad performance metrics covers which number to read first.
What can't Claude do in Google Ads?
It cannot change anything. Google's guide says the server "cannot modify bids, pause campaigns, or create new assets". That makes it safe to hand to an assistant. It also means every change stays your job.
Read-only, by design
| Task | With the Google Ads MCP server |
|---|---|
| Pull metrics, budgets, status | Yes |
| Explain a drop week over week | Yes, from the data it pulls |
| Pause a campaign or add a negative keyword | No, you do it in Google Ads |
| Change a bid or a budget | No |
| Upload an image or write a new ad | No |
For changes, Google points developers to a separate tool: the Google Ads API Developer Assistant, a Claude Code plugin that generates client library code, including mutate scripts you review and run yourself. It also offers Google Ads API agent skills (npx skills add google/skills/skills/ads) that teach the agent to write valid GAQL with fewer tokens.
Your data goes to the model
The google-ads-mcp README on GitHub says the server "will expose your data to the Agent or LLM that you connect to it". Account names, search terms and spend all land in the chat. For a client account, check your agreement before you connect it.
Where does the ad creative come from?
Claude can tell you which ad group has the weakest CTR. It cannot make the image that replaces the tired one. Performance Max and Demand Gen campaigns run on image assets, and you make those somewhere else.
Fresh images for the campaigns Claude flags
A practical loop: Claude reads the account on Monday, names the two asset groups with the lowest CTR, you make new images for them, and you upload those images in Google Ads by hand. The ads on this page are examples of that kind of image: a meme format, a product close-up, a fake phone call.
Search intent as a creative brief
Your search terms report is a list of the exact words buyers use. Ask Claude for the 20 converting search terms of the last 90 days, and you have the headline ideas for your next round of image ads, on Google and on social. A term like "label printer for lab samples" tells you more about the buyer than any persona doc. See what paid social is for how the same idea runs on Meta and TikTok.
How Selzee runs next to Google Ads in Claude
Selzee is an AI ad generator. It finds ads that are trending and working for other brands right now, and recreates them for your brand with your products, logo, colors and fonts. It has its own MCP server, so the same Claude that reads your Google Ads account can also work on your ads in Selzee.
Unlike the Google Ads server, the Selzee server is remote: in Claude Desktop or on claude.ai you add it as a custom connector with one URL and sign in with your Selzee account, no Cloud project and no config file. In Claude Code it is one claude mcp add --transport http command.
On the free plan Claude can read your brand, your ads and your calendar, and keep or discard ads. On a paid plan it can also make new ads, use templates, and schedule posts to Instagram and Facebook. Google Ads is listed as coming soon on the MCP server's channel list, so today you download the image from Selzee and upload it in Google Ads yourself.
Connect Claude to Google Ads: FAQ
Is there an official Google Ads MCP server for Claude?
Yes. Google documents the Google Ads MCP server in its Google Ads API developer guide and publishes the code in the googleads/google-ads-mcp repository on GitHub. It works with any MCP client, Claude Desktop and Claude Code included. Pair it with Selzee to make the ads it reports on.
Can Claude change my Google Ads campaigns?
Not through Google's server. The current release is read-only: it cannot change bids, pause campaigns or create assets. You make every change in Google Ads yourself, after Claude shows you the data. Let Selzee make the new images those changes need.
Do I still need a Google Ads developer token?
No, not for the latest version. Google sunset developer tokens on September 9, 2026, and API access levels are now set on the Google Cloud project. You need Explorer access or higher to read a production account. Start making ads for your account with Selzee.
Can I use the Google Ads MCP server on claude.ai?
Only if you host it. The local setup runs over stdio, which Claude Desktop and Claude Code can start. For claude.ai you deploy the server to Cloud Run with your own OAuth client and add its URL as a custom connector. Selzee's MCP server works on claude.ai with one URL.
What is GAQL and do I need to learn it?
GAQL is the Google Ads Query Language that the search tool runs. Claude writes the queries for you and can look up field names with get_resource_metadata, so you can ask in plain English. Learning to read a query helps you check Claude's work. Get ad images for the campaigns your queries flag with Selzee.