Google Ads MCP server
Unofficial Google Ads MCP for campaigns, keywords, budgets, and gated mutations.
4 stars
Reviews
Write oneNobody has reviewed Google Ads yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
Google Ads tools (30, 4 write)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
google_ads_agent_manifestMachine-readable install, runtime, and client guidance for AI agents operating the Google Ads MCP. Does not read Google Ads or expose secrets.
google_ads_cache_statusReturn the SQLite GAQL-response cache status: enabled flag, on-disk path, entry count, oldest entry age, and default TTL. Read-only — never calls Google Ads and does not require credentials.
google_ads_capabilitiesExplain supported Google Ads data, mutation gating, privacy modes, and recommended agent workflow. Does not read Google Ads or expose secrets.
google_ads_clear_cachewrite actionDelete all entries from the local SQLite GAQL-response cache. Does NOT touch Google Ads — only affects local memoization. Not gated by GOOGLE_ADS_ALLOW_MUTATIONS because nothing in your ad account changes. Does not require credentials.
google_ads_connection_statusCheck whether local Google Ads env vars, token file, Node version, privacy mode, mutation gate, and retry settings are ready. Does not call Google Ads or expose secrets.
google_ads_daily_reportSynthetic daily performance snapshot. Pulls YESTERDAY + LAST_7_DAYS + LAST_30_DAYS aggregates for a customer, optionally alerts when CPC exceeds cpc_alert_threshold. Pure-read workflow tool — never mutates.
google_ads_data_inventoryList supported Google Ads data domains, scopes, privacy boundary, and recommended first calls. Does not call Google Ads APIs or expose user data.
google_ads_exchange_codeExchange a Google OAuth authorization code for local tokens. Tokens stored at ~/.google-ads-mcp/tokens.json with 0600 perms; never returned in the response.
google_ads_find_wasteIdentify keywords matching the 'high cost + zero conversions' waste pattern (inspiration from script #1). Returns a ranked list of candidates — NEVER pauses anything. Pair with google_ads_pause_keyword (gated) after user confirmation.
google_ads_get_account_performanceAggregate performance metrics (impressions, clicks, cost_micros, ctr, average_cpc, conversions) for the customer over a date range.
google_ads_get_auth_urlGenerate a Google OAuth authorization URL for the Google Ads API. Does not read or modify Google Ads data. Use this first when no local token exists.
google_ads_get_campaignGet a single campaign with budget, bidding strategy, and status. Returns the linked campaign_budget id (use it with google_ads_set_campaign_budget_micros).
google_ads_get_campaign_performancePer-campaign performance metrics over a date range. Filter to a single campaign with campaign_id.
google_ads_get_keyword_performancePer-keyword performance metrics over a date range. Returns clicks, cost_micros, ctr, average_cpc, conversions, conversion_rate. Filter with campaign_id, ad_group_id, or min_clicks.
google_ads_list_accountsList all customer accounts the authenticated user can access. For a manager (MCC) account, this includes every child customer.
google_ads_list_ad_groupsList ad groups under a campaign (or all campaigns) in a customer.
google_ads_list_campaignsList campaigns under a Google Ads customer. Returns id, name, status, advertising_channel_type, bidding_strategy_type, and campaign_budget linkage.
google_ads_list_keywordsList keyword criteria under a campaign or ad group. Returns criterion_id, keyword text, match type, status, and cpc_bid_micros.
google_ads_onboardingReturn the 11-question Delx onboarding flow plus the current profile state and missing critical fields. Same profile reused across all Delx MCPs.
google_ads_pause_campaignPause an entire campaign by id. GATED.
google_ads_pause_keywordPause a single keyword by criterion_id. GATED: requires GOOGLE_ADS_ALLOW_MUTATIONS=true AND explicit_user_intent=true. Ask the user first.
google_ads_privacy_auditReturn the local privacy, mutation-gate, cache, token-path, env-presence and redaction posture without revealing secret values.
google_ads_profile_getRead the shared Delx profile (~/.delx-wellness/profile.json). Returns the user's preferred name, language, timezone, etc. Cross-tool — same profile is shared with other Delx MCPs. Read-only.
google_ads_profile_updatewrite actionPersist a partial patch to the shared Delx profile (~/.delx-wellness/profile.json). REQUIRES explicit_user_intent=true. NEVER stores secrets — writes will be rejected at validation time.
google_ads_quick_winsIdentify keywords with LOW CPC + HIGH CTR + at-least-some conversions — candidates to RAISE the bid on. Inverse of google_ads_find_waste. Returns a ranked list with a recommended_bid_micros (current + 25%, capped at 2x). NEVER changes bids; pair with google_ads_set_keyword_bid_micros (gated) after user confirmation.
google_ads_resume_campaignResume (enable) a paused campaign by id. GATED.
google_ads_resume_keywordResume (enable) a single paused keyword by criterion_id. GATED.
google_ads_revoke_accessRevoke the current Google OAuth grant and delete local tokens. Use only when the user explicitly wants to disconnect Google Ads.
google_ads_set_campaign_budget_microswrite actionUpdate a campaign budget's amount_micros. GATED. campaign_budget_id is NOT the campaign id — discover it via google_ads_get_campaign (campaign_budget.id).
google_ads_set_keyword_bid_microswrite actionUpdate the cpc_bid_micros for a keyword criterion. GATED. Bid must be in micros (10_000 = $0.01).
Public scan report
scanner v0.1.9 · 2026-09-26 · same rubric, same numbers if you re-run it
- Code scan48 source files scanned25/25
- –Live reliabilityno gateway calls yet and no remote to proben/a
- –Tool poisoningtools not inspected (local package is not executed); not countedn/a
- Auth qualitystatic API keys via environment variables6/15
- Maintenancelast push 19 days ago15/15
- Maintainer identityregistry namespace matches repository owner; GitHub account older than a year8/10
What the publisher says
From the Google Ads repository's README, as published. We do not edit it. Read it on GitHub
google-ads-mcp-unofficial
Unofficial Model Context Protocol server that lets AI agents read, analyze, and (gated) act on a Google Ads account — pause keywords, set bids, adjust budgets — without leaving your stack.
Unofficial. Not affiliated with Google. This is a local-first MCP server that speaks the Google Ads REST API directly. It does NOT include automated financial-account changes beyond what the Google Ads API allows. Always review proposed changes before enabling GOOGLEADSALLOW_MUTATIONS.
HTTP (v2 stateless)
Default is stdio. Optional Streamable HTTP — no session id, JSON responses, loopback only:
npx -y google-ads-mcp-unofficial --http
# GET http://127.0.0.1:3000/health
# POST http://127.0.0.1:3000/mcp (sessionless)Env: GOOGLEADSMCPHOST, GOOGLEADSMCPPORT, GOOGLEADSMCP_TRANSPORT=http.
Quick start (30 seconds)
npx -y google-ads-mcp-unofficial setupThe setup wizard collects your developer token + OAuth client, writes ~/.google-ads-mcp/config.json (chmod 600), then walks you through the OAuth dance via a local callback at http://127.0.0.1:3000/callback.
Verify:
npx -y google-ads-mcp-unofficial doctorThen add it to your agent (Claude Desktop, Cursor, Hermes, OpenClaw, Codex — see examples below).
What it does
22 tools across 6 categories.
Full tool reference: see AGENTS.md.
Setup wizard
npx -y google-ads-mcp-unofficial setup [--allow-mutations] [--client hermes|claude|cursor|...]What it does:
- Prompts for: developer token, OAuth client id/secret, optional logincustomerid (MCC), redirect URI, privacy mode.
- Writes ~/.google-ads-mcp/config.json with chmod 600.
- Writes an MCP client config (e.g. merges into claudedesktopconfig.json on macOS; writes a Hermes block and skill file for --client hermes).
- Runs the OAuth dance (unless --no-auth) by opening Google's consent screen and listening on 127.0.0.1:3000.
Mutations are off by default. --allow-mutations enables write tools. ASK THE USER before turning this on — it lets agents change campaigns, bids, budgets, and pause/resume keywords.
Auth model
This MCP requires two credentials:
Shortened. The full README is on GitHub.
Nothing above is checked by us. What we check is on the safety report.
Install directly
Runs npx -y google-ads-mcp-unofficial on your machine. Read the scan report first; the gateway never runs local packages.
claude mcp add google-ads-mcp -- npx -y google-ads-mcp-unofficial
Google Ads: common questions
- Is Google Ads MCP server safe?
- Mostly: it is graded B (83/100). Read the Google Ads safety report
- How do I install Google Ads?
- It runs on your machine. Copy the Claude Code, Claude Desktop or Cursor config from the install section.
- Does Google Ads need an API key?
- Yes. The registry entry asks for
GOOGLE_ADS_DEVELOPER_TOKEN,GOOGLE_ADS_CLIENT_SECRET. - Is Google Ads maintained?
- The last commit was 19 days ago (2026-09-07). The latest release is v0.1.3.