Skip to main content
Glama
scalably-io

google-ads-mcp

by scalably-io

Google Ads MCP

Read-only MCP server for the Google Ads API. Eleven tools cover discovery, GAQL reporting, resource schema, recommendations, keyword planning and forecasts, and change history for any account reachable under a manager account (MCC). We run this server in production for every ads client. Read-only is enforced at three layers: no mutate or apply service imports, an SDK method allowlist, and a GAQL-starts-with-SELECT guard.

Install

Claude Code:

claude mcp add google-ads \
  -e GOOGLE_ADS_DEVELOPER_TOKEN=your-token \
  -e GOOGLE_ADS_CLIENT_ID=your-client-id \
  -e GOOGLE_ADS_CLIENT_SECRET=your-client-secret \
  -e GOOGLE_ADS_REFRESH_TOKEN=your-refresh-token \
  -e GOOGLE_ADS_LOGIN_CUSTOMER_ID=1234567890 \
  -- uvx scalably-google-ads-mcp

Codex:

codex mcp add google-ads \
  --env GOOGLE_ADS_DEVELOPER_TOKEN=your-token \
  --env GOOGLE_ADS_CLIENT_ID=your-client-id \
  --env GOOGLE_ADS_CLIENT_SECRET=your-client-secret \
  --env GOOGLE_ADS_REFRESH_TOKEN=your-refresh-token \
  --env GOOGLE_ADS_LOGIN_CUSTOMER_ID=1234567890 \
  -- uvx scalably-google-ads-mcp

Claude Desktop: download google-ads-mcp.mcpb from the latest GitHub release and open it.

Related MCP server: Google Ads MCP

Setup

This is the heaviest setup in the gallery: expect up to two days waiting on developer token approval. One set of credentials, rooted at a manager account (MCC), can read any customer account linked under it, so there is no per-client configuration beyond linking an account to the MCC.

  1. Google Ads developer token. Sign in at ads.google.com under your manager account, go to Tools and Settings, API Center, and apply for a developer token. A new token starts on the Explorer access level, which Google grants after a review that can take a few days; discovery, query and recommendation tools work there. Basic access (a separate application) is needed for higher quotas and may be needed for the keyword-planning tools.

  2. Google Cloud OAuth client. In a Google Cloud project, enable the Google Ads API, then create an OAuth client ID of type Desktop app under APIs and Services, Credentials. Note the client ID and client secret, and add the https://www.googleapis.com/auth/adwords scope to the OAuth consent screen.

  3. Refresh token. Generate a refresh token once, as an admin user of the manager account, using Google's oauth2l tool or the generate_user_credentials.py example shipped with the google-ads Python library. Save the refresh token; it does not expire from normal use.

  4. Login customer ID. Use the 10-digit customer ID of the manager account itself (no hyphens) as GOOGLE_ADS_LOGIN_CUSTOMER_ID. Any client account accepts an invite to link under this manager account in its own Google Ads UI, after which google_ads_list_customer_clients sees it.

Tools (11)

Tool

What it does

google_ads_list_accessible_customers

List every customer_id the OAuth user has direct access to

google_ads_list_customer_clients

Walk the MCC hierarchy and return every child account

google_ads_query

Run a GAQL query against a specific customer account

google_ads_describe_resource

Schema (fields, metrics, segments) for a GAQL resource

google_ads_list_resources

Return the full catalog of GAQL resources

google_ads_recommendations

Read Google's optimization recommendations for a customer account

google_ads_keyword_ideas

Generate keyword ideas with search volume, competition and CPC estimates

google_ads_keyword_historical_metrics

Historical monthly search-volume and competition metrics for specific keywords

google_ads_keyword_forecast_metrics

Forecast KPIs for a proposed keyword plan

google_ads_change_events

Audit trail of who changed what, last 30 days

google_ads_change_status

Lightweight last-modified change tracker per resource

Configuration

Variable

Required

Purpose

GOOGLE_ADS_DEVELOPER_TOKEN

yes

Google Ads API developer token from the Ads API Center

GOOGLE_ADS_CLIENT_ID

yes

OAuth2 client_id for a Desktop-app credential

GOOGLE_ADS_CLIENT_SECRET

yes

OAuth2 client_secret paired with the client_id

GOOGLE_ADS_REFRESH_TOKEN

yes

Long-lived OAuth2 refresh_token for the adwords scope

GOOGLE_ADS_LOGIN_CUSTOMER_ID

yes

10-digit customer ID of the manager account (MCC), no hyphens

GOOGLE_ADS_API_VERSION

no

Google Ads API version to target, default v25

GOOGLE_ADS_USE_PROTO_PLUS

no

Use proto-plus message types, default true

GOOGLE_ADS_LOG_LEVEL

no

Python log level, default WARNING

Reply shape

Every tool returns JSON with status (succeeded, partial, no_op), operation, summary, target, result, proof, warnings, recovery. Failures surface as a tool error whose text is google_ads_request_failed: <message> <hint>. proof.apiVersion names the Google Ads API version used. proof.microsConverted is set on google_ads_query. A partial status means the result hit its configured bound (max_rows, page_size or limit); recovery.nextAction says how to continue.

Limits

google_ads_query responses are capped at 64 MB per call by the Google Ads API; split large date ranges across calls. KeywordPlanIdeaService (keyword ideas, historical metrics, forecasts) is rate-limited to 1 query per second and may require Basic Access if you get a permission error on the Explorer tier. google_ads_change_events covers up to 30 days back; google_ads_change_status covers up to 14 days back. metrics.cost_micros and other *_micros fields are 1 unit = $0.000001; google_ads_query emits a matching *_units field alongside when convert_micros is true (the default).

Verify

Each release lists the package version, the .mcpb sha256 and the production commit it was derived from in CHANGELOG.md. CI runs the tests and a clean install of the built wheel on every push.

Privacy Policy

This server runs locally, on your machine, under your own credentials. It collects no personal data, contains no telemetry, stores nothing persistently, and talks only to the vendor API it wraps. No third party, including Scalably, receives your data. Contact: hello@scalably.io. Canonical copy: https://scalably.io/connector-privacy.html

License

MIT. Copyright Scalably.

Available Tools

11 tools

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 11 tool updatesv1.0.0
    • First observedgoogle_ads_change_events
    • First observedgoogle_ads_change_status
    • First observedgoogle_ads_describe_resource
    • First observedgoogle_ads_keyword_forecast_metrics
    • First observedgoogle_ads_keyword_historical_metrics
    • First observedgoogle_ads_keyword_ideas
    • First observedgoogle_ads_list_accessible_customers
    • First observedgoogle_ads_list_customer_clients
    • First observedgoogle_ads_list_resources
    • First observedgoogle_ads_query
    • First observedgoogle_ads_recommendations

TDQS

A4.1/5.0

Scored across 11 tools

Disambiguation4/5

Most tools are clearly separated by domain: account discovery, GAQL querying, schema introspection, keyword planning, recommendations, and change tracking. The two closest pairs (list_accessible_customers vs. list_customer_clients, and change_events vs. change_status) are explicitly differentiated in their descriptions, but their names alone could still cause an agent to hesitate.

Naming Consistency3/5

All tools share the google_ads_ prefix and snake_case, but the verb pattern is inconsistent: list_accessible_customers, list_resources, list_customer_clients, query, and describe_resource use verbs, while recommendations, keyword_ideas, keyword_historical_metrics, keyword_forecast_metrics, change_events, and change_status are noun phrases. The convention is readable but mixed.

Tool Count5/5

With 11 tools, the server is well-scoped for a Google Ads data-access MCP. Each tool covers a meaningful capability—account hierarchy, GAQL querying, schema discovery, recommendations, keyword research, and change tracking—without unnecessary redundancy or bloat.

Completeness4/5

The tool surface is strong for read-only Google Ads workflows: account discovery, arbitrary GAQL querying, schema introspection, keyword research, forecasting, recommendations, and change auditing are all covered. The main gaps are the lack of any write/mutation operations and the absence of convenience wrappers for common entities like campaigns, but the generic query tool plus schema metadata lets agents work around those limitations.

Maintenance

ActivityNo data
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides read-only access to Google Ads account data including campaigns, ad groups, keywords, and performance reports. Enables querying via GAQL through an MCP interface.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables reading and modifying Google Ads accounts, including campaign management, ad status changes, budget updates, and more.
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables read-only access to Google Analytics 4 and Google Search Console data, allowing users to run reports, query search analytics, and generate combined snapshots for reporting.
    -
  • F
    license
    A
    quality
    C
    maintenance
    Enables AI clients to read Google Ads account data through reporting tools for campaigns, ad groups, keywords, and raw GAQL queries, with no write or mutate capabilities.
    7
    -