Connect Claude to Google Ads.

How to connect Google's official Google Ads MCP server to Claude Desktop and Claude Code, what its three read-only tools do, and a five-step weekly workflow.

The Google Ads MCP server is Google's official, open-source connector between AI assistants and the Google Ads API, and it works in Claude: Claude can query your campaigns, ads, budgets, and metrics through it in plain language, but cannot change anything. The catch is setup. Meta's connector takes a sign-in; Google's runs on your own machine or cloud, with a Google Cloud project and OAuth credentials, and since September 2026 no developer token. Below: setup in Claude Desktop and Claude Code, the three tools, a five-step weekly workflow, and what changes when the analysis is done before the chat starts.

Facts about Google's server were checked against its GitHub repository, Google's developer documentation (last updated October 30, 2026), and the Google Ads Developer Blog on November 1, 2026.

What is the Google Ads MCP server?

It is a Model Context Protocol server that Google's Ads API team publishes, turning the Google Ads API into tools an AI assistant can call. Google open-sourced it on October 7, 2025 as a read-only release, and its developer guide still calls it strictly read-only: it cannot change bids, pause campaigns, or create assets. The code is on GitHub under Apache 2.0, at version 0.0.5 since October 9, 2026.

It is not a hosted service: you run it locally or deploy it to Google Cloud Run (Google mentions a hosted pilot for allowlisted participants). So there are three common ways to put Google Ads in Claude:

Google Ads MCP serverHosted connector (Pipeboard)Peachblue
Where it runsYour machine or your Cloud RunPipeboard's serversPeachblue's servers
What it coversAnything the Google Ads API reports, Performance Max includedGoogle Ads, Meta, TikTok, Snap, RedditGoogle Ads Search, Display, and Video, plus Meta, TikTok, and Amazon DSP
What comes backQuery rows for Claude to readAPI resultsRankings, RSA asset winners, and creative analysis, computed
Can change your accountNoYes, with permissions; read-only tokens from ProNo, read-only
What you need firstA Cloud project with Explorer access, OAuth credentials, PythonA Pipeboard accountA Peachblue plan and a Google sign-in
CostFree, open sourceFree plan; Pro $29.90/moFrom $199/mo (Pro)

Pipeboard's prices were verified October 24, 2026.

How do you connect the Google Ads MCP server to Claude?

Set up a Google Cloud project with Explorer access to the Google Ads API, create OAuth credentials, then add the server to Claude Desktop's config file or to Claude Code with one command. No developer token: Google sunset them in September 2026, and access levels now belong to the Cloud project behind your credentials.

  1. Get API access. In a Google Cloud project, enable the Google Ads API, which grants Test access (test accounts only), then apply for Explorer access on the Google Ads API Overview page in Cloud Console. Google says Explorer is approved by automated review in most cases and allows 2,880 operations a day against live accounts (access levels).
  2. Create credentials. Create an OAuth client, download its JSON, and sign in with the Google account that can see your ad accounts. Note the credentials path it prints.
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
  1. Install pipx, which runs the server straight from GitHub.
  2. Add it to Claude Desktop. From the Claude menu, open Settings, then Developer, then Edit Config, and add the server to claude_desktop_config.json. Quit Claude completely and reopen it; the server shows under the plus menu, in Connectors (MCP docs).
{
  "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"
      }
    }
  }
}
  1. Ask "What customers do I have access to?" to confirm it works.

In Claude Code it is one command. Keep --transport between the --env pairs and the server name, or Claude Code reads the name as another variable (Claude Code docs):

claude mcp add --env GOOGLE_PROJECT_ID=YOUR_PROJECT_ID \
  --env GOOGLE_APPLICATION_CREDENTIALS=/path/to/credentials.json \
  --transport stdio --scope user google-ads \
  -- pipx run --spec git+https://github.com/googleads/google-ads-mcp.git google-ads-mcp

If you reach client accounts through a manager account, add GOOGLE_ADS_LOGIN_CUSTOMER_ID with the manager's ID, or name it per request.

For Claude on the web, or a whole team, deploy it to Cloud Run with your OAuth client ID and secret, add https://claude.ai/api/mcp/auth_callback to that client's redirect URIs, and add a custom connector at your Cloud Run URL ending in /mcp, using your own OAuth client. Google warns that deploying it open without those OAuth settings exposes the container's own credentials. Custom connectors work on every Claude plan; the free plan allows one, and on Team and Enterprise an owner adds it first (Anthropic's help center).

Two cautions. First, the server is read-only by design, not by permission: a comment in its source notes that Google Ads has no read-only OAuth scope, so your credential carries full account access and only the tool list keeps it to reads. Guard the credentials file like a password. Second, Google's companion Developer Assistant plugin for Claude Code can generate client library code, mutate scripts included, that does change accounts. That happens outside the MCP server, so review it like any script.

Peachblue's connector goes in with no Cloud project: copy the URL from Settings, MCP tab, add it as a custom connector, and approve the sign-in (setup docs). Connecting Google Ads is a Google sign-in: you pick the accounts to sync, and nothing in them is ever changed (Google Ads setup).

What do the Google Ads MCP tools give Claude?

Three tools and four reference resources: enough to query anything the Google Ads API reports, with the analysis left to Claude.

list_accessible_customers returns the account IDs your sign-in can reach. Claude needs a customer ID for most questions, so Google suggests putting it in the prompt when you switch accounts. Peachblue scopes answers to the accounts you synced.

search runs a Google Ads Query Language (GAQL) query that Claude assembles from fields, a resource, conditions, an order, and a limit. That reaches campaigns, ads, assets, keywords, search terms, and Performance Max asset groups. The rows land in the conversation and cost context on every question. Peachblue syncs daily, so the answer is a lookup, not a query Claude writes.

get_resource_metadata describes a resource's fields so Claude can write a valid query. The server also exposes the API's discovery document, metric and segment lists, and release notes.

Creative. No tool tags or scores an ad, ranks the headline and description variants inside a responsive search ad, or recognizes the same video in several ad groups, let alone on Meta. Peachblue's get_google_ads_rsa_performance returns per-variant winners and losers inside each RSA, and every Google creative is tagged on 31 dimensions and scored against your whole account and within Google.

How do you analyze Google Ads in Claude, step by step?

Five weekly steps: pin the account, pull performance, read the RSA assets, judge the creative, explain the change. Each works through Google's server; a layer that has already done the math changes how much lands on the chat.

1. Pin the account

List the accounts I can access. Use customer ID [ID] for everything in this chat, and tell me before you switch.

In Peachblue the scope is the accounts you synced, matching what your team sees in the app.

2. Pull performance for the period

Search the campaign resource for the last 14 days: name, type, status, cost, impressions, clicks, conversions, and conversion value. Cost comes back in micros, so divide by 1,000,000. Rank by cost, with CPA and ROAS beside each.

Google returns money in micros, millionths of the account currency (field reference). Check one campaign against the Google Ads interface before trusting the rest.

In Peachblue this is get_campaigns and get_performance_summary, from data synced daily and split by network: Search, Display, and YouTube.

3. Read the responsive search ad assets

Use get_resource_metadata to find where responsive search ad asset performance is reported. Then, for each enabled RSA in [campaign], list every headline and description with impressions and clicks for the last 30 days, and mark the two weakest.

In Peachblue this is get_google_ads_rsa_performance: per-variant winners and losers inside each RSA, already computed, plus suggested headlines and descriptions grounded in which of your variants actually won.

4. Judge video and display ads as creative

List every video and responsive display ad with spend in the last 30 days. Combine rows where the same asset runs in more than one ad group, then rank by cost per conversion with spend beside each.

Claude matches assets only by Google's IDs and never sees your Meta or TikTok cut.

In Peachblue this happened at sync: every creative is fingerprinted, grouped across ad groups, and matched to the same creative on other platforms. get_creatives ranks them by composite score, and get_creative_detail hands Claude the tags and a written read of each one.

5. Explain the change and write the update

Compare the last 7 days with the 7 before. Which campaigns and ads moved cost per conversion most, and by how much? Then write a five-line update using only numbers from this chat.

Ask Claude to show the GAQL behind any number you plan to send to a client.

In Peachblue this is compare_periods, which names the creatives that moved the result, and Reports, with date-range PDF and CSV export.

What makes Peachblue better than Google's MCP server for creative work?

The analysis is finished before the conversation starts, there is nothing to deploy, and Google Ads sits beside Meta, TikTok, and Amazon DSP in one connection. Google's server gives Claude the API; Peachblue gives it answers about your creative:

You ask ClaudeWith Google's serverWith Peachblue
"Which RSA headlines are losing?"Claude finds the asset report, writes the query, and ranks rowsPer-variant winners and losers in each RSA, computed
"Which Google creative is winning, and why?"Rows by ad; no tool tags or scores creativeRanked by one composite score, tagged on 31 dimensions, with a written read
"Is our best YouTube video also our best Meta video?"Google onlyThe same creative matched across platforms
"What changed this week?"Two queries and the math in chatcompare_periods names the creatives behind the change
"What should we write next?"A draft from whatever is in the chatHeadlines and descriptions grounded in your winning variants

Performance. Claude reasons over results instead of adding up micros. get_daily_spend gives day-by-day totals for any window, and get_risk_summary flags spend concentration, fatigue candidates, and zero-result spend.

Creative. Peachblue analyzes text-only RSAs on their own path and gives Display and Video ads the same 31-dimension analysis as your social ads, so a Google winner and a Meta winner meet in one chat. It is the only creative analytics MCP that serves your own cross-platform performance data, Amazon DSP included.

The loop. The Next Creative Brief turns your winners' patterns into concepts and proven hooks, with a prompt block for an image or video generator, and once the new ads run, Peachblue scores them on the same scale.

Google's server keeps what is its alone: free query access to the whole reporting surface, including keywords, search terms, and the Performance Max, Shopping, and App campaigns Peachblue does not cover. Connect both, one for creative answers and one for raw queries.

Which route should you take?

  • You know Google Cloud and want free, raw query access to everything, Performance Max included: Google's server.
  • You want Claude to change bids, budgets, or campaigns: not Google's server. A hosted connector such as Pipeboard can, with permissions, or Google's Developer Assistant can write a script you run. Decide your approvals first.
  • You want creative answers across Google Ads, Meta, TikTok, and Amazon DSP with nothing to deploy: Peachblue. Google Ads and the MCP server start on Pro, Amazon DSP on Scale, and the same tools run in the product as Agent Peach.

One boundary, stated plainly: Peachblue reads. It does not create, edit, or pause anything in Google Ads, and it covers Search, Display, and Video, not Performance Max. Every server is compared in the best MCP servers for ad data; the Meta and Amazon versions of this guide are Claude for Meta ads creative analysis and Amazon Ads MCP in Claude; the four-platform workflow is Claude for media buyers.

Frequently asked questions

What is the Google Ads MCP server?

It is Google's official, open-source Model Context Protocol server for the Google Ads API, released by the Google Ads API team on October 7, 2025 under the Apache 2.0 license. It lets AI assistants such as Claude query Google Ads data in plain language through three tools. It is read-only and free, and you run it yourself.

How do I connect the Google Ads MCP server to Claude?

You need a Google Cloud project with Explorer access to the Google Ads API and OAuth credentials, usually set up with gcloud auth application-default login. In Claude Desktop, add the server to claude_desktop_config.json through Settings, Developer, Edit Config, with your project ID and credentials path, then restart Claude. In Claude Code, the claude mcp add command takes the same settings as --env values.

Do I need a developer token for the Google Ads MCP server?

No, not since September 2026. Google sunset developer tokens and moved API access levels to the Google Cloud project behind your OAuth credentials, and the latest version of the server no longer asks for one. Your project needs Explorer access or higher to query live accounts.

Can the Google Ads MCP server change my campaigns?

No. Google describes it as strictly read-only: it cannot change bids, pause campaigns, or create assets. The credential it uses still carries full account access, because Google Ads has no read-only OAuth scope, so keep the credentials file private.

Is there a hosted Google Ads MCP server URL?

Not a public one from Google. You run the server locally, or deploy it to Google Cloud Run and add your own URL ending in /mcp to Claude as a custom connector. Google mentions a hosted endpoint pilot for allowlisted participants only.

What makes Peachblue better than Google's MCP server for Google Ads creative?

The analysis is done before the chat starts, and there is nothing to deploy. Google's server gives Claude query access to one platform and leaves the analysis to the conversation. Peachblue gives Claude per-variant RSA winners and losers, Search, Display, and Video creatives tagged on 31 dimensions and ranked by one score, and the same data for Meta, TikTok, and Amazon DSP, all read-only.