AI & Data Studio

Google Ads and Search Console MCP servers: connect them to Claude or ChatGPT, and check against your Data Studio report

Google's Google Ads MCP server is free and read-only, and no longer needs a developer token. Search Console has no Google server at all. Here's each route, the setup, the risks, and how to check the answers against your Data Studio report.

Lazarina Stoy·

Google Ads and Search Console MCP servers: connect them to Claude or ChatGPT, and check against your Data Studio report

Google publishes a free Google Ads MCP server that is read-only, runs on your own computer or your own Cloud Run, and no longer needs a developer token. It publishes no Search Console MCP server, so for Search Console you choose between community code and a connector’s hosted MCP. Whichever you use, check the assistant’s first answers against the same chart in your Data Studio report (formerly Looker Studio) before they go anywhere near a client.

Below: the routes, what “read-only” means for Google’s Ads server, the Claude setup, choosing a Search Console server, hosted options, a parity check and the limits. It’s the Google Ads and Search Console version of connecting GA4 to Claude or ChatGPT; for the wider picture, start with my overview of AI in Data Studio.

I’m writing this from Google’s documentation, the servers’ source code and GitHub issues, and each vendor’s pages, read on 14 October 2026. I haven’t applied for Google Ads API access, installed either server or run the parity check on a client account.

What Google provides, and what it doesn’t

An MCP server is the small program that lets Claude or ChatGPT call a tool, like “run a Google Ads report”, and read the result (the GA4 post explains MCP). The official picture on 14 October 2026:

Source Official MCP server? Who runs it Read or write Google sign-in it asks for
Google Ads Yes, open source since October 2025 You: on your computer or your own Cloud Run Read-only tools The full Google Ads scope (adwords)
Search Console No. Google hasn’t published one Community code or a connector Depends on the server Depends: webmasters.readonly or full webmasters
GA4 Yes You, on your computer Read-only Read-only Analytics
Data Studio No, and “no defined timeline” – – –

From Google’s developer docs, Google Cloud’s MCP list and Google’s GitHub organisations, checked 14 October 2026.

Neither Google Ads nor Search Console is on Google Cloud’s list of Google-hosted MCP servers, so there’s no Google URL to paste into an assistant. Data Studio has none either, so the report is the check, not the source (what the Data Studio API can and can’t do).

Three source tiles on the left: Google Ads, solid, official with read-only tools; Search Console, dashed, no Google server; GA4, solid, official; all feed Claude or ChatGPT; to the right, the Data Studio report is crossed off as something the assistant can't read, with an arrow labelled check here
Google Ads and GA4 have official servers. Search Console doesn’t. Data Studio has none, and is where you check the answer.

Meta is a different animal: it has its own official, Meta-hosted Ads MCP server that can write. I cover it in the Meta Ads MCP post.

Pick your route by the assistant you use

The deciding question is where your assistant can run a server. Google’s Ads server and the community Search Console servers are local: programs on your computer, which only desktop apps such as Claude Desktop and Claude Code can start. Claude in the browser and ChatGPT need a remote server reached by a URL.

Route Claude Desktop Claude Code Claude in the browser ChatGPT Terminal? Who holds the Google authorisation Read or write
Google’s Ads server, local Yes Yes No Not directly Yes, plus a Cloud project You Read-only tools
Google’s Ads server on your Cloud Run Yes Yes Yes, as a custom connector As a remote MCP URL, plan permitting Yes, and a deployment Your Cloud project Read-only tools
Community Search Console server, local Yes Yes No Not directly Yes You Depends on the server
A connector’s hosted MCP (Ads and Search Console) Yes Yes Yes (Free plan: one custom connector) Vendor’s app or URL, plan permitting No The vendor Read; some can write to Google Ads

From Google’s README, Anthropic’s and OpenAI’s help pages and each vendor’s docs, checked 14 October 2026. Plan details change monthly.

Decision tree: Claude Desktop or Claude Code users happy with a terminal take Google's Ads server plus a vetted Search Console server; otherwise a connector's hosted MCP; Claude in the browser and ChatGPT users take Google's Ads server on their own Cloud Run if someone runs their Google Cloud, otherwise a connector's hosted MCP or ChatGPT app
Local routes need a desktop app. Everything else is your own Cloud Run (Google Ads only) or a connector.

ChatGPT

OpenAI’s help page says ChatGPT “connects to remote MCP servers”; a local server needs OpenAI’s Secure MCP Tunnel. What you can connect depends on your plan (table in the GA4 post). I found no Google Ads or Search Console app for ChatGPT from Google, so the practical route is a connector’s app or URL, or your own Cloud Run deployment.

Google released the Google Ads MCP server as open source in October 2025. Google’s developer page, updated 30 September 2026, lists its mode as “Read-only (current release)” and says: “This implementation is strictly read-only. It cannot modify bids, pause campaigns, or create new assets.” It has three tools and four reference resources:

Tool or resource What it returns A question it answers
list_accessible_customers Customer IDs and account names you can access “Which accounts can I see?”
search Results of a Google Ads Query Language (GAQL) query: metrics, budgets, status “Spend and conversions by campaign, 1–30 September”
get_resource_metadata The fields a resource such as “campaign” has “Which fields does campaign have?”
metrics, segments resources (plus discovery document, release notes) Reference lists of metrics and segments “What can I break this down by?”

GAQL is Google Ads’ query language. The assistant writes it for you, and the server logs every query it runs.

Now the part the setup guides I read skip. “Read-only” lives in the tool list, not in the sign-in. Google doesn’t publish a read-only Google Ads scope, so the credentials you create carry the full adwords scope; a comment in the source says access “is restricted to read methods by the tools this server exposes”. And a Google maintainer wrote on GitHub in June 2026: “We already have plans to add write access soon”.

The token you no longer need

  • Google sunset Google Ads developer tokens on 9 September 2026. Sending one is “optional and ignored by the API servers”.
  • Access levels now sit on the Google Cloud project behind your OAuth credentials. Explorer covers production accounts at 2,880 operations a day.
  • Check your level on the Google Ads API Overview page in the Cloud console (Google’s access levels page).

Older guides and an optional README section still mention a developer token: leave it out. The PyPI package google-ads-mcp is Google’s (0.0.5, released 9 October 2026, Python 3.10 or newer).

Set up the Google Ads server for Claude Desktop or Claude Code

This is Google’s documented setup, with the Claude parts from Anthropic’s docs. It’s the documented setup, untested by me. You’ll need a terminal and a Google Cloud project.

1. Install pipx and the Google Cloud CLI

Install pipx (it runs Python apps without you managing them) and the Google Cloud CLI, which gives you the gcloud command.

2. Enable the Google Ads API and apply for Explorer access

In a Cloud project, enable the Google Ads API from the API Library. That gives you Test access, which only reaches test accounts. Then open the Google Ads API Overview page in the Cloud console, expand Upgrade access level, and click Apply for access for Explorer. Google may upgrade you automatically.

Before you apply: Google’s known issue

Google’s developer-token page (7 October 2026) says Explorer applications from Cloud projects on the Free Trial, or with suspended or disabled billing, are being rejected; a fix is in progress. On the server’s GitHub, five users reported auto-rejected Explorer applications in the week to 13 October 2026. If calls later fail with CLOUD_PROJECT_NOT_APPROVED_FOR_PRODUCTION, the project is still on Test access.

3. Create credentials

Create an OAuth client of type Desktop app (Google’s Manage OAuth Clients page shows where), download its JSON, then sign in with a Google account that can see the Ads accounts:

# From Google's README. The documented setup, untested by me.
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 path it prints after Credentials saved to file:. The README also documents a service-account version and an OAuth-proxy option, which it says gives better credential isolation; I show this method because it mirrors the GA4 setup.

4. Add the server to Claude

Claude Code. The README has no Claude Code command, so this combines its configuration with Anthropic’s claude mcp add syntax:

# Assembled from Google's README and Anthropic's docs. The documented setup, untested by me.
claude mcp add google-ads-mcp --scope user \
  -e GOOGLE_PROJECT_ID=YOUR_PROJECT_ID \
  -e GOOGLE_APPLICATION_CREDENTIALS=PATH_TO_CREDENTIALS_JSON \
  -- pipx run --spec git+https://github.com/googleads/google-ads-mcp.git google-ads-mcp

Then run /mcp to check it’s connected. (The README names ~/.claude/settings.json; Anthropic’s docs keep MCP servers in ~/.claude.json or .mcp.json, so use the command.)

Claude Desktop. Open Settings → Developer → Edit Config and add the README’s JSON under mcpServers, with full paths. I’ve dropped its optional developer-token line; keep GOOGLE_ADS_LOGIN_CUSTOMER_ID only if you reach clients through a manager (MCC) account:

{
  "mcpServers": {
    "google-ads-mcp": {
      "command": "pipx",
      "args": [
        "run",
        "--spec",
        "git+https://github.com/googleads/google-ads-mcp.git",
        "google-ads-mcp"
      ],
      "env": {
        "GOOGLE_APPLICATION_CREDENTIALS": "PATH_TO_CREDENTIALS_JSON",
        "GOOGLE_PROJECT_ID": "YOUR_PROJECT_ID",
        "GOOGLE_ADS_LOGIN_CUSTOMER_ID": "YOUR_MANAGER_CUSTOMER_ID"
      }
    }
  }
}

Quit Claude Desktop completely and restart it. To stop updates changing the tools, pin a version as the README shows: pipx run --spec "google-ads-mcp==X.Y.Z" google-ads-mcp.

5. Ask your first question

Start with the README’s prompts, what can the ads-mcp server do? and what customers do I have access to?, and include a customer ID: the agent “will need and ask for a customer id for most prompts”. If the server doesn’t appear, Anthropic’s advice is to use absolute paths and read the MCP logs in ~/Library/Logs/Claude (or %APPDATA%\Claude\logs on Windows).

Putting it on Cloud Run so claude.ai or ChatGPT can reach it

Google’s README has a Cloud Run section: build an image, deploy it with gcloud run deploy, and give it an OAuth client ID, secret and base URL. The OAuth flow, not Cloud Run’s sign-in, gates access (the command uses --allow-unauthenticated), and an open GitHub issue reports 401 errors after OAuth. It’s a job for whoever runs your Cloud account, not a marketer’s afternoon.

The companion sheet has these steps as a checklist, plus the snippets:

Search Console: no Google server, so choose the code carefully

Google hasn’t published a Search Console MCP server, but the Search Console API is public, so the community has filled the gap: a GitHub search for “search console mcp” returned 396 repositories on 14 October. The question that matters is the sign-in scope. Google’s Search Analytics query works with the read-only webmasters.readonly scope, so a reporting question never needs more. Here’s what the four most-starred servers I read ask for:

Repository Stars Licence Last push Scope requested Write tools (default)
AminForou/mcp-gsc 1,927 MIT 15 Sep 2026 Full webmasters Add site, delete site, delete sitemap: off unless you set GSC_ALLOW_DESTRUCTIVE. Sitemap submit: not gated
saurabhsharma2u/search-console-mcp 302 MIT 2 Sep 2026 webmasters.readonly; a separate indexing sign-in for submissions An indexing_submit action (that separate sign-in); also bundles Bing, GA4 and AdSense
ahonn/mcp-server-gsc 278 No licence file 4 Sep 2026 webmasters.readonly Not checked
Suganthan’s GSC MCP 147 Apache-2.0 27 Sep 2026 Full webmasters and indexing, unless GSC_SCOPES=readonly (its setup wizard’s default) Sitemap and URL submission, full tier only

Read from each repository’s README and source on 14 October 2026. “Not checked” means I didn’t read it from the code. This changes often: re-check before you install.

A server that manages sitemaps needs the full scope. For “which queries lost clicks last month”, a read-only server is the smaller risk.

Before you install a Search Console MCP

  • ☐ Scope: webmasters.readonly for reporting; know why if it asks for more.
  • ☐ Write tools off by default, and you know which ones aren’t gated.
  • ☐ Licence, last commit, maintainer: you may use it, and someone answers issues.
  • ☐ A pinned version.
  • ☐ Lowest permission: for a service account, the lowest level Google’s permissions table allows for reading Performance data.

You’ll also enable the Google Search Console API in your Cloud project, the same way as the Ads API in step 2. (Connecting Search Console to Data Studio covers the report side, including Site vs URL Impression.)


Hosted options: connector MCPs that also feed your Data Studio report

Five Data Studio connectors also serve Google Ads and Search Console over MCP. The column that matters: can it change your campaigns?

Vendor Google Ads over MCP Search Console over MCP Writes to Google Ads? (vendor’s words) Also a Data Studio connector
Windsor.ai Yes Yes Yes (34 Google Ads actions); write “can be switched off if you want read-only access” Yes
Supermetrics Yes Yes Beta, opt-in per ad account; campaigns “always created paused” Yes
Porter Metrics Yes Yes Its docs conflict: help article says read-only, MCP docs list campaign actions Yes
Catchr Yes Yes No: “Claude cannot create, pause, or edit a campaign” Yes
Coupler.io Yes Yes No ad-platform writes Yes

From each vendor’s MCP source list, docs and Claude pages, checked 14 October 2026. Prices and plan limits are in marketing data MCP servers compared.

Write-first tools also rank for “google ads mcp” (AdKit, Markifact, Adspirer, Composio). They’re built to change campaigns, mostly behind drafts or approvals.

In Claude, a hosted MCP goes in as a custom connector: Customize → Connectors → + Add → Add custom connector (Free: one). No terminal, but the vendor holds your client’s Google authorisation. For the connector choice, Data Studio connectors compared and Porter vs Windsor vs Supermetrics go further.

Check the answer against your Data Studio report

The MCP servers and Data Studio’s own connectors read the same public APIs (Google Ads API, Search Analytics API). So for the same account or property, fields, fixed dates and settings, the assistant’s numbers and your chart should agree, and when they don’t, the cause is findable. This is a method, not a result: I haven’t run it on a client account.

Two rows of five boxes: for Google Ads, Claude or ChatGPT and the Google Ads MCP server point into the Google Ads API, as do Data Studio's Google Ads connector and your chart; for Search Console, the same shape around the Search Analytics API; a strip below lists what to match: same account or property, same fields, fixed dates, same aggregation and search type
Both paths read the same Google API. Match the inputs and the numbers should agree.

Google Ads, in five steps:

  1. Fix the dates. Use 1–30 September 2026, not “last 30 days”, which excludes today and follows the account’s time zone.
  2. One account, two metrics, one dimension. Cost and clicks by campaign, on one account, not a manager-account roll-up.
  3. Build the chart on Data Studio’s Google Ads connector (connecting Google Ads to Data Studio), then refresh the data source: Google Ads data refreshes every 12 hours.
  4. Ask the assistant for the same table and the exact GAQL query it ran; look for a WHERE or LIMIT you didn’t ask for. Cost comes back as cost_micros: ask how it converted it.
  5. Compare row by row in the worksheet, with the Google Ads UI as the tiebreak.


Search Console, in five steps:

  1. Match the aggregation. Data Studio’s Site Impression and URL Impression tables correspond to the API’s byProperty and byPage. Ask for the one your table uses, with the same search type.
  2. Avoid the last three days. Data takes 2–3 days and the newest can be preliminary.
  3. Remember the time zone. Search Console dates are Pacific time.
  4. Compare totals, not summed query rows. Anonymised queries count in totals but have no row in the API.
  5. Check the row limit the assistant used: the API returns 1,000 rows unless asked for more.



When the numbers differ, start here:

Source Symptom Likely cause How to check
Google Ads Totals off by about a day A relative range, in the account’s time zone Fixed dates on both sides
Google Ads Extra rows from the assistant Zero-impression rows: Data Studio’s connector hides them Filter impressions > 0
Google Ads Cost differs, clicks match Manager-account currency conversion, or cost_micros converted wrongly One account; ask how it converted
Google Ads Conversions differ A different conversion column or attribution setting Ask which field it used
Search Console CTR or position higher on one side By property vs by page aggregation Match Site/URL Impression to the API
Search Console Recent days don’t match Fresh vs final data End the range three days back
Search Console Every day off a little Pacific-time dates vs your own time zone Compare against Search Console’s own report
Search Console Summed queries fall short of the total Anonymised queries (Data Studio may show one blank row) Compare chart totals
Search Console Assistant’s total is lower Row limit (1,000 by default; 50,000 rows a day export cap) Ask for the rowLimit it sent
Both Data Studio is the odd one out The 12-hour cache Refresh the data source

From Google’s API, Help and Data Studio docs, read 14 October 2026.

More on the cache in how data freshness works. The sheet has a parity worksheet for each source, with these causes as a drop-down:

The limits: write access, scopes, quotas and client data

Write access. Google’s Ads server is read-only today, with writes planned, and several hosted MCPs already write. One forum thread from July 2026 describes an account whose performance “tanked” after automating changes Claude suggested. Stay read-only unless you have an approval step, and pin the version.

Scopes. An adwords credential or a full webmasters token is a key to the account. Store it like a password and revoke it when the project ends.

Quotas. Explorer allows 2,880 operations a day on production accounts, over a sliding 24 hours. Search Console’s API adds a load quota to its per-site and per-user limits (1,200 queries a minute each); requests by both page and query cost the most.

Client data. Google’s README: “The MCP Server will expose your data to the Agent or LLM that you connect to it”; it also adds a header to your API calls, used “to improve the product”. Anthropic says to “only connect to trusted servers” and “be aware of prompt injections”. With a connector, the vendor is in the data path too. Governance is in client data and AI assistants for agencies. This isn’t legal advice, but I’d tick these first:

  • ☐ A read-only route, or write approvals switched on.
  • ☐ The scope checked for every server you installed.
  • ☐ The credential stored safely and revocable; login customer ID set to the right manager.
  • ☐ The client’s contract allows AI processing of their account data.
  • ☐ The number was parity-checked before it was shared.

Google Ads and Search Console templates to check against

The parity check compares against Google’s own connectors, so start from templates built on them:

The SEO Reporting Dashboard (GA4 + Search Console) — a Data Studio dashboard by Chloe Christine
Chloe Christine’s free SEO KPI report runs on the native Search Console and GA4 connectors, with clicks by month, impressions by month and a most popular pages table: the totals the Search Console check compares. Open the template · by Chloe Christine
The Search Console + Google Ads — a Data Studio dashboard by Ivan Palii
Ivan Palii’s template joins Google Ads and Search Console data by search query in one table, with impressions, clicks and CTR from each side. Open the template · by Ivan Palii

Where to go next

Frequently asked questions

Is there an official Search Console MCP server?

No. Google hasn’t published one. Every option is community code on GitHub or a connector’s hosted MCP.

Do I still need a Google Ads developer token?

No. Google sunset developer tokens on 9 September 2026; your access level now sits on your Google Cloud project. Sending a token is optional and ignored.

Can Google’s Google Ads MCP server change my campaigns?

Not today: its tools only read. But the credential it uses has the full Google Ads scope, and Google says write tools are planned.

Does it work in ChatGPT?

Not directly. ChatGPT needs a remote server, so use your own Cloud Run deployment or a connector’s app, plan permitting.

Is the Google Ads MCP server free?

The server is free and open source. You need a Cloud project with at least Explorer access (2,880 production operations a day) and an assistant that can run it, or your own Cloud Run deployment.

Why doesn’t Claude’s number match my Data Studio report?

Usually dates (time zone, relative ranges), aggregation (Site vs URL Impression), fresh data or the 12-hour cache. The table above lists the common causes.

Shopping Cart
Scroll to Top