io.github.davidmosiah/google-ads-mcp
Unofficial Google Ads MCP for campaigns, keywords, budgets, and gated mutations.
Versions
0.1.3latestTools 27
google_ads_data_inventory List supported Google Ads data domains, scopes, privacy boundary, and recommended first calls. Does not call Google Ads APIs or expose user data.
google_ads_capabilities Explain supported Google Ads data, mutation gating, privacy modes, and recommended agent workflow. Does not read Google Ads or expose secrets.
google_ads_agent_manifest Machine-readable install, runtime, and client guidance for AI agents operating the Google Ads MCP. Does not read Google Ads or expose secrets.
google_ads_connection_status Check 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_privacy_audit Return the local privacy, mutation-gate, cache, token-path, env-presence and redaction posture without revealing secret values.
google_ads_cache_status Return 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_clear_cache Delete 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_profile_get Read 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_update Persist 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_onboarding Return the 11-question Delx onboarding flow plus the current profile state and missing critical fields. Same profile reused across all Delx MCPs.
google_ads_get_auth_url Generate 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_exchange_code Exchange 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_revoke_access Revoke the current Google OAuth grant and delete local tokens. Use only when the user explicitly wants to disconnect Google Ads.
google_ads_list_accounts List all customer accounts the authenticated user can access. For a manager (MCC) account, this includes every child customer.
google_ads_get_campaign Get 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_account_performance Aggregate performance metrics (impressions, clicks, cost_micros, ctr, average_cpc, conversions) for the customer over a date range.
google_ads_get_campaign_performance Per-campaign performance metrics over a date range. Filter to a single campaign with campaign_id.
google_ads_get_keyword_performance Per-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_daily_report Synthetic 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_find_waste Identify 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_quick_wins Identify 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_pause_keyword Pause a single keyword by criterion_id. GATED: requires GOOGLE_ADS_ALLOW_MUTATIONS=true AND explicit_user_intent=true. Ask the user first.
google_ads_resume_keyword Resume (enable) a single paused keyword by criterion_id. GATED.
google_ads_set_keyword_bid_micros Update the cpc_bid_micros for a keyword criterion. GATED. Bid must be in micros (10_000 = $0.01).
google_ads_set_campaign_budget_micros Update 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_pause_campaign Pause an entire campaign by id. GATED.
google_ads_resume_campaign Resume (enable) a paused campaign by id. GATED.
Permissions 3
network medium shell high env_vars low