The Google Ads MCP server is Google's free, open-source and read-only bridge that lets Claude, ChatGPT and other AI apps pull reports from your Google Ads accounts when you ask in plain English. To set it up you need a Google Cloud project with Google Ads API access at Explorer level or above, Google sign-in credentials, and either a few lines of config on your own computer or a Cloud Run deployment if you want it in claude.ai.
Both setups below are as of October 2026, checked against Google’s developer guide and the GitHub README, then covers what changes when you run Google Ads for many clients.
What is the Google Ads MCP server?
An MCP server is an address you add to Claude or ChatGPT so it can read another system. Google's version reads the Google Ads API. You ask "how did spend and CPA move this week for account 1234567890?", Claude writes the query, the server runs it, and Claude answers from the rows that come back. Google announced it in October 2025 as an open-source project; the code is under the Apache 2.0 licence.
What it can do, per Google’s guide:
- list_accessible_customers: lists the Google Ads accounts the signed-in user can reach directly.
- search: runs a Google Ads Query Language (GAQL) query for metrics, budgets and status, on any resource the API reports on: campaigns, ad groups, keywords, search terms, conversions.
- get_resource_metadata: tells Claude which fields a resource such as "campaign" has, so it doesn't guess field names.
- Reference resources: the API's discovery document, the lists of metrics and segments, and the latest release notes.
What it can't do: change anything. Google calls it "strictly read-only": it can't change bids, pause campaigns or create assets. The README also warns that it exposes your account data to whichever AI app you connect.

What you need before you start
- A Google Cloud project with the Google Ads API enabled. Enabling the API gives the project Test access, which only works on test accounts.
- Explorer access or higher. To read real accounts, apply on the Google Ads API Overview page in Cloud Console. Google says Explorer is usually approved automatically and allows up to 2,880 operations a day on production accounts; Basic (15,000 a day) now requires brand verification (access levels).
- No developer token. Google sunset developer tokens on September 9, 2026; access levels now belong to the Cloud project, and the latest server doesn't need GOOGLE_ADS_DEVELOPER_TOKEN. The README's older examples still show it; you can leave it out.
- A Google login with access to the ad accounts, and Python with pipx installed.
How to set up the Google Ads MCP server in Claude Desktop and Claude Code
This is the local setup: Claude starts the server on your own computer, signed in as you.
- Create an OAuth client in your Cloud project (a desktop app client is fine) and download its JSON file.
- Sign in with Application Default Credentials, asking for the Google Ads scope. This is the command from the README:
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- Copy the credentials path gcloud prints at the end ("Credentials saved to file: [...]").
- Add the server to Claude Desktop. Open Settings → Developer → Edit Config, which opens claude_desktop_config.json (Anthropic’s guide), and add the block below. It's Google's own config; the last line is only for manager accounts and holds your manager account's ID without dashes.
{
"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",
"GOOGLE_ADS_LOGIN_CUSTOMER_ID": "YOUR_MANAGER_CUSTOMER_ID"
}
}
}
}- Quit Claude Desktop fully and reopen it. If the server doesn't start, replace "pipx" with its full path (run
which pipx). - For Claude Code, add the same server from the terminal (Claude Code’s MCP 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- Test it with Google's sample prompts: "What customers do I have access to?", then "How is my campaign performance this week?". Claude will ask for a customer ID for most questions, so put the account number in the prompt.
If you see an error that your project isn't approved for production, you're still on Test access: apply for Explorer on the Google Ads API Overview page.

How to use the Google Ads MCP server in claude.ai and ChatGPT
The web apps can't start a program on your computer, so they need the server hosted at a public address. Google documents Cloud Run for this (deployment steps):
- Create a Web application OAuth client and add the AI app's callback as an authorized redirect URI:
https://claude.ai/api/mcp/auth_callbackfor Claude,https://chatgpt.com/connector_platform_oauth_redirectfor ChatGPT. - Add the adwords scope to the OAuth consent screen (APIs & Services → OAuth consent screen → Data Access). While the app is in Testing, add every Google account that will connect as a test user.
- Build and deploy with Google's commands: create an Artifact Registry repository, run
gcloud builds submitfrom the repo folder, thengcloud run deploywith GOOGLE_PROJECT_ID, the OAuth client ID and secret, and FASTMCP_HOST=0.0.0.0. Then update the service with GOOGLE_ADS_MCP_BASE_URL set to the URL Cloud Run gave you. Rebuild to get new versions. - Never deploy without the OAuth client ID and secret. The service runs with
--allow-unauthenticatedso Claude and ChatGPT can reach it; Google warns that without those two settings the server falls back to the container's own credentials and exposes them to anyone. - Add it in Claude: Customize → Connectors → + Add → Add custom connector, paste
https://your-service-url/mcp, and choose your own OAuth client (Anthropic’s steps). On Team plans only owners can add connectors, under Organization settings → Connectors; members then click Connect. - ChatGPT: it connects only to remote servers, and which plans can add one has changed several times, so check OpenAI’s current help page.
Claude Code can use the hosted version too: claude mcp add --transport http google-ads https://your-service-url/mcp, then run /mcp to sign in.
Using the Google Ads MCP across many client accounts
Say you manage 14 clients' Google Ads from one manager account. Here's how the official server handles it, honestly.
Reaching every client works
Sign in with a login that has access to the manager account and set GOOGLE_ADS_LOGIN_CUSTOMER_ID to the manager's ID, or pass login_customer_id on a single call; the per-call value wins. One catch: list_accessible_customers returns only the accounts your login can reach directly, which is often just the manager account. To see the 14 clients under it, ask Claude to query the customer_client resource from the manager account (Google’s account hierarchy guide). After that, name the client's customer ID in every question.
Keeping clients apart is on you
The server knows account numbers, not client names. Keep a list mapping IDs to clients, use one chat per client, and check the account ID in each answer before it goes to a client.
Who on the team sees which client
On the local setup, each person installs it with their own credentials. On Cloud Run, Google says every request runs under the signed-in caller's own Google identity, so each teammate sees exactly what their Google Ads access allows. That works well if your Google Ads user access is already tidy. The 2,880 daily operations on Explorer access are shared by everyone using your Cloud project.
Clients who want their own access
You could let a client sign in to your Cloud Run server with their own Google login. They'd see only their own account, but you'd be running the server, the OAuth app and the test-user list for them, and they'd get raw numbers with a generic AI answer, not your read of them. For whether connecting AI to client ad accounts risks a ban, see how to connect Claude to client Meta and Google Ads safely.
Google Ads is one source of several
The server reads Google Ads only. To check a CPA jump against GA4 or the CRM, you add a server per platform, and Claude has to match account IDs across all of them for 14 clients.

Where ExpertRelay fits
ExpertRelay gives an agency its own hosted MCP server for the team, with nothing to build or host. You connect Google Ads through a sign-in link, once, with a login that already sees your clients' accounts, and assign each account to a client. Meta Ads, Google Analytics 4, HubSpot and other platforms attach to the same client. Each teammate adds one address in Claude (Customize → Connectors → Add custom connector) or ChatGPT where the plan allows, and signs in with their own login; their AI reaches only the clients they work with.
The tools work by client, not account ID: compare_clients puts every client side by side, last 14 days against the 14 before, biggest drops first. For Google Ads it reads daily campaign and ad group impressions, clicks, spend, conversions and conversion value, plus search impression share. Every call is logged, and client accounts are read only.
The three options side by side:
- Google's official server: free, complete access to the Google Ads API through GAQL, including search terms and keywords, and access follows each person's Google login. Limitation: Google Ads only, you host and update it yourself, and you work in account IDs.
- A third-party hosted Google Ads MCP server: data-connector and reporting companies offer hosted servers you sign in to with Google, often covering several ad platforms. Limitation: another company holds your clients' tokens and data, and some can make changes, so check the permissions and the price per account.
- ExpertRelay: one server for the team, organised by client, across Google Ads, Meta, GA4, HubSpot and more. $99 a month for the agency, covering the whole team and up to 25 clients, with 14 days free; giving a client their own AI is $49 a month for that client. Limitation: it reads totals and daily rows, not raw API data: no search terms, keyword-level data, creatives or audiences, you can't add your own code or other servers, and it can't change anything in the ad account.
When the official server is enough
- One account, or a handful you check yourself: the local setup costs nothing.
- You need search terms, keywords or any field the API has: GAQL reaches all of it.
- You're comfortable running Cloud Run and keeping an OAuth app and test-user list up to date.
- You need to edit campaigns: neither Google's server nor ExpertRelay will do it. Google points to its Developer Assistant for writing code that makes changes.
FAQ
Is the Google Ads MCP server free?
Yes. It's open source under Apache 2.0. If you host it on Cloud Run, Google Cloud bills that usage to your project.
Can the Google Ads MCP server change my campaigns?
No. Google describes it as strictly read-only: it can't change bids, pause campaigns or create assets.
Do I still need a Google Ads developer token?
No. Google sunset developer tokens on September 9, 2026. Access levels now sit on your Google Cloud project, and you need Explorer access or higher to read real accounts.
Can I use the Google Ads MCP server in claude.ai?
Yes, once it's hosted at a public address, for example on Cloud Run with Google OAuth, and added under Customize → Connectors. Claude Desktop and Claude Code can also run it locally.
Does the Google Ads MCP work with a manager (MCC) account?
Yes. Set GOOGLE_ADS_LOGIN_CUSTOMER_ID to the manager account's ID, or pass login_customer_id on a call, and ask Claude to list client accounts from the customer_client resource.
How do I connect Claude to Google Ads for all my clients?
Use Google's server with your manager account and name each client's account ID in your questions. For one server organised by client, with Meta, GA4 and HubSpot alongside, look at an agency server such as ExpertRelay's.
Running Google Ads for a dozen clients or more? See how the team server works →