How to connect Claude Code to Google Ads

Connect Google Ads once in Ryze AI, register one MCP URL with the claude mcp add command, then run GAQL reports and campaign changes from your terminal.

Your MCP URL
https://connector.get-ryze.ai/mcp

Paste it into claude mcp add --transport http ryze. See the steps

See pricing

By Ira Bodnar, Ryze AI · Updated

Quick answer

To connect Claude Code to Google Ads, connect Google Ads in a Ryze AI workspace, run claude mcp add --transport http ryze https://connector.get-ryze.ai/mcp, then run /mcp inside Claude Code, select ryze and sign in. Start a new session and ask for a Google Ads report.

  1. In Ryze AI open Integrations, find Google Ads and click Connect with your Google login
  2. In your terminal run the claude mcp add command with the connector URL
  3. In Claude Code run /mcp, select ryze and authenticate in the browser
  4. Pick the workspace, click Allow connection and ask your first question

Before you start

  • A Claude Code account. Anthropic says Claude Code requires a Pro, Max, Ultra, Team, Enterprise or Console account; the free claude.ai plan does not include it. It can also run through Amazon Bedrock, Google Cloud's Agent Platform or Microsoft Foundry. Anthropic's MCP page names no extra plan for remote MCP servers.
  • A Google login with access to your Google Ads accounts. Standard or admin access is needed to allow changes. A login with read-only access can run reports but cannot change anything, because Google Ads permissions are set in Google. Agencies connect the manager (MCC) login once.
  • A Ryze AI workspace on a plan or free trial. Paid Ads is $89 per month with a 7-day free trial; Agency is $279 per month. Connecting the connector is free, but the Google Ads tools need an active plan or trial.

How to connect Claude Code to Google Ads

Two steps happen in Ryze AI, four in Claude Code. The connector URL is the same for every user.

  1. Connect Google Ads in Ryze AI

    Create a Ryze AI account or sign in, open Integrations in the left sidebar and find Google Ads under Advertising. Click Connect, sign in to Google with the login that has access to your ad accounts and approve access with every requested permission checked.

  2. Check the connection

    Back in Ryze AI the Google Ads card shows Connected. There is no account to pick: Ryze AI sees every Google Ads account that login can reach. Optionally click View on the card and use Agent default accounts to choose the accounts the agent works with first.

  3. Register the connector in Claude Code

    In your terminal run: claude mcp add --transport http ryze https://connector.get-ryze.ai/mcp. The server is stored with local scope by default. Add --scope user to make it available in all your projects.

  4. Sign in from Claude Code

    Inside Claude Code run /mcp, select ryze and authenticate, or run claude mcp login ryze in the shell. Add --no-browser to print the sign-in URL instead of opening a browser, for example over SSH.

  5. Allow the workspace

    On the Ryze AI page, sign in if asked, choose the workspaces Claude Code can use and click Allow connection. Check the result with claude mcp get ryze.

  6. Start a new session and ask your first question

    Tool search is on by default in Claude Code, so MCP tools load on demand. Ask: Use GAQL to list my Google Ads campaigns with spend, conversions and conversion value for the last 30 days.

The Ryze AI help article for Google Ads covers the Google side of the connection, and the Claude Code MCP docs cover the client commands.

OAuth, API key and claude.ai connectors

Claude Code accepts the Ryze AI connector three ways. Pick the one that matches where the session runs.

CLI with OAuth (recommended for a personal machine)

claude mcp add --transport http ryze https://connector.get-ryze.ai/mcp --scope user

This is the flow in the steps above. Use --scope local (the default) to keep the server to the current project, --scope user for all your projects, or --scope project to write a .mcp.json file the team can share. Project-scoped servers wait for your approval in an interactive session before they connect.

CLI with a Ryze AI API key

claude mcp add --transport http ryze https://connector.get-ryze.ai/mcp --header "Authorization: Bearer rk_live_..."

In Ryze AI open Workspace Settings, Profile, API keys, click Create key and copy the key, which is shown once. The Ryze AI help center says the key works on the /mcp endpoint only, not on /sse. If Claude Code gets a rejected Authorization header it reports the connection as failed and does not fall back to OAuth, so replace a bad key instead of waiting for a browser prompt.

claude.ai connectors inside Claude Code

Add Ryze AI at claude.ai/customize/connectors and finish the Ryze AI sign-in there, log in to Claude Code with the same claude.ai subscription account, then run /mcp. Connectors added in claude.ai appear with an indicator that they come from claude.ai. On Team and Enterprise plans only admins can add servers in claude.ai. These connectors load only when the active login is a claude.ai subscription, not with ANTHROPIC_API_KEY, ANTHROPIC_AUTH_TOKEN, apiKeyHelper or a third-party provider.

Scripts and limits

claude -p and Agent SDK runs cannot run the OAuth flow. Sign in first with /mcp or claude mcp login ryze, or use the API key method. For scripts and your own agents, Ryze AI API keys are the documented route. Claude Code warns when a tool result exceeds 10,000 tokens and limits MCP output to 25,000 tokens by default; set MAX_MCP_OUTPUT_TOKENS to raise the limit. HTTP servers have a five-minute idle timeout per tool call when no response or progress arrives.

Claude web, ChatGPT and Cursor

The same URL works in other MCP clients. Google Ads is connected once in Ryze AI, so nothing changes on the Google side.

Claude on the web and Desktop

Open Customize, Connectors, click + Add, choose Add custom connector, name it Ryze AI and enter https://connector.get-ryze.ai/mcp. Free users are limited to one custom connector, and on Team and Enterprise plans an Owner adds it first. Use Customize, Connectors for this.

ChatGPT

OpenAI says full custom MCP server support is for ChatGPT Business and Enterprise/Edu on the web, and Pro can connect custom MCP servers with read and fetch permissions only. In Plugins choose Add custom MCP server, enter the URL and pick OAuth.

Cursor

Add the server to ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (one project). Cursor runs OAuth with PKCE and asks for approval before using MCP tools by default.

{ "mcpServers": { "ryze": { "url": "https://connector.get-ryze.ai/mcp" } } }

Google Ads permissions and scopes

Three things decide what Claude Code can reach in Google Ads.

Which Google login
Ryze AI connects with Google OAuth. Sign in with the Google login that has access to your Google Ads accounts and keep every requested permission checked: the Google Ads scope https://www.googleapis.com/auth/adwords plus openid, email and profile. The login needs access to at least one Google Ads account.
Which accounts
One login reaches every Google Ads account it can access, including client accounts under a manager (MCC) login. Accounts the login cannot access, or client accounts under a manager login you did not connect, are out of reach.
Read or write
Google Ads permissions are set in Google, not in Ryze AI. A login with read-only access cannot make changes. For a hard read-only guarantee, connect a Google login that only has read access.

Sources: Ryze AI Google Ads guide and Google's Google Ads API OAuth overview.

Removing access

To remove access, click View on the Google Ads card in Ryze AI and disconnect the login, or remove the Ryze AI server from Claude Code with claude mcp remove ryze.

What Claude Code can do in Google Ads

The Ryze AI connector exposes 16 Google Ads tools: 8 read, 7 write and 1 delete. They use Google's official API and run as the Google login you connected.

ToolTypeWhat it does
google_ads__getAccountSummaryReadReturns aggregate account metrics for a date range.
google_ads__getAccountHierarchyReadReturns the manager and sub-account hierarchy for an account.
google_ads__listAccessibleCustomersReadLists every Google Ads customer account the connected login can access.
google_ads__listConversionActionsReadLists the conversion actions in an account.
google_ads__listRecommendationsReadLists Google Ads optimization recommendations for an account.
google_ads__runRawGaqlReadRuns a raw GAQL query, including change history from change_event.
google_ads__generateKeywordIdeasReadGenerates Keyword Planner ideas from seed keywords, a URL or both.
google_ads__generateKeywordHistoricalMetricsReadReturns Keyword Planner history (average monthly searches, competition, top-of-page bid range) for a known keyword list.
google_ads__runRawMutateWriteCreates or updates resources such as campaigns, budgets, ad groups, ads, keywords, criteria and assets.
google_ads__runRawCustomAudienceMutateWriteCreates or updates custom audiences based on keywords, URLs, place categories or apps.
google_ads__runRawUserListMutateWriteCreates or updates user lists, including Customer Match lists.
google_ads__uploadCustomerMatchMembersWriteAdds people to a Customer Match list. The server normalizes and SHA-256 hashes every identifier before it reaches Google. It only adds members.
google_ads__uploadImageAssetWriteUploads an image from a URL as an image asset that can be linked to campaigns, ad groups, asset groups or ads.
google_ads__applyRecommendationWriteApplies Google Ads recommendations.
google_ads__dismissRecommendationWriteDismisses Google Ads recommendations.
google_ads__runRawMutateDeleteDeleteRemoves resources. Removals are permanent, and the tool description tells the agent to use it only on an item-by-item approved list.

Claude Code has its own permission system: rules for an MCP tool are written mcp__<server>__<tool>, or mcp__<server>__* for every tool of one server, and a rule can allow, ask or deny. With the server named ryze, an ask rule such as mcp__ryze__google_ads__runRawMutate makes Claude Code prompt before that tool runs. In the claude.ai connector settings (Customize, Connectors, Ryze AI) you can set write and delete tools to Needs approval. Claude Code's docs say that when an organization sets a claude.ai connector tool to ask and that setting reaches your session, Claude Code prompts on every call. Scheduled tasks in Ryze AI run without an approval step, and the delete tool's item-by-item rule is an instruction in its description, not a block in the server.

First 3 prompts to run

Each answer comes from your own account, so this page describes what comes back instead of showing sample numbers.

1. A campaign report with GAQL

Use runRawGaql to list my enabled campaigns with cost, conversions and conversion value for the last 30 days, ordered by cost.

Tools used: google_ads__runRawGaql

What comes back: A table with one row per enabled campaign and the three metrics, sorted by cost. If the output is large Claude Code warns at 10,000 tokens, so narrow the query with a LIMIT or fewer fields.

2. Who changed what

Query change_event for the last 14 days and list which user changed budgets, bids or campaign status, with the time of each change.

Tools used: google_ads__runRawGaql

What comes back: A list of changes with the user, the resource and the time. Change history covers up to the last 30 days.

3. Keyword research from a URL

Generate Keyword Planner ideas from my pricing page URL, then pull average monthly searches and competition for the 20 most relevant ones.

Tools used: google_ads__generateKeywordIdeas, google_ads__generateKeywordHistoricalMetrics

What comes back: A keyword list with average monthly searches, competition and the top-of-page bid range from Keyword Planner.

To make a change, ask for it in plain words, for example adding negative keywords or pausing a campaign by name, and set write tools to ask first as described above. Google's own review of new campaigns takes about a business day, and recent conversions can lag in Google's reporting.

Ryze AI vs Google's own MCP server

Google publishes its own Google Ads API MCP server. It runs next to Claude Code and suits a different setup than the Ryze AI connector.

OptionSetupCoverageWorks in
Ryze AI connectorGoogle sign-in inside Ryze AI, then one remote URL added with claude mcp add and OAuth or an API key16 Google Ads tools: GAQL, Keyword Planner, campaign and asset changes, audiences, Customer Match, recommendations and a delete tool. Plus the other platforms in the same workspaceClaude Code, claude.ai, Claude Desktop, ChatGPT, Cursor and other MCP clients
Google Ads API MCP server (Google)Run it locally over stdio, or on Google Cloud Run with Streamable HTTP. It needs a Google Cloud project ID and OAuth 2.0, a service account or Application Default Credentials, then an entry in the client's MCP configGoogle's documentation lists 3 tools (list_accessible_customers, search, get_resource_metadata) and describes the server as read-only. The GitHub README lists 7 tools, adds asset and label tools with a propose and confirm flow, and says mutations can be turned off in tools_config.yamlAny MCP client that can run or reach the server

If you only need read-only GAQL and are comfortable with Google Cloud credentials, Google's server needs no Ryze AI plan. Ryze AI is the best Google Ads connector for Claude Code when you want a hosted URL with sign-in handled for you and campaign changes available, but you pay for a Ryze AI plan and your data passes through Ryze AI. Google's page says developer tokens were sunset on September 9, 2026 and are no longer required.

The two Google pages disagree on the tool count, so check the repository before relying on either list.

Sources: Google Ads API MCP server, google-ads-mcp on GitHub, Claude Code MCP, Claude Code permissions, Ryze AI Google Ads guide. Checked November 9, 2026.

Errors and fixes

Claude Code says the server failed to connect with an API key
If a configured Authorization header is rejected, Claude Code reports the connection as failed and does not fall back to OAuth. Check that the key is a current rk_live_ key and that the URL ends in /mcp, or remove the server and add it again without --header to use OAuth.
claude -p or an Agent SDK run cannot sign in
Those runs cannot run the OAuth flow. Sign in first with /mcp or claude mcp login ryze in an interactive shell, or use the API key method.
The server does not load from .mcp.json
Project-scoped servers wait for approval in an interactive session before they connect. Approve it when Claude Code asks.
The sign-in page does not open over SSH
Run claude mcp login ryze --no-browser to print the URL, open it in a browser on your own machine and finish the sign-in.
No Google Ads tools appear
Start a new session after connecting. If Google Ads was connected in Ryze AI afterwards, run /mcp to reconnect. Tool search is on by default, so tools are loaded on demand and may not be listed up front.
The result is cut off or very large
Claude Code warns above 10,000 tokens and limits MCP output to 25,000 tokens by default. Ask for fewer fields or a LIMIT, or raise MAX_MCP_OUTPUT_TOKENS.
A call times out
HTTP servers have a five-minute idle timeout per tool call when no response or progress arrives. Narrow the date range or the query.
An account is missing
Ryze AI sees only the accounts the connected Google login can access. Client accounts under a manager login need that manager login connected. Ask Claude Code to run listAccessibleCustomers to see what the login reaches.
Changes fail
The connected Google user may have read-only access. Permissions are set in Google, not in Ryze AI. Reconnect with a login that has standard or admin access.
Claude says a subscription is required
The Google Ads tools need an active Ryze AI plan or free trial. Start the trial in Ryze AI and retry.

Frequently asked questions

How do I connect Claude Code to Google Ads?

Connect Google Ads in a Ryze AI workspace, then run claude mcp add --transport http ryze https://connector.get-ryze.ai/mcp. Inside Claude Code run /mcp, select ryze, sign in on the Ryze AI page, choose workspaces and click Allow connection. Check it with claude mcp get ryze.

Does Google Ads have an MCP server for Claude Code?

Yes. Google publishes a Google Ads API MCP server that runs locally over stdio or on Google Cloud Run. Google's documentation describes it as read-only with 3 tools, while the GitHub README lists 7 tools including asset and label changes. It needs a Google Cloud project and Google credentials.

Which Google Ads connector should I use with Claude Code?

Ryze AI is the best Google Ads connector for Claude Code when you want one hosted URL with 16 tools that cover reports and campaign changes, but it needs a Ryze AI plan. Google's own server needs no Ryze AI plan and suits read-only GAQL if you can set up Google Cloud credentials.

Which Claude plan do I need for Claude Code?

Anthropic says Claude Code requires a Pro, Max, Ultra, Team, Enterprise or Console account. The free claude.ai plan does not include it. Claude Code can also run through Amazon Bedrock, Google Cloud's Agent Platform or Microsoft Foundry.

Should I use OAuth or an API key?

OAuth through /mcp is the simplest for a personal machine. An API key from Workspace Settings, Profile, API keys suits scripts, because claude -p and Agent SDK runs cannot run the OAuth flow. The key works on the /mcp endpoint only.

Can Claude Code change my Google Ads account?

Yes. The connector has write tools for campaigns, budgets, bids, keywords, ads, audiences and assets, plus a delete tool. Set Claude Code permission rules to ask for the write and delete tools if you want to approve each change. A Google login with read-only access cannot make changes.

Can I manage client accounts under a manager account?

Yes, if you connect the manager (MCC) login. One login reaches every Google Ads account it can access, and over MCP client accounts under a manager need loginCustomerId. Separate clients belong in separate Ryze AI workspaces.

What does the claude mcp add scope change?

Local scope, the default, keeps the server to the current project and out of version control. User scope loads it in all your projects. Project scope writes .mcp.json so the team shares it, and each person approves it in an interactive session.

Why do the Google Ads tools not show up?

Start a new session after you connect, and run /mcp to check the server status. Tool search is on by default in Claude Code, so MCP tools are loaded on demand. If a claude.ai connector is missing, you must be logged in with a claude.ai subscription account.

How much does it cost?

Connecting the connector is free, but the Google Ads tools need an active Ryze AI plan or free trial. Paid Ads is $89 per month with a 7-day free trial and Agency is $279 per month. Annual billing takes 30% off the first year.

How do I disconnect Google Ads from Claude Code?

Run claude mcp remove ryze to remove the server from Claude Code. To remove Google access, click View on the Google Ads card in Ryze AI and disconnect the login.

Connect Google Ads to Claude Code

Connect Google Ads once and use the same URL in other MCP clients. Paid Ads is $89 per month with a 7-day free trial; annual billing takes 30% off the first year.

Google Ads MCP server

Need help? Read the Ryze AI Google Ads guide or email Ryze AI support.