← Back to search

io.github.davidmosiah/google-ads-mcp

davidmosiah Scanned 7h ago

Unofficial Google Ads MCP for campaigns, keywords, budgets, and gated mutations.

B
80.5 / 100

Versions

0.1.3latest
first seen Jul 8, 2026
PermissionsTool SafetyAuthAnnotationsCode QualityStabilitySpecVuln HistoryAuthorTransparencyCommunity

Tools 27

google_ads_data_inventory
annotations: verified low

List supported Google Ads data domains, scopes, privacy boundary, and recommended first calls. Does not call Google Ads APIs or expose user data.

readOnlyHint true openWorldHint false idempotentHint true destructiveHint false
google_ads_capabilities
annotations: verified low

Explain supported Google Ads data, mutation gating, privacy modes, and recommended agent workflow. Does not read Google Ads or expose secrets.

readOnlyHint true openWorldHint false idempotentHint true destructiveHint false
google_ads_agent_manifest
annotations: verified low

Machine-readable install, runtime, and client guidance for AI agents operating the Google Ads MCP. Does not read Google Ads or expose secrets.

readOnlyHint true openWorldHint false idempotentHint true destructiveHint false
google_ads_connection_status
annotations: verified low

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.

readOnlyHint true openWorldHint false idempotentHint true destructiveHint false
google_ads_privacy_audit
annotations: verified low

Return the local privacy, mutation-gate, cache, token-path, env-presence and redaction posture without revealing secret values.

readOnlyHint true openWorldHint false idempotentHint true destructiveHint false
google_ads_cache_status
annotations: verified low

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.

readOnlyHint true openWorldHint false idempotentHint true destructiveHint false
google_ads_clear_cache
annotations: verified low

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.

readOnlyHint false openWorldHint false idempotentHint true destructiveHint false
google_ads_profile_get
annotations: verified low

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.

readOnlyHint true openWorldHint false idempotentHint true destructiveHint false
google_ads_profile_update
annotations: verified low

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.

readOnlyHint false openWorldHint false idempotentHint false destructiveHint false
google_ads_onboarding
annotations: verified low

Return the 11-question Delx onboarding flow plus the current profile state and missing critical fields. Same profile reused across all Delx MCPs.

readOnlyHint true openWorldHint false idempotentHint true destructiveHint false
google_ads_get_auth_url
annotations: verified low

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.

readOnlyHint true openWorldHint false idempotentHint true destructiveHint false
google_ads_exchange_code
annotations: verified low

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.

readOnlyHint false openWorldHint true idempotentHint false destructiveHint false
google_ads_revoke_access
annotations: verified low

Revoke the current Google OAuth grant and delete local tokens. Use only when the user explicitly wants to disconnect Google Ads.

readOnlyHint false openWorldHint true idempotentHint false destructiveHint true
google_ads_list_accounts
annotations: verified low

List all customer accounts the authenticated user can access. For a manager (MCC) account, this includes every child customer.

readOnlyHint true openWorldHint true idempotentHint true destructiveHint false
google_ads_get_campaign
annotations: verified low

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).

readOnlyHint true openWorldHint true idempotentHint true destructiveHint false
google_ads_get_account_performance
annotations: verified low

Aggregate performance metrics (impressions, clicks, cost_micros, ctr, average_cpc, conversions) for the customer over a date range.

readOnlyHint true openWorldHint true idempotentHint true destructiveHint false
google_ads_get_campaign_performance
annotations: verified low

Per-campaign performance metrics over a date range. Filter to a single campaign with campaign_id.

readOnlyHint true openWorldHint true idempotentHint true destructiveHint false
google_ads_get_keyword_performance
annotations: verified low

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.

readOnlyHint true openWorldHint true idempotentHint true destructiveHint false
google_ads_daily_report
annotations: verified low

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.

readOnlyHint true openWorldHint true idempotentHint true destructiveHint false
google_ads_find_waste
annotations: verified low

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.

readOnlyHint true openWorldHint true idempotentHint true destructiveHint false
google_ads_quick_wins
annotations: verified low

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.

readOnlyHint true openWorldHint true idempotentHint true destructiveHint false
google_ads_pause_keyword
annotations: verified low

Pause a single keyword by criterion_id. GATED: requires GOOGLE_ADS_ALLOW_MUTATIONS=true AND explicit_user_intent=true. Ask the user first.

readOnlyHint false openWorldHint true idempotentHint true destructiveHint true
google_ads_resume_keyword
annotations: verified low

Resume (enable) a single paused keyword by criterion_id. GATED.

readOnlyHint false openWorldHint true idempotentHint true destructiveHint true
google_ads_set_keyword_bid_micros
annotations: verified low

Update the cpc_bid_micros for a keyword criterion. GATED. Bid must be in micros (10_000 = $0.01).

readOnlyHint false openWorldHint true idempotentHint true destructiveHint true
google_ads_set_campaign_budget_micros
annotations: verified low

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).

readOnlyHint false openWorldHint true idempotentHint true destructiveHint true
google_ads_pause_campaign
annotations: verified low

Pause an entire campaign by id. GATED.

readOnlyHint false openWorldHint true idempotentHint true destructiveHint true
google_ads_resume_campaign
annotations: verified low

Resume (enable) a paused campaign by id. GATED.

readOnlyHint false openWorldHint true idempotentHint true destructiveHint true

Permissions 3

network medium
Server uses network capabilities via: fetch()
shell high
Server uses shell capabilities via: child_process, spawn()
env_vars low
Server uses env_vars capabilities via: process.env

Scan Findings 69

info
Tool 'google_ads_quick_wins' annotations are consistent annotation_checker · 80%
info
Tool 'google_ads_pause_keyword' annotations are consistent annotation_checker · 80%
info
Tool 'google_ads_resume_keyword' annotations are consistent annotation_checker · 80%
info
Tool 'google_ads_set_keyword_bid_micros' annotations are consistent annotation_checker · 80%
info
Tool 'google_ads_set_campaign_budget_micros' annotations are consistent annotation_checker · 80%
info
Tool 'google_ads_pause_campaign' annotations are consistent annotation_checker · 80%
info
Tool 'google_ads_resume_campaign' annotations are consistent annotation_checker · 80%
info
Tool 'google_ads_data_inventory' annotations are consistent annotation_checker · 80%
info
Tool 'google_ads_capabilities' annotations are consistent annotation_checker · 80%
info
Tool 'google_ads_agent_manifest' annotations are consistent annotation_checker · 80%
info
Tool 'google_ads_connection_status' annotations are consistent annotation_checker · 80%
info
Tool 'google_ads_privacy_audit' annotations are consistent annotation_checker · 80%
info
Tool 'google_ads_cache_status' annotations are consistent annotation_checker · 80%
info
Tool 'google_ads_clear_cache' annotations are consistent annotation_checker · 80%
info
Tool 'google_ads_profile_get' annotations are consistent annotation_checker · 80%
info
Tool 'google_ads_profile_update' annotations are consistent annotation_checker · 80%
info
Tool 'google_ads_onboarding' annotations are consistent annotation_checker · 80%
info
Tool 'google_ads_get_auth_url' annotations are consistent annotation_checker · 80%
info
Tool 'google_ads_exchange_code' annotations are consistent annotation_checker · 80%
info
Tool 'google_ads_revoke_access' annotations are consistent annotation_checker · 80%
info
Tool 'google_ads_list_accounts' annotations are consistent annotation_checker · 80%
info
Tool 'google_ads_get_campaign' annotations are consistent annotation_checker · 80%
info
Tool 'google_ads_get_account_performance' annotations are consistent annotation_checker · 80%
info
Tool 'google_ads_get_campaign_performance' annotations are consistent annotation_checker · 80%
info
Tool 'google_ads_get_keyword_performance' annotations are consistent annotation_checker · 80%
info
Tool 'google_ads_daily_report' annotations are consistent annotation_checker · 80%
info
Tool 'google_ads_find_waste' annotations are consistent annotation_checker · 80%
medium
OAuth implementation without PKCE auth_checker · 75%
info
Sandbox failed to start for behavioral verification behavioral_verifier · 100%
medium
Vulnerable dependency: @modelcontextprotocol/sdk@1.21.0 (GHSA-345p-7cg4-v4c7) dependency_analyzer · 95%
medium
Vulnerable dependency: @modelcontextprotocol/sdk@1.21.0 (GHSA-8r9q-7v3j-jr4g) dependency_analyzer · 95%
medium
Vulnerable dependency: @modelcontextprotocol/sdk@1.21.0 (GHSA-w48q-cv73-mx4w) dependency_analyzer · 95%
info
package.json metadata manifest_parser · 100%
info
Tool: google_ads_data_inventory manifest_parser · 85%
info
Tool: google_ads_capabilities manifest_parser · 85%
info
Tool: google_ads_agent_manifest manifest_parser · 85%
info
Tool: google_ads_connection_status manifest_parser · 85%
info
Tool: google_ads_privacy_audit manifest_parser · 85%
info
Tool: google_ads_cache_status manifest_parser · 85%
info
Tool: google_ads_clear_cache manifest_parser · 85%
info
Tool: google_ads_profile_get manifest_parser · 85%
info
Tool: google_ads_profile_update manifest_parser · 85%
info
Tool: google_ads_onboarding manifest_parser · 85%
info
Tool: google_ads_get_auth_url manifest_parser · 85%
info
Tool: google_ads_exchange_code manifest_parser · 85%
info
Tool: google_ads_revoke_access manifest_parser · 85%
info
Tool: google_ads_list_accounts manifest_parser · 85%
info
Tool: google_ads_get_campaign manifest_parser · 85%
info
Tool: google_ads_get_account_performance manifest_parser · 85%
info
Tool: google_ads_get_campaign_performance manifest_parser · 85%
info
Tool: google_ads_get_keyword_performance manifest_parser · 85%
info
Tool: google_ads_daily_report manifest_parser · 85%
info
Tool: google_ads_find_waste manifest_parser · 85%
medium
No build provenance detected (SLSA L0) slsa_assessor · 90%
info
Tool: google_ads_quick_wins manifest_parser · 85%
info
Tool: google_ads_pause_keyword manifest_parser · 85%
info
Tool: google_ads_resume_keyword manifest_parser · 85%
info
Tool: google_ads_set_keyword_bid_micros manifest_parser · 85%
info
Tool: google_ads_set_campaign_budget_micros manifest_parser · 85%
info
Tool: google_ads_pause_campaign manifest_parser · 85%
info
Tool: google_ads_resume_campaign manifest_parser · 85%
info
Transport: stdio manifest_parser · 90%
info
Required env vars (7) manifest_parser · 80%
medium
OAuth authorization code flow without PKCE oauth_scope_analyzer · 75%
info
Sandbox failed to start for output poisoning scan output_poisoning · 100%
medium
Permission: network access detected permission_analyzer · 70%
high
Permission: shell access detected permission_analyzer · 95%
low
Permission: env_vars access detected permission_analyzer · 90%
info
SBOM generated: 170 components sbom_generator · 100%