Polynomial World

AI & LLMs

How to Connect Claude to Google Ads with MCP

Polynomial World 9 min read

You can connect Claude to your Google Ads account with Google’s official MCP server, google-ads-mcp. It runs on your computer, uses the Google Ads API, and lets Claude answer questions about your campaigns. It is read-only: Claude can report on your account but can’t change it.

Key facts (as of October 2026)

What does the Google Ads MCP server do?

MCP (Model Context Protocol) is a standard way for AI apps to call outside tools. The Google Ads MCP server is published by Google Ads Developer Relations on GitHub and on PyPI as google-ads-mcp (PyPI).

It gives Claude three tools (Google Ads API: MCP server):

ToolWhat it does
list_accessible_customersLists the customer IDs and account names your login can access
searchRuns GAQL (Google Ads Query Language) queries for metrics, budgets, and status
get_resource_metadataDescribes a resource type, such as campaign, and the fields you can query

You don’t need to know GAQL. Claude writes the queries for you. The server also gives Claude reference resources, such as the API’s lists of metrics and segments and the latest release notes (GitHub README).

Because it is read-only, this is a reporting assistant. If you want Claude to pause a campaign or change a bid, this server can’t do it.

What do you need before you start?

Google’s documentation lists these prerequisites (Google Ads API: MCP server):

  1. A Google Cloud project. You will need its project ID.
  2. The Google Ads API enabled in that project.
  3. An API access level of Explorer, Basic, or Standard on the project.
  4. Credentials: an OAuth 2.0 client ID and secret, or Application Default Credentials (ADC). A service account also works.
  5. Python tooling to run the server. Google’s docs use pipx. Many people use uvx instead (see Step 4).
  6. Claude Desktop, which runs local MCP servers on macOS and Windows (Model Context Protocol docs).

Do you still need a developer token?

No, not with the current version. Google’s developer token page says: “Developer tokens were sunset on September 9, 2026.” You can still send one in API headers, but it is “optional and ignored by the API servers” (Google Ads API: Developer token).

The MCP server page confirms tokens “are no longer required in the latest version of the Google Ads MCP server because API access levels are associated with the Google Cloud project” (Google Ads API: MCP server).

You may still see GOOGLE_ADS_DEVELOPER_TOKEN in the GitHub README’s config examples. The README now marks that step “(Optional)”. Follow Google’s developer docs and leave the token out.

Step 1: Set up the Google Cloud project

  1. Open the Google Cloud console and create a project, or pick an existing one. Note the project ID.
  2. Enable the Google Ads API for that project.
  3. Check the project’s access level.

There are four access levels (Google Ads API: Access levels):

Access levelAccountsDaily operationsHow you get it
TestTest accounts only15,000Automatic when you enable the API
ExplorerTest and production2,880 (production), 15,000 (test)Apply in the Cloud console’s upgrade section
BasicTest and production15,000Apply after completing brand verification
StandardTest and productionUnlimitedDetailed manual review, typically 10 business days

Test access can’t read your real account. For a small business asking Claude a handful of questions a day, Explorer is usually where you start. The server calls the Google Ads API, so your project’s daily limit applies to what Claude does.

Step 2: Create credentials

The README describes three ways to authenticate (GitHub README):

  • Application Default Credentials (ADC). The simplest option for one person on one computer.
  • A FastMCP OAuth proxy. For running the server as a web service, for example on Cloud Run.
  • An existing google-ads.yaml from the Google Ads Python client library.

For ADC, you need an OAuth client ID file from your Cloud project and the Google Cloud CLI (gcloud). The README’s command requests the Google Ads scope:

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

A browser window opens. Sign in with the Google account that has access to your Google Ads account. When it finishes, the command prints the path of the credentials file it saved. Copy that path. You need it in Step 4.

The README also shows a service-account version that uses --impersonate-service-account=SERVICE_ACCOUNT_EMAIL with the same scopes.

Since the sunset, the Cloud project that owns your OAuth client (or your service account) decides your access level (Google Ads API: Developer token). Use the same project from Step 1.

Step 3: Check that the server runs

Before you touch Claude, run the server once in a terminal. Google’s documented command uses pipx (Google Ads API: MCP server):

pipx run --spec git+https://github.com/googleads/google-ads-mcp.git google-ads-mcp

That runs the latest code from GitHub. To run a fixed release from PyPI instead, the README gives pipx run --spec "google-ads-mcp==X.Y.Z" google-ads-mcp.

If you use uv, uvx does the same job. The uv docs say uvx “invokes a tool without installing it” in a temporary, isolated environment (uv docs: Tools):

uvx google-ads-mcp

Google doesn’t document uvx for this server, but the package is on PyPI under the same name, so this works the same way as the pipx command. If the server starts and waits for input, it works. Stop it with Ctrl+C.

Step 4: Add the server to Claude Desktop

  1. In Claude Desktop, open Settings from the Claude menu (not your account settings inside the chat window).
  2. Go to the Developer tab and click Edit Config.
  3. This opens claude_desktop_config.json. On macOS it lives at ~/Library/Application Support/Claude/claude_desktop_config.json. On Windows it lives at %APPDATA%\Claude\claude_desktop_config.json (Model Context Protocol docs).

Add the server under mcpServers. With uvx:

{
  "mcpServers": {
    "google-ads-mcp": {
      "command": "uvx",
      "args": ["google-ads-mcp"],
      "env": {
        "GOOGLE_PROJECT_ID": "YOUR_PROJECT_ID",
        "GOOGLE_APPLICATION_CREDENTIALS": "/path/to/credentials.json"
      }
    }
  }
}

With pipx, as in Google’s 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"
      }
    }
  }
}

Replace the placeholders:

  • YOUR_PROJECT_ID: your Cloud project ID from Step 1.
  • /path/to/credentials.json: the full path printed in Step 2. On Windows, escape backslashes in JSON, for example C:\\Users\\you\\....

If you reach client accounts through a manager account, add "GOOGLE_ADS_LOGIN_CUSTOMER_ID": "YOUR_MANAGER_CUSTOMER_ID" to env. Claude can also pass a login_customer_id per request, and that value wins over the default (GitHub README).

  1. Save the file, then quit Claude Desktop completely and open it again. Claude Desktop only reads the config at startup.
  2. In a new chat, click the “Add files, connectors, and more” button at the bottom left of the message box, go to Connectors, then Manage connectors. You should see google-ads-mcp and its tools (Model Context Protocol docs).

What can you ask Claude?

Start with the sample prompts from Google’s README (GitHub README):

  • “What can the ads-mcp server do?”
  • “What customers do I have access to?”
  • “How many active campaigns do I have?”
  • “How is my campaign performance this week?”
  • “How many active campaigns do I have for customer id 1234567890?”

Then move to questions you would normally answer by building a report:

  • “List my Search campaigns with spend, clicks, and conversions for the last 30 days, sorted by spend.”
  • “Which ad groups had clicks but no conversions last month?”
  • “Show the daily budget and status of every enabled campaign.”

Claude asks for permission before it calls a tool. Read what it plans to run before you approve. For important numbers, check them against the Google Ads interface the first few times, using the same date range.

What can go wrong?

ProblemLikely causeFix
Server doesn’t appear in ClaudeJSON syntax error, or Claude wasn’t fully restartedValidate the JSON, quit Claude Desktop fully, reopen
uvx or pipx “not found”Claude Desktop can’t see the program on its pathUse the full path to the executable in command
Authentication errorsWrong credentials path, or the login lacks the adwords scopeRerun the gcloud command in Step 2 and update the path
Access level errors on real accountsThe project only has Test accessApply for Explorer access in the Cloud console
Daily limit reachedExplorer’s 2,880 production operations per dayAsk fewer, broader questions or apply for Basic
Empty results for a client accountAccess goes through a manager accountSet GOOGLE_ADS_LOGIN_CUSTOMER_ID

Claude Desktop writes MCP logs to ~/Library/Logs/Claude on macOS and %APPDATA%\Claude\logs on Windows. Files named mcp-server-SERVERNAME.log contain the server’s own output (Model Context Protocol docs).

Claude can also write a GAQL query that the API rejects. When that happens, ask it to check the fields with get_resource_metadata and try again.

How do you use it safely?

  • Know what the AI sees. Google’s README warns: “The MCP Server will expose your data to the Agent or LLM that you connect to it.” Only connect accounts you are allowed to share with your AI provider.
  • Protect the credentials file. It grants access to your Google Ads data. Keep it out of shared folders and code repositories, and never paste its contents into a chat.
  • Use a dedicated Cloud project. That keeps the quota and access level separate from other API work.
  • Expect a usage header. The README notes that the server adds a header to API calls so Google can collect usage data.
  • Don’t treat answers as audited reports. Use Claude to find questions worth asking, then confirm the numbers in Google Ads before you act.

Next steps

  • Cloud project created and project ID noted
  • Google Ads API enabled, access level is Explorer or higher
  • ADC credentials created with the adwords scope
  • Server starts with uvx google-ads-mcp or the pipx command
  • claude_desktop_config.json updated with placeholders replaced
  • Claude Desktop restarted and the tools are listed
  • First answers checked against the Google Ads interface

If you also want Claude to work on your website, see How to Connect WordPress to an AI Agent with MCP. Before you use Claude’s answers to change campaigns, run through the Google Ads Search Campaign Setup Checklist.

Related articles

AI & LLMs

How to Connect Claude to Meta Ads with MCP

Connect Claude to Meta's official ads MCP server as a custom connector, sign in with Facebook, ask for reports, and keep write actions under control.

9 min read