What is the Google Ads MCP server, and how do I connect it to Claude or ChatGPT?

TofuAnswer by the Tofu team · checked

A black two-prong plug held just short of a white wall outlet

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:

ToolWhat it does
list_accessible_customersLists the Google Ads accounts your login can reach
searchRuns GAQL queries for metrics, budgets and status
get_resource_metadataDescribes 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/adwords scope. 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_ID to the manager account's 10-digit customer ID without hyphens, or pass login_customer_id with 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:

  1. 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_callback for Claude and https://chatgpt.com/connector_platform_oauth_redirect for 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.
  2. 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_SECRET and FASTMCP_HOST=0.0.0.0. Then set GOOGLE_ADS_MCP_BASE_URL to the URL Cloud Run assigns. Google's README also recommends GOOGLE_ADS_MCP_JWT_SIGNING_KEY and GOOGLE_ADS_MCP_STORAGE_TYPE for production, so sign-ins persist across Cloud Run instances.
  3. 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.
  4. 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 symptomWhy it happensFix
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 accessApply for Explorer access on the Google Ads API Overview page
USER_PERMISSION_DENIEDYou reach the account through a manager account without a login customer IDSet GOOGLE_ADS_LOGIN_CUSTOMER_ID to the manager's ID, without hyphens
HTTP 401 Unauthorized from your Cloud Run URLThe client doesn't support the MCP OAuth sign-inUse a client that does, or the local setup
Google sign-in failsThe AI app's redirect URI isn't on your OAuth client, or your account isn't a test userAdd the redirect URI, and add the account under test users
The server doesn't show up in Claude DesktopA JSON error, a relative file path, or the app wasn't fully restartedFix 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)

Ask Tofu next

Pick a question and Tofu Ads Agent answers it in chat.

Related answers