How to connect Codex to Google Ads

Connect Google Ads once in Ryze AI, register one MCP URL in Codex with codex mcp add, then run GAQL reports and campaign changes from the terminal, the desktop app or your editor.

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

Copies the URL. Use it with codex mcp add or in Codex Settings, MCP servers. See the steps

See pricing

By Ira Bodnar, Ryze AI · Updated

Quick answer

To connect Codex to Google Ads, connect Google Ads in a Ryze AI workspace, run codex mcp add ryze --url https://connector.get-ryze.ai/mcp, then run codex mcp login ryze, sign in and click Allow connection. Start a new Codex 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 a terminal run codex mcp add ryze with the connector URL
  3. Run codex mcp login ryze and click Allow connection on the Ryze AI page
  4. Run codex mcp list, then ask Codex your first Google Ads question

Before you start

  • A Codex account. OpenAI says Codex is included in ChatGPT Free, Go, Plus, Pro, Business, Edu and Enterprise plans. Its pricing page lists Free and Go with Codex in the desktop app only, subject to rollout, so use the desktop app steps below on those plans. Plus and higher add the CLI and the IDE extension. Codex also runs with an OpenAI API key in the CLI, SDK or IDE extension, billed at API pricing. OpenAI's MCP page names no extra plan for 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 Codex to Google Ads with the CLI

Two steps happen in Ryze AI and Google, four in Codex. 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. To pick the accounts the agent works with first, click View on the card and use Agent default accounts.

  3. Add the connector to Codex

    In a terminal run: codex mcp add ryze --url https://connector.get-ryze.ai/mcp. This registers a server named ryze in the Codex configuration, which the CLI, the desktop app and the IDE extension share.

  4. Sign in to the connector

    Run codex mcp login ryze. A browser tab opens on the Ryze AI page. Sign in if asked and click Allow connection. On a machine without a local browser, add --no-browser, open the printed URL on another device and paste the full redirect URL back into the terminal.

  5. Confirm that Codex sees the server

    Run codex mcp list, or type /mcp inside the Codex terminal interface, and check that ryze is listed. If the tools do not show up, start a new Codex session.

  6. Ask your first question

    Ask: Use GAQL to list my Google Ads campaigns with cost, conversions and conversion value for the last 30 days, ordered by cost.

The Ryze AI help article for Google Ads covers the Google side of the connection, and the Ryze AI help article on API keys and the MCP endpoint covers the connector URL.

Desktop app, IDE extension and config.toml

Codex reads one MCP configuration on all three local surfaces. Pick the route that matches how you work.

Codex CLI

codex mcp add ryze --url https://connector.get-ryze.ai/mcp codex mcp login ryze codex mcp list

This is the flow in the steps above. The three commands add the server, sign in with OAuth and list what is configured.

ChatGPT desktop app (Codex)

Open Settings, then MCP servers. Select Add server, enter the name ryze, choose Streamable HTTP and enter https://connector.get-ryze.ai/mcp. Save, then select Restart. Select Authenticate next to ryze and complete the Ryze AI sign-in. Type /mcp in the composer to view connected servers. This is the route for Free and Go plans.

Codex IDE extension

Open the gear menu, then MCP servers. Select Add server, enter the name ryze, choose Streamable HTTP and enter the connector URL. Save, then select Restart extension and select Authenticate to complete the Ryze AI sign-in.

config.toml with OAuth

[mcp_servers.ryze] url = "https://connector.get-ryze.ai/mcp"

Edit ~/.codex/config.toml, or a project .codex/config.toml in a trusted project, and add the table above. OAuth is the default authentication, so run codex mcp login ryze afterwards to sign in.

config.toml with a Ryze AI API key

[mcp_servers.ryze] url = "https://connector.get-ryze.ai/mcp" bearer_token_env_var = "RYZE_API_KEY"

Set the environment variable RYZE_API_KEY to your rk_live_ key and Codex sends it as a bearer token. Create the key in Ryze AI under Workspace Settings, Profile, API keys. This route suits scripts, because it needs no browser sign-in.

Timeouts and limits

The desktop app, the CLI and the IDE extension share one MCP configuration, so a server added in one place appears in the others after a restart. OpenAI's defaults are 10 seconds for startup (startup_timeout_sec) and 60 seconds for a tool call (tool_timeout_sec). Both can be raised per server, which helps when a large GAQL report runs long. OpenAI's MCP page does not cover Codex cloud tasks, and this page does not claim the connector works there.

[mcp_servers.ryze] url = "https://connector.get-ryze.ai/mcp" startup_timeout_sec = 20 tool_timeout_sec = 120

Other clients

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

Claude Code

Run claude mcp add --transport http ryze https://connector.get-ryze.ai/mcp --scope user, then /mcp inside Claude Code to sign in. The Ryze AI connector and the Google Ads tools are the same.

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.

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. OpenAI's MCP page also says ChatGPT on the web does not read your local Codex configuration.

Cursor

Add the server to ~/.cursor/mcp.json or .cursor/mcp.json.

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

Google Ads permissions and Codex settings

Two sides decide what Codex can reach in Google Ads: the Google login you connect in Ryze AI, and the Codex settings on your machine.

Which Google login
Ryze AI signs in through Google OAuth. Choose the login that already works in the Google Ads interface and leave every requested box checked. The request covers the Google Ads scope https://www.googleapis.com/auth/adwords along with openid, email and profile, and the login must reach at least one Google Ads account.
Which accounts
A single login covers all accounts it can open, client accounts under a manager (MCC) login among them. An account outside that reach stays invisible to Codex, and so does a client account whose manager login was never connected.
Read or write
Google decides who can edit, not Ryze AI. If the login only has read access, every change request fails. Connect a read-only login when you want a firm guarantee that Codex cannot touch the account.
Which tools Codex may call
Codex keeps an allow list and a deny list per server, enabled_tools and disabled_tools in config.toml. Use them to hide the write and delete tools from Codex entirely.

Removing access

To remove access, click View on the Google Ads card in Ryze AI and disconnect the login. To remove the connector from Codex, delete the [mcp_servers.ryze] table from config.toml or remove the server in Settings, MCP servers.

What Codex can do in Google Ads

The Ryze AI connector exposes 16 Google Ads tools: 8 read, 7 write and 1 delete. Calls go through Google's official API, and each one runs with the permissions of the Google login you connected.

ToolTypeWhat it does
google_ads__getAccountSummaryReadTotals for spend, clicks and the other account metrics over a date range you name.
google_ads__getAccountHierarchyReadShows which sub-accounts sit under a manager account.
google_ads__listAccessibleCustomersReadShows every customer account the connected Google login can open.
google_ads__listConversionActionsReadShows the conversion actions defined in an account.
google_ads__listRecommendationsReadShows the optimization recommendations Google has for an account.
google_ads__runRawGaqlReadRuns any GAQL query you write, change history from change_event included.
google_ads__generateKeywordIdeasReadReturns Keyword Planner ideas for seed keywords, a URL or both.
google_ads__generateKeywordHistoricalMetricsReadReturns average monthly searches, competition and the top-of-page bid range for keywords you already have.
google_ads__runRawMutateWriteCreates or edits campaigns, budgets, ad groups, ads, keywords, criteria and assets through a raw mutate.
google_ads__runRawCustomAudienceMutateWriteCreates or edits custom audiences built from keywords, URLs, place categories or apps.
google_ads__runRawUserListMutateWriteCreates or edits user lists, Customer Match lists included.
google_ads__uploadCustomerMatchMembersWriteAdds people to a Customer Match list, with every identifier normalized and SHA-256 hashed by the server before Google sees it. It cannot remove members.
google_ads__uploadImageAssetWriteFetches an image from a URL and stores it as an image asset for campaigns, ad groups, asset groups or ads.
google_ads__applyRecommendationWriteAccepts Google recommendations and applies them.
google_ads__dismissRecommendationWriteDismisses Google recommendations.
google_ads__runRawMutateDeleteDeleteRemoves resources for good. Its description asks the agent to use it only on a list you approved item by item.

Approvals in Codex

Codex controls approvals per server with default_tools_approval_mode, which takes auto, prompt, writes or approve. The value writes prompts for tools that are not marked read-only, which fits this connector because 8 of its 16 tools are reads. Per-tool overrides use tools.<tool>.approval_mode. 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.

[mcp_servers.ryze] url = "https://connector.get-ryze.ai/mcp" default_tools_approval_mode = "writes"

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. Spend by campaign for the last month

Run a GAQL query for enabled campaigns: name, cost, conversions and conversion value for the last 30 days, highest cost first. Keep it to the top 25 rows.

Tools used: google_ads__runRawGaql

What comes back: One row per campaign with the three metrics, highest cost first, capped at 25 rows so the call stays inside Codex's 60 second default timeout.

2. Find out who edited the account

Look at change_event for the past 14 days and tell me who changed budgets, bids or campaign status, and when.

Tools used: google_ads__runRawGaql

What comes back: Each change with the user, the resource touched and the time. Google keeps this history for up to 30 days.

3. Keyword ideas for a landing page

Take my pricing page URL as the seed for Keyword Planner ideas, then fetch average monthly searches and competition for the 20 closest matches.

Tools used: google_ads__generateKeywordIdeas, google_ads__generateKeywordHistoricalMetrics

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

When you want a change, describe it in plain words, such as adding negative keywords or pausing a named campaign, and set default_tools_approval_mode to writes beforehand as shown 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 Google Ads MCP server

Google publishes its own Google Ads API MCP server, and its GitHub repository mentions Codex CLI. The two options suit different setups.

OptionSetupCoverageWorks in
Ryze AI connectorGoogle sign-in happens in Ryze AI; Codex only needs one remote URL, added with codex mcp add and authorized by OAuth or an API key16 tools covering GAQL, Keyword Planner, campaign and asset edits, audiences, Customer Match, recommendations and one delete tool, plus the other platforms in the same workspaceCodex, Claude 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 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 notes Codex CLI compatibility handlingAny MCP client that can run or reach the server

Google's server costs no Ryze AI plan and fits read-only GAQL when you can handle Google Cloud credentials. The Ryze AI connector gives you a hosted URL and campaign edits, in exchange for a Ryze AI plan and your data passing 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.

Codex and Google Ads errors and fixes

codex mcp login ryze cannot open a browser
Use codex mcp login ryze --no-browser. Open the URL it prints on another device, finish the sign-in there and paste the full redirect URL back into the terminal.
The server is slow to start or fails at startup
Codex gives a server 10 seconds to start by default. Raise startup_timeout_sec on the ryze server in config.toml.
A report call times out
A tool call is cut off after 60 seconds by default. Shorten the date range, tighten the query or raise tool_timeout_sec on the server.
The server is missing in the desktop app or the extension
All three local surfaces read one configuration, yet each needs a restart after an edit. Restart the app or select Restart extension, then look in Settings, MCP servers.
No Google Ads tools are listed
Open a new Codex session after connecting. If you linked Google Ads in Ryze AI after adding the server, run codex mcp login ryze again before starting the session.
A tool result is too large
Cap it with tools.<tool>.output_token_limit in config.toml, or ask for fewer fields and a LIMIT clause in the GAQL query.
An ad account does not appear
Ryze AI only sees what the connected Google login can open. A client account under a manager needs that manager login connected. Have Codex call listAccessibleCustomers to see the reach.
Edits are rejected
The Google user you connected may only have read access. Google controls that, so reconnect with a login that has standard or admin access.
Codex cloud tasks do not use the server
OpenAI's MCP page does not cover Codex cloud tasks, so this guide stops at the CLI, the desktop app and the IDE extension.
Codex reports that a subscription is required
The Google Ads tools run only on an active Ryze AI plan or free trial. Start the trial in Ryze AI, then try again.

Frequently asked questions

How do I connect Codex to Google Ads?

Connect Google Ads in a Ryze AI workspace, then run codex mcp add ryze --url https://connector.get-ryze.ai/mcp and codex mcp login ryze. Sign in on the Ryze AI page, click Allow connection and check the result with codex mcp list.

Does Google Ads have an MCP server for Codex?

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 and mentions Codex CLI compatibility. It needs a Google Cloud project and Google credentials.

Which Google Ads connector should I use with Codex?

Ryze AI is the best Google Ads connector for Codex when one hosted URL with 16 tools for reports and campaign edits matters most, 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 plan do I need for Codex?

OpenAI says Codex is included in ChatGPT Free, Go, Plus, Pro, Business, Edu and Enterprise plans. Free and Go get Codex in the desktop app only, subject to rollout, while Plus and higher add the CLI and the IDE extension. An OpenAI API key also works in the CLI, SDK or IDE extension.

Should I use OAuth or an API key?

OAuth is the default in Codex, and codex mcp login ryze handles it. A Ryze AI API key from Workspace Settings, Profile, API keys suits scripts: set bearer_token_env_var to the name of an environment variable that holds the key.

Can Codex change my Google Ads account?

Yes, through 7 write tools and 1 delete tool that reach campaigns, budgets, bids, keywords, ads, audiences and assets. Put default_tools_approval_mode to writes in config.toml to approve each change. A Google login with read-only access cannot change anything.

Can I manage client accounts under a manager account?

Yes, once the manager (MCC) login is connected. That login reaches each account it can open, and over MCP a client account under a manager needs loginCustomerId. Keep separate clients in separate Ryze AI workspaces.

Does this work in the Codex desktop app and IDE extension?

Yes. The desktop app, the CLI and the IDE extension share one MCP configuration. In the app or extension open MCP servers, add a Streamable HTTP server named ryze with the connector URL, restart, and select Authenticate.

Does it work in Codex cloud tasks?

This guide does not claim that. OpenAI's MCP page does not cover Codex cloud tasks, so the steps here apply to the CLI, the desktop app and the IDE extension.

Why do the Google Ads tools not show up?

Start a new Codex session after you connect and check codex mcp list. If you connected Google Ads in Ryze AI after adding the server, run codex mcp login ryze again. Restart the desktop app or the extension after any configuration change.

How much does it cost?

Adding the connector costs nothing. The Google Ads tools need an active Ryze AI plan or 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 Codex?

Delete the [mcp_servers.ryze] table from config.toml, or remove the server under Settings, MCP servers. To cut Google access as well, click View on the Google Ads card in Ryze AI and disconnect the login.

Sources

Checked November 11, 2026.

Connect Google Ads to Codex

One Ryze AI connection gives Codex the 16 Google Ads tools. 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.