MCP server · Google Ads · Updated September 3, 2026
Google Ads MCP Server: tools, setup and config for Claude, ChatGPT and Cursor
The Ryze AI Google Ads MCP server is a hosted remote MCP server that connects Claude, ChatGPT, Cursor, Claude Code or any MCP client to your Google Ads account with one OAuth login. It exposes 14 Google Ads tools — GAQL reporting, Keyword Planner research, Google’s recommendations and approval-gated campaign changes — with no developer token, no Cloud project and nothing to install. Add the URL below, sign in with Google, and you are live in about a minute.
https://connector.get-ryze.ai/mcp- Server name
- Ryze AI (Google Ads MCP)
- Endpoint
- https://connector.get-ryze.ai/mcp
- Transport
- Remote MCP over Streamable HTTP
- Auth
- OAuth 2.0 (Google sign-in, one Ryze workspace per connection)
- Hosting
- Hosted by Ryze AI — nothing to install or run
- Google Ads tools
- 14 (8 read · 6 write, approval-gated)
- Also on this endpoint
- Meta Ads, TikTok, GA4, Search Console, Shopify — 150+ tools
- Developer token
- Not required
- Price
- Free to connect · Paid Ads Autopilot $89/mo flat
- Updated
- September 3, 2026
The short version
- One URL,
https://connector.get-ryze.ai/mcp, works in Claude, ChatGPT, Claude Code, Cursor and any MCP client. - OAuth 2.0 with your Google login. No developer token, no Google Cloud project, no Python, no server to run.
- 14 Google Ads tools: 8 read (GAQL, Keyword Planner, recommendations, account tree) and 6 write, each approval-gated.
- Same endpoint carries Meta Ads, TikTok, GA4, Search Console and Shopify — 150+ tools in total.
- Free to connect. Paid Ads Autopilot is $89/mo flat if you want Ryze AI to run the optimizations for you.
01 — Overview
What this Google Ads MCP server does
MCP (Model Context Protocol) is the open standard AI assistants use to call external tools. A Google Ads MCP server turns your ad account into a set of those tools, so an assistant can pull a report, research keywords or change a budget from a chat instead of the Google Ads UI. Most Google Ads MCP servers on GitHub are local Python processes you configure with your own API credentials; this one is hosted, so the whole setup is a URL and a Google sign-in. If you want the broader picture — what an MCP is and which route to pick — start with the Google Ads MCP overview.
/01
Managed OAuth 2.0
Browser sign-in with Google, tokens refreshed server-side. No Cloud project, no client_secret.json, no developer-token application.
/02
GAQL query execution
runRawGaql runs any Google Ads Query Language report — campaigns, search terms, assets, change history — up to 10,000 characters per query.
/03
Keyword Planner research
Keyword ideas from seed keywords or a URL, plus historical volume, competition and top-of-page bid ranges for any keyword list.
/04
Google recommendations
List Google's optimization recommendations with estimated impact, then apply or dismiss them from the chat.
/05
Approval-gated writes
Mutates for campaigns, budgets, keywords, negatives and audiences run through per-tool approval. Deletes use a separate, explicit tool.
/06
Manager (MCC) aware
Discover every accessible customer, map a manager to its child accounts, and pass loginCustomerId for agency setups.
/07
Image asset upload
Push image assets straight into the Asset Library for Performance Max and responsive display ads.
/08
Six platforms, one URL
The same endpoint carries Meta Ads, TikTok, GA4, Search Console and Shopify toolsets — one login instead of six servers.
02 — Tool reference
The 14 Google Ads tools
Every tool takes an optional customerId (the 10-digit Google Ads account ID) and loginCustomerId (the manager account when you work through an MCC). Write tools are approval-gated and support validateOnly dry-runs where Google offers them.
| Tool | Access | What it does | Key parameters |
|---|---|---|---|
getAccountSummary | read | Spend, clicks, conversions, CPA and ROAS for a date range in one call. | customerId · period { startDate, endDate } · loginCustomerId |
getAccountHierarchy | read | Manager → sub-account tree for an MCC. | customerId · loginCustomerId |
listAccessibleCustomers | read | Every Google Ads account the signed-in login can reach. Call this first to find customer IDs. | none |
listConversionActions | read | Conversion actions with status, category and counting settings. | customerId · loginCustomerId |
listRecommendations | read | Google's optimization recommendations, with dismissed ones on request. | customerId · dismissed · loginCustomerId |
applyRecommendation | write | Apply one or more recommendations by resource name. | customerId · operations[] { resourceName } |
dismissRecommendation | write | Dismiss recommendations so Google stops resurfacing them. | customerId · operations[] { resourceName } |
generateKeywordIdeas | read | Keyword Planner ideas with monthly volume from a keyword seed, URL seed or both. | customerId · request { keywordSeed | urlSeed | keywordAndUrlSeed, geoTargetConstants, language, keywordPlanNetwork } |
generateKeywordHistoricalMetrics | read | Average monthly searches, competition and low/high top-of-page bids for a known keyword list. | customerId · request { keywords, geoTargetConstants, language, keywordPlanNetwork, historicalMetricsOptions } |
runRawGaql | read | Any GAQL query against reporting resources (campaign, ad_group, keyword_view, search_term_view, geographic_view, customer…). | customerId · query (≤ 10,000 chars) · loginCustomerId |
runRawMutate | write | Create or update campaigns, budgets, ad groups, criteria, ads and assets. Supports validateOnly dry-runs. | customerId · mutateOperations[] · validateOnly |
runRawMutateDelete | write | Remove resources. Irreversible in Google Ads, so it only runs on an explicit, item-by-item approved list. | customerId · mutateOperations[] { …Operation: { remove } } · validateOnly |
runRawCustomAudienceMutate | write | Create or update custom audiences (keyword, URL, app or place-category members) for targeting and PMax signals. | customerId · operations[] · validateOnly |
uploadImageAsset | write | Upload an image from a URL as an IMAGE asset and get back its resource name. | customerId · imageUrl · assetName |
The same endpoint exposes the Meta Ads, TikTok, GA4, Search Console and Shopify toolsets. The cross-platform list lives in the advertising API & MCP tools reference; the Meta side has its own page at Meta Ads MCP.
03 — Prerequisites
What you need before you start
You need
- A Google login with Standard or Admin access to the Google Ads account (or the manager account above it).
- A free Ryze AI account — created during the OAuth step if you don’t have one.
- An MCP client: Claude Pro, Team or Max (custom connectors are not on the free plan), ChatGPT Plus, Pro or Business with Developer mode, or Claude Code, Cursor, Windsurf, VS Code on any plan.
You don’t need
- A Google Ads API developer token — the hosted server brings its own API access. (What the token route involves.)
- A Google Cloud project, OAuth consent screen or
client_secret.json. - Python, Node, a virtual environment, a
.envfile or a process to keep running.
04 — Setup
Install in every MCP client
All routes end in the same OAuth screen: sign in with Google, choose your Ryze workspace, click Allow. One connection maps to one workspace, so agencies with several client workspaces reconnect per workspace. Screenshots for the Claude route are in how to connect Claude to Google & Meta Ads.
Claude (web and desktop)
- 01On claude.ai, click your avatar (bottom-left) → Settings.
- 02Open the Connectors tab and click Customize, then the + next to Connectors.
- 03Name: Ryze AI. Remote MCP server URL:
https://connector.get-ryze.ai/mcp. Click Add. - 04Click Connect on the new connector, sign in with Google, pick your workspace and click Allow Claude to connect.
- 05A green confirmation lists the available tools. Start a new chat and ask your first question.
Requires Claude Pro, Team or Max. The Claude desktop app uses the same Settings → Connectors flow; if you prefer the config file, use the mcp-remote entry under “Claude Desktop config file” below.
ChatGPT
- 01Settings → Apps. Under Advanced settings, turn on Developer mode.
- 02Click Create app. Name: Ryze AI. MCP server URL:
https://connector.get-ryze.ai/mcp— choose Server URL, not Tunnel. - 03Authentication: OAuth. Tick the acknowledgment and click Create.
- 04On the authorization page choose Sign in with Ryze AI, pick your workspace and click Allow.
- 05Start a new chat: “Pull the last 7 days of Google Ads spend and break it down by campaign.”
Requires a ChatGPT plan that supports apps and connectors (Plus, Pro or Business).
Claude Code
claude mcp add --transport http ryze https://connector.get-ryze.ai/mcpThen run /mcp inside Claude Code to complete the OAuth sign-in. Add --scope user to make it available in every project.
Cursor, Windsurf and any mcp.json client
{
"mcpServers": {
"ryze": {
"url": "https://connector.get-ryze.ai/mcp"
}
}
}Save, then approve the OAuth prompt the client opens. Windsurf uses the key serverUrl instead of url.
VS Code (GitHub Copilot agent mode)
{
"servers": {
"ryze": {
"type": "http",
"url": "https://connector.get-ryze.ai/mcp"
}
}
}Claude Desktop config file (optional)
{
"mcpServers": {
"ryze": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://connector.get-ryze.ai/mcp"]
}
}
}macOS: ~/Library/Application Support/Claude/claude_desktop_config.json · Windows: %APPDATA%\Claude\claude_desktop_config.json. Restart Claude Desktop; the first call opens the browser for OAuth. Most people won’t need this — Settings → Connectors does the same without Node. More in the Claude Desktop Google Ads config guide.
05 — Usage
What to ask once connected
Reporting
- >“Pull the last 7 days of Google Ads spend and break it down by campaign.”
- >“Compare this week's CPA to last week's by campaign. What changed?”
- >“Build a weekly Google Ads report and flag anything I should act on.”
Wasted spend
- >“Which campaigns wasted the most spend in the last 30 days?”
- >“List search terms with cost over $100 and zero conversions this month, then add them as negatives.”
- >“Show ad groups with CTR under 1% and spend over $50 in the last 14 days.”
Keyword research
- >“Generate keyword ideas for 'ai ad management' in the US and show monthly volume.”
- >“Get historical metrics for these 20 keywords: average searches, competition, top-of-page bid.”
- >“Which of my Search campaigns cover none of the top 50 ideas for 'google ads automation'?”
Changes (approval-gated)
- >“Raise the budget on the top-ROAS campaign by 20%, validate first.”
- >“Apply Google's 'add negative keywords' recommendations, but show me the list first.”
- >“Pause every ad group with CTR under 1% and spend over $50 this month.”
Ready-made audit workflows: the full Google Ads audit with Claude MCP, competitor analysis over MCP, automation recipes and the media buyer’s guide to Claude.
06 — GAQL examples
Queries you can paste into the chat
You rarely need to write GAQL — the assistant does it. When you want exact control, paste a query and the server runs it through runRawGaql. Three that come up daily:
Campaign performance, last 30 days
SELECT
campaign.name,
campaign.status,
metrics.cost_micros,
metrics.clicks,
metrics.conversions,
metrics.conversions_value
FROM campaign
WHERE segments.date DURING LAST_30_DAYS
AND campaign.status = 'ENABLED'
ORDER BY metrics.cost_micros DESC
LIMIT 25Costs return in micros — divide cost_micros by 1,000,000.
Search terms that spent $100+ with zero conversions
SELECT
search_term_view.search_term,
campaign.name,
ad_group.name,
metrics.cost_micros,
metrics.clicks,
metrics.conversions
FROM search_term_view
WHERE segments.date DURING LAST_30_DAYS
AND metrics.conversions = 0
AND metrics.cost_micros > 100000000
ORDER BY metrics.cost_micros DESC100000000 micros = $100. Feed the result to runRawMutate as negative keywords.
Device breakdown, last 7 days
SELECT
segments.device,
metrics.impressions,
metrics.clicks,
metrics.cost_micros,
metrics.conversions
FROM campaign
WHERE segments.date DURING LAST_7_DAYS
ORDER BY metrics.cost_micros DESCSegment any campaign report by segments.device, segments.date or segments.ad_network_type.
07 — Compare
Hosted vs official vs self-hosted
| What you operate | Ryze AI hosted server | Google’s official MCP | Open source (e.g. GoMarble) |
|---|---|---|---|
| Runtime | None — remote HTTP | Local process you run | Local Python venv you run |
| Credentials you manage | Google sign-in only | Developer token + Cloud OAuth app | Developer token + client_secret.json + .env |
| Google Ads API quota | Handled by Ryze | Your token: Basic access 15,000 ops/day | Your token: Basic access 15,000 ops/day |
| When the API version changes | Ryze updates the server | You update the server | You wait for a repo update |
| Platforms | Google Ads + Meta, TikTok, GA4, Search Console, Shopify | Google Ads only | Google Ads only |
| Write approval controls | Per-tool, on by default | Whatever your OAuth scopes allow | Varies by project |
Self-hosting is the right call when the data must never leave your machine or you are building your own agent on top of the raw API. For that route: Google’s official MCP setup, local vs remote MCP servers, REST API vs MCP and the ranked best MCP servers for Google Ads.
08 — Security & permissions
Safe by default
OAuth 2.0 only
You sign in on Google's page. Your password never touches Ryze, and tokens are refreshed server-side.
One workspace per connection
Each connection is authorized against a single Ryze workspace, chosen on the consent screen. Switching workspaces means reconnecting and starting a new chat.
Approval-gated writes
Read tools are automatic. In Claude, open Settings → Connectors → Ryze AI and keep every write and delete tool on 'Needs approval' — the recommended default for live accounts.
Deletes are separate and explicit
Google Ads removals cannot be undone, so runRawMutateDelete only runs on an item-by-item approved list. Pausing through runRawMutate is the reversible path.
Revoke any time
Remove access from your Google account's third-party permissions or from Workspace Settings → Integrations in Ryze.
Policies
Read the MCP privacy policy, MCP terms, security policy and MCP permissions best practices.
09 — Quotas & limits
What to know before a heavy session
| Developer token & daily quota | Not yours to manage — the hosted server runs on Ryze AI's Google Ads API access. Self-hosted servers on a Basic-access token get 15,000 API operations per day (Google's published quota, September 2026). |
| GAQL query size | Up to 10,000 characters per runRawGaql call. |
| Keyword Planner | Google rate-limits planning methods to about 1 request per second per customer ID, so bulk keyword pulls run sequentially. |
| Change history | change_event retains 30 days. Use an explicit change_date_time range or LAST_14_DAYS. |
| Money fields | cost_micros, average_cpc, amount_micros and bids are micros: divide by 1,000,000. Currency is customer.currency_code. |
| Write operations | Mutates accept validateOnly for dry-runs. Updates need an update_mask listing every changed field. Removals go through runRawMutateDelete only. |
| Media | Images upload from a URL via uploadImageAsset (1.91:1, 1:1 and 4:5 map to different PMax slots). Video assets reference a YouTube ID; the server does not upload video files. |
| Client plans | Claude custom connectors: Pro, Team or Max. ChatGPT connectors: Plus, Pro or Business with Developer mode. |
10 — Troubleshooting
Common errors and the fix
| Symptom | Cause | Fix |
|---|---|---|
| Tools don't show up in the chat | The chat was opened before the connector existed. | Start a new chat — Claude and ChatGPT bind connectors when a conversation starts. |
| No 'custom connector' option in Claude | Free Claude plan. | Custom connectors need Claude Pro, Team or Max. ChatGPT needs Plus, Pro or Business with Developer mode on. |
| "customerId is required" | No account chosen yet. | Ask for accessible accounts first (listAccessibleCustomers), then name the account or pass its ID. |
| UNRECOGNIZED_FIELD on a GAQL query | The field belongs to another resource or API version. | Switch resource — e.g. performance_label exists only on ad_group_ad_asset_view — or drop the field. |
| "start date is too old" on change history | change_event keeps 30 days and LAST_30_DAYS resolves just outside it. | Use an explicit change_event.change_date_time range or DURING LAST_14_DAYS. |
| Costs look a million times too big | Money metrics are micros. | Divide cost_micros, average_cpc and amount_micros by 1,000,000. Currency comes from customer.currency_code. |
| A write action 'did nothing' | It is waiting for your approval. | Approve the tool call in the chat, or review the tool's setting under Settings → Connectors → Ryze AI. |
| Data from the wrong client account | The connection is authorized to another workspace. | Each connection is one Ryze workspace. Reconnect, pick the right workspace, and start a new chat. |
| PERMISSION_DENIED or account not found | The Google login lacks access, or the manager ID is missing. | Sign in with a user that has Standard or Admin access; pass loginCustomerId for MCC child accounts. |
Still stuck? Email support@get-ryze.ai. Agencies juggling many accounts: MCP config for multiple ad accounts. Meta-side errors: troubleshooting the Meta Ads MCP connection.
11 — FAQ
Google Ads MCP server questions
What is the Google Ads MCP server?
It is an MCP (Model Context Protocol) server that exposes a Google Ads account as tools an AI assistant can call. Ryze AI's Google Ads MCP server is hosted and remote: you add one URL to Claude, ChatGPT, Cursor or Claude Code, sign in with Google via OAuth, and the assistant can run GAQL reports, Keyword Planner research, Google's recommendations and approval-gated changes.
What is the Google Ads MCP server URL?
The server URL is https://connector.get-ryze.ai/mcp. It is a remote MCP server over Streamable HTTP with OAuth 2.0. The same endpoint serves the Google Ads, Meta Ads, TikTok, GA4, Search Console and Shopify toolsets, so one connector covers the whole ad stack. Each connection is authorized against one Ryze workspace.
Do I need a Google Ads API developer token to use this MCP server?
No. The hosted server runs on Ryze AI's own Google Ads API access. You sign in with a Google account that has Standard or Admin access to the Google Ads account and you are done. Self-hosted servers such as Google's official MCP or the open-source GoMarble server require your own developer token, a Google Cloud OAuth app and a local Python runtime.
Which MCP clients work with the Google Ads MCP server?
Any client that supports remote MCP over HTTP with OAuth: Claude web and desktop (Pro, Team or Max plan), ChatGPT (Plus, Pro or Business with Developer mode), Claude Code, Cursor, Windsurf, VS Code and Gemini CLI, plus agent frameworks such as the Claude Agent SDK, OpenAI Agents SDK, LangChain, CrewAI and n8n.
How many Google Ads tools does the server expose?
14 Google Ads tools: 8 read tools (account summary, account hierarchy, accessible customers, conversion actions, recommendations, keyword ideas, keyword historical metrics and raw GAQL) and 6 write tools (apply and dismiss recommendations, raw mutate, raw delete, custom audiences and image asset upload). The full endpoint carries 150+ tools across six platforms.
Can the MCP server change my campaigns, or only read data?
Both. Read tools work the moment OAuth completes. Write tools — runRawMutate, applyRecommendation, runRawCustomAudienceMutate and the rest — are approval-gated: in Claude you set each tool to 'Needs approval' under Settings → Connectors → Ryze AI. Deletes live in a separate tool, runRawMutateDelete, because Google Ads removals are irreversible; it only runs on an explicit item-by-item list.
How do I run a GAQL query through the MCP server?
Ask in plain English or paste GAQL directly. The runRawGaql tool accepts any query up to 10,000 characters against reporting resources such as campaign, ad_group, keyword_view, search_term_view and geographic_view. Money fields return in micros (divide by 1,000,000), and change-history queries need an explicit date range inside the last 30 days.
Does the Google Ads MCP server support manager (MCC) accounts?
Yes. listAccessibleCustomers returns every customer ID the signed-in login can see, getAccountHierarchy maps a manager account to all of its child accounts, and every tool accepts loginCustomerId for the manager alongside customerId for the child account you want to query or change.
Can I do keyword research with the Google Ads MCP server?
Yes. generateKeywordIdeas takes a keyword seed, a URL seed or both, plus geo targets, language and network, and returns Keyword Planner ideas with search volume. generateKeywordHistoricalMetrics returns average monthly searches, competition and top-of-page bid ranges for a keyword list you already have. Google limits Keyword Planner methods to about one request per second per customer ID.
What does the Google Ads MCP server cost?
Connecting is free — a Ryze AI account costs nothing to create and the connector has no per-call fee. Paid Ads Autopilot is $89/month flat with a 7-day free trial if you want Ryze AI to run the optimizations for you. On the client side you need a Claude plan that allows custom connectors (Pro, Team or Max) or a ChatGPT plan with connectors (Plus, Pro or Business).
Is the Google Ads MCP server secure?
Access is OAuth 2.0 only, so your Google password never touches Ryze. Each connection is scoped to one Ryze workspace, write and delete tools are approval-gated by default, and you can revoke access at any time from your Google account permissions or from Workspace Settings → Integrations in Ryze. The MCP privacy policy, MCP terms and security policy are linked on this page.
Why doesn't Claude see the Google Ads tools after I connected?
Start a new chat. Claude and ChatGPT bind connectors when a conversation starts, so an existing chat keeps its original tool set. If the connector option is missing entirely, you are on a free Claude plan — custom connectors require Pro, Team or Max. Finally, confirm the connector shows Connected under Settings → Connectors.
How is this different from Google's official Google Ads MCP server?
Google's official MCP is built for developers: you supply a Google Ads API developer token, configure a Google Cloud OAuth app, run the server locally and get Google Ads only. The Ryze AI server is hosted, needs no credentials beyond a Google sign-in, adds Meta, TikTok, GA4, Search Console and Shopify on the same endpoint, and ships approval controls for every write.
Can I use the MCP server with several Google Ads accounts or clients?
Yes. listAccessibleCustomers lists every account the login can reach, and you pass customerId on each call to pick one. Agencies working through a manager account pass loginCustomerId for the MCC. One connection maps to one Ryze workspace, so when you switch workspaces, reconnect or start a new chat so the new context applies.
12 — Compatibility
Works in every MCP client
13 — Related
Keep reading
- Google Ads MCP — overview and options
- Meta Ads MCP server
- Connect Claude to Google & Meta Ads (screenshots)
- Best MCP for Google Ads — 7 servers ranked
- How to connect Google Ads to Claude MCP
- Google Keyword Planner MCP for Claude
- MCP tools for ad campaign reporting
- Will connecting AI to your ads account get you banned?
One OAuth login · 14 Google Ads tools · Live in ~60 seconds
Add Google Ads to your AI today.
Free to connect. Upgrade to Paid Ads Autopilot ($89/mo flat, 7-day free trial) when you want Ryze AI to run the optimizations for you, 24/7.
2,000+ clients · 700+ agencies · $500M+ managed · No dev token · No server to run

