What is the Google Ads MCP server, and how do I connect it to Claude or ChatGPT?
TofuAnswer by the Tofu team · checked

The Google Ads MCP server is Google's open-source, read-only MCP server for the Google Ads API, published by the Google Ads API team at github.com/googleads/google-ads-mcp. It lets an AI assistant list your accounts and run Google Ads Query Language (GAQL) reports, but it can't change bids, pause campaigns or create new assets. Google doesn't host a public URL. You run it yourself: locally for Claude Desktop or Claude Code, or on your own Cloud Run service for Claude on the web and ChatGPT. You need a Google Cloud project with Explorer access or higher.
As of October 2026.
Is there a Google Ads MCP server URL?
No, not a public one: Google doesn't host an address you can paste into Claude or ChatGPT. Run locally, the server is a program your AI app starts on your computer, so there is no URL. Deployed to Google Cloud Run, it gets your own address, such as https://your-cloud-run-url.a.run.app/mcp. Google's guide mentions a hosted endpoint pilot for allowlisted participants, but the setup page it links to returned "404" (not found) when we checked on October 26, 2026.
The code is at github.com/googleads/google-ads-mcp. Meta, by contrast, hosts its ads MCP server at a public URL; for all three ad platforms side by side, see connecting Claude or ChatGPT to Google, Meta and LinkedIn ad accounts.
Who makes it, and can it change my campaigns?
The Google Ads API team at Google makes it, and it can't change anything in your account. Google released it as open source (Apache 2.0 license) on October 7, 2025, and the latest release on PyPI, version 0.0.5, came out on October 9, 2026. Google's guide says: "This implementation is strictly read-only. It cannot modify bids, pause campaigns, or create new assets." It has three tools:
| Tool | What it does |
|---|---|
list_accessible_customers | Lists the Google Ads accounts your login can reach |
search | Runs GAQL queries for metrics, budgets and status |
get_resource_metadata | Describes the fields a resource, such as campaign, has |
A tools_config.yaml file lets you turn tools off. To have an AI change campaigns, you need the Google Ads API in your own code or a third-party tool. Read what Google and Meta allow for AI agents before you pick one.
What do I need before I set it up?
You need a Google Cloud project with Google Ads API access and credentials that can sign in to your Google Ads accounts:
- API access on your Cloud project. Enabling the Google Ads API gives a project Test access, which only reaches test accounts. Apply for Explorer access on the Google Ads API Overview page in the Cloud console; Google says review and approval are automated in most cases. Explorer allows 2,880 operations a day against real accounts.
- Credentials with the
https://www.googleapis.com/auth/adwordsscope. Use an OAuth client ID and secret, or Application Default Credentials from your own Google login or a service account. A service account has to be added as a user in Google Ads first, under Admin > Access and security. - A passkey, if you sign in as yourself. In a rollout that started August 5, 2026, creating a new OAuth refresh token for the Google Ads API requires a passkey, and a 7-day security delay may apply before a new passkey works, so create one early at g.co/passkeys. Service accounts aren't affected.
- Your manager account ID, if you use one. Set
GOOGLE_ADS_LOGIN_CUSTOMER_IDto the manager account's 10-digit customer ID without hyphens, or passlogin_customer_idwith a tool call. - Python 3.10 or later and pipx, to run it locally.
You don't need a developer token. Google's guide says developer tokens were sunset on September 9, 2026, and "are no longer required in the latest version" of the server, because access levels now belong to your Cloud project. The GitHub README still has an optional developer token step, and its sample configs include a GOOGLE_ADS_DEVELOPER_TOKEN line. Google's developer blog says a token sent with API calls is "optional and ignored by the API servers," and that Google will start rejecting tokens in a future major API version, so leave it out.
How do I add it to Claude Code?
Register it as a local server with claude mcp add, using your own project ID and the path to your credentials file:
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
Add --env GOOGLE_ADS_LOGIN_CUSTOMER_ID=1234567890 for a manager account, and --scope user to use it in every project. Run claude mcp get google-ads-mcp to check it. Google's README says to paste its config into ~/.claude/settings.json, but Anthropic's docs say Claude Code keeps MCP servers in ~/.claude.json or a project's .mcp.json, so use the command. Google's separate Developer Assistant plugin for Claude Code can generate code that makes changes, which the MCP server can't.
How do I add it to Claude Desktop?
Add Google's config block to Claude Desktop's claude_desktop_config.json. The file is at ~/Library/Application Support/Claude/claude_desktop_config.json on a Mac and %APPDATA%\Claude\claude_desktop_config.json on Windows. In the older settings layout, Settings > Developer > Edit Config opens it.
{
"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"
}
}
}
}
Quit Claude Desktop completely, not just the window, so it reloads the file. Then click + in the chat box and select Connectors to see the server. Servers in this file work only in Claude Desktop, not in Claude on the web or in Cowork.
Can I use it in ChatGPT or Claude on the web?
Yes, but only once you deploy it as a remote server. Claude reaches custom connectors from Anthropic's cloud, so the server must be on the public internet, and ChatGPT needs a public HTTPS address too (or OpenAI's Secure MCP Tunnel for a private server). Google's guide uses Cloud Run:
- In your Cloud project, create an OAuth client of type Web application. Add each AI app's redirect URI:
https://claude.ai/api/mcp/auth_callbackfor Claude andhttps://chatgpt.com/connector_platform_oauth_redirectfor ChatGPT. Add the adwords scope to the OAuth consent screen, and if the consent screen is in Testing, add every Google account that will connect as a test user. - Build the image with Cloud Build and deploy it to Cloud Run with
GOOGLE_PROJECT_ID,GOOGLE_ADS_MCP_OAUTH_CLIENT_ID,GOOGLE_ADS_MCP_OAUTH_CLIENT_SECRETandFASTMCP_HOST=0.0.0.0. Then setGOOGLE_ADS_MCP_BASE_URLto the URL Cloud Run assigns. Google's README also recommendsGOOGLE_ADS_MCP_JWT_SIGNING_KEYandGOOGLE_ADS_MCP_STORAGE_TYPEfor production, so sign-ins persist across Cloud Run instances. - In Claude, go to Customize > Connectors, click + Add, then Add custom connector. Paste
https://your-cloud-run-url.a.run.app/mcp, and under OAuth client choose Use your own OAuth client with your client ID and secret. Claude's Free plan allows one custom connector; on Team and Enterprise, an Owner or Primary Owner adds it first. - In ChatGPT on the web, open Plugins, select the plus button, then Add custom MCP server. Enter the same URL, choose OAuth with your client ID and secret, review the risk warning, and select Create as a plugin, then install the plugin. OpenAI says workspace permissions apply.
Google's guide deploys with --allow-unauthenticated and lets the server enforce Google sign-in itself. It warns never to do that without the two OAuth variables, or the server falls back to its own service account and exposes it to anyone. Keep the deployment for your own accounts: Google's developer policies prohibit hosted MCP servers that re-expose Google Ads to other businesses through your API access.
What does it cost, and what are its limits?
The server and the Google Ads API are free; you pay for hosting and your AI plan. Google's docs say the Google Ads API "is free to use" at Explorer, Basic and Standard access, and Cloud Run charges only for resources you use beyond a monthly free tier. Limits to plan for:
- Daily quota. Explorer allows 2,880 operations a day against production accounts, Basic 15,000 and Standard unlimited, counted over a sliding 24 hours. Going over returns
RESOURCE_EXHAUSTED; wait, or apply for Basic access. - Customer IDs. Google's README says the agent will ask for a customer ID for most prompts, so name the account in your question if you manage several.
- Your data goes to the AI. The README notes that the server exposes your data to the agent or model you connect it to.
What are the common setup errors?
| Error or symptom | Why it happens | Fix |
|---|---|---|
CLOUD_PROJECT_NOT_APPROVED_FOR_PRODUCTION (API v25 and later), ACTION_NOT_PERMITTED (earlier) or "The developer token is only approved for use with test accounts" | Your project only has Test access | Apply for Explorer access on the Google Ads API Overview page |
USER_PERMISSION_DENIED | You reach the account through a manager account without a login customer ID | Set GOOGLE_ADS_LOGIN_CUSTOMER_ID to the manager's ID, without hyphens |
| HTTP 401 Unauthorized from your Cloud Run URL | The client doesn't support the MCP OAuth sign-in | Use a client that does, or the local setup |
| Google sign-in fails | The AI app's redirect URI isn't on your OAuth client, or your account isn't a test user | Add the redirect URI, and add the account under test users |
| The server doesn't show up in Claude Desktop | A JSON error, a relative file path, or the app wasn't fully restarted | Fix the JSON, use absolute paths, quit and reopen, then run the pipx command in a terminal and read mcp-server-google-ads-mcp.log in ~/Library/Logs/Claude |
Sources (20)
- Google Ads MCP server: Developer integration guide, checked October 26, 2026
- googleads/google-ads-mcp (GitHub repository and README), checked October 26, 2026
- google-ads-mcp on PyPI, checked October 26, 2026
- Open Source Google Ads API MCP Server (Google Ads Developer Blog, October 7, 2025), checked October 26, 2026
- A new onboarding experience for Google Ads API developers (Google Ads Developer Blog, September 10, 2026), checked October 26, 2026
- Passkey authentication requirement for the Google Ads API (Google Ads Developer Blog, July 27, 2026), checked October 26, 2026
- Access levels and permissible use | Google Ads API, checked October 26, 2026
- Access levels and RMF | Google Ads API, checked October 26, 2026
- API limits and quotas | Google Ads API, checked October 26, 2026
- API call structure | Google Ads API, checked October 26, 2026
- Service account workflow | Google Ads API, checked October 26, 2026
- Google Ads Developer Policies, checked October 26, 2026
- Cloud Run pricing, checked October 26, 2026
- Connect Claude Code to tools via MCP, checked October 26, 2026
- Get started with custom connectors using remote MCP | Claude Help Center, checked October 26, 2026
- Getting Started with Local MCP Servers on Claude Desktop | Claude Help Center, checked October 26, 2026
- Connect to local MCP servers | Model Context Protocol, checked October 26, 2026
- Add custom MCP server | OpenAI, checked October 26, 2026
- Secure MCP Tunnel | OpenAI, checked October 26, 2026
- Connect and test your plugin | OpenAI, checked October 26, 2026