{"name":"com.getmcpads/google-ads","slug":"getmcpads-google-ads","title":"Google Ads","description":"Google Ads MCP server: 35 read tools, 13 opt-in preview-first writes.","url":"https://mcp.market/server/getmcpads-google-ads","rating":null,"grade":"B","score":80,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":35,"stars":1,"forks":0,"downloads_week":593,"last_push_at":"2026-10-26T16:17:17.000Z","license":"Apache-2.0"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/get-mcp-ads/google-ads-mcp-server","website":"https://www.getmcpads.com/tools/google-ads","version":"2.1.1","remotes":[],"packages":[{"registryType":"npm","registryBaseUrl":"https://registry.npmjs.org","identifier":"@getmcpads/google-ads-mcp-server","version":"2.1.1","transport":{"type":"stdio"},"environmentVariables":[{"description":"Google Ads API developer token, Basic Access or above.","isRequired":true,"isSecret":true,"name":"GOOGLE_ADS_DEVELOPER_TOKEN"},{"description":"OAuth client ID.","isRequired":true,"name":"GOOGLE_ADS_CLIENT_ID"},{"description":"OAuth client secret.","isRequired":true,"isSecret":true,"name":"GOOGLE_ADS_CLIENT_SECRET"},{"description":"OAuth refresh token.","isRequired":true,"isSecret":true,"name":"GOOGLE_ADS_REFRESH_TOKEN"},{"description":"Manager (MCC) account ID, when the customer sits under one.","name":"GOOGLE_ADS_LOGIN_CUSTOMER_ID"},{"description":"Comma-separated customer IDs every tool is limited to. Optional in 2.x, required in 3.0.0.","name":"GOOGLE_ADS_ACCOUNT_IDS"},{"description":"Set to true to expose 13 write tools. Calls preview by default; confirm:true applies changes.","name":"GOOGLE_ADS_ENABLE_WRITES"}]}],"tools":[{"name":"google_ads_apply_plan","description":"Preview, validate and atomically apply a Google Ads v26 build/change plan: campaigns, budgets, ad groups, RSA/Display/Demand Gen ads, image/text/YouTube assets, PMax asset groups and links, keywords, geographic/language targeting listing groups and conversion action configuration (no conversion event uploads). Native REST camelCase fields; amounts are integer micros of the explicitly stated curren","write_action":false,"price_micros":0,"input_schema":null},{"name":"google_ads_create_campaign","description":"Create a Google Ads campaign. It is always created PAUSED and there is no option to create it active: someone has to look at it before it spends. Creates the campaign budget too. Previews by default.","write_action":true,"price_micros":0,"input_schema":null},{"name":"google_ads_generate_ad_group_themes","description":"Organize supplied keywords into existing Google Ads ad groups. Returns suggested ad group/campaign pairings, normalized keyword text, and suggested match type without creating or editing keywords. Read-only Keyword Planner RPC.","write_action":false,"price_micros":0,"input_schema":null},{"name":"google_ads_generate_keyword_forecast_metrics","description":"Forecast clicks, CPC, cost, conversions, and CPA for a temporary keyword campaign. Supports location and language targeting, match type, three bidding strategies, explicit future dates, and an optional independent per-keyword breakdown. This read-only planless RPC does not create a campaign or saved plan.","write_action":false,"price_micros":0,"input_schema":null},{"name":"google_ads_generate_keyword_historical_metrics","description":"Get Keyword Planner search-volume history for supplied keywords. Returns average monthly searches, monthly volumes (up to 48 months), latest volume, computed 3-month and YoY changes, competition, CPC/bid ranges, close variants, and optional device totals. This is a read-only planless RPC.","write_action":false,"price_micros":0,"input_schema":null},{"name":"google_ads_generate_keyword_ideas","description":"Discover Keyword Planner ideas from up to 20 seed keywords, a URL, keywords plus URL, or a whole site. Returns historical volume, monthly trends, computed 3-month/YoY changes, competition, bids, close variants, optional concepts, and pagination. Read-only; no plan is saved.","write_action":false,"price_micros":0,"input_schema":null},{"name":"google_ads_get_account_details","description":"Get detailed information for a specific Google Ads customer account.","write_action":false,"price_micros":0,"input_schema":null},{"name":"google_ads_get_account_hierarchy","description":"List accessible customers and, where possible, manager/client relationships from GAQL customer_client. Falls back to accessible customers if hierarchy queries are unavailable.","write_action":false,"price_micros":0,"input_schema":null},{"name":"google_ads_get_adgroups","description":"List ad groups for a Google Ads account, optionally filtered by campaign.","write_action":false,"price_micros":0,"input_schema":null},{"name":"google_ads_get_bidding_strategies","description":"List portfolio bidding strategies. Includes metrics only when startDate/endDate are provided; otherwise returns structure only.","write_action":false,"price_micros":0,"input_schema":null},{"name":"google_ads_get_budgets","description":"List campaign budgets with amount, status, delivery method, and recommended budget fields when supported.","write_action":false,"price_micros":0,"input_schema":null},{"name":"google_ads_get_campaigns","description":"List campaigns for a Google Ads account with status, budget, channel type, and bidding strategy.","write_action":false,"price_micros":0,"input_schema":null},{"name":"google_ads_get_change_events","description":"Fetch recent change_event rows. Enforces Google Ads constraints: date window within the last 30 days and LIMIT <= 10000.","write_action":false,"price_micros":0,"input_schema":null},{"name":"google_ads_get_conversion_actions","description":"List conversion actions with status, type, category, primary/include-in-conversions flags, owner customer, and last activity dates when supported.","write_action":false,"price_micros":0,"input_schema":null},{"name":"google_ads_get_demand_gen_assets","description":"List Demand Gen ads (video responsive, multi-asset, carousel) with their referenced creatives resolved: stable image URLs and YouTube video IDs with embed and thumbnail URLs. Complements google_ads_get_pmax_assets, which covers Performance Max.","write_action":false,"price_micros":0,"input_schema":null},{"name":"google_ads_get_insights","description":"Query Google Ads performance insights with intelligent query planning. Auto-generates GAQL, handles metric/segment incompatibilities by splitting queries. Use google-ads://metrics for available metrics, google-ads://dimensions for dimensions.","write_action":false,"price_micros":0,"input_schema":null},{"name":"google_ads_get_keyword_performance","description":"Get keyword-level performance data from keyword_view resource. Shows quality score, impressions, clicks, cost.","write_action":false,"price_micros":0,"input_schema":null},{"name":"google_ads_get_landing_pages","description":"Fetch landing_page_view performance with final URL, campaign/ad group context, traffic, conversion, and landing-page quality metrics when supported.","write_action":false,"price_micros":0,"input_schema":null},{"name":"google_ads_get_paid_organic_search_terms","description":"Read-only paid/organic search terms report. Uses paid_organic_search_term_view when available and falls back to paid-only search_term_view if organic fields are unavailable.","write_action":false,"price_micros":0,"input_schema":null},{"name":"google_ads_get_pmax_asset_diagnostics","description":"Read-only Performance Max asset group diagnostics. Returns ad strength, asset coverage action items, primary status reasons, optional performance metrics, and optional top asset combinations.","write_action":false,"price_micros":0,"input_schema":null},{"name":"google_ads_get_pmax_assets","description":"List Performance Max asset group assets from asset_group_asset with asset group/campaign context and optional date-range performance metrics.","write_action":false,"price_micros":0,"input_schema":null},{"name":"google_ads_get_pmax_placements","description":"Read-only Performance Max placement diagnostics from performance_max_placement_view. Returns placement type, display name, target URL, campaign context, and impressions only.","write_action":false,"price_micros":0,"input_schema":null},{"name":"google_ads_get_recommendations","description":"List Google Ads recommendations with type, resource, campaign/ad group links, dismissed state, and impact when supported.","write_action":false,"price_micros":0,"input_schema":null},{"name":"google_ads_get_search_terms","description":"Fetch search term performance from search_term_view or campaign_search_term_insight depending on reportType.","write_action":false,"price_micros":0,"input_schema":null},{"name":"google_ads_get_shopping_performance","description":"Read-only Shopping performance report keyed by Merchant Center product dimensions. Useful for joining spend/conversions to merchant ID, item ID, title, brand, feed label, and custom labels.","write_action":false,"price_micros":0,"input_schema":null},{"name":"google_ads_get_shopping_products","description":"Read-only Merchant Center product catalog/eligibility report via shopping_product. Supports account, campaign, and ad group scopes with performance metrics when the account has Shopping/PMax e-commerce data.","write_action":false,"price_micros":0,"input_schema":null},{"name":"google_ads_get_simulations","description":"Read-only planning/forecast query for campaign, ad group, or portfolio bidding simulations. Returns simulation metadata and projected point lists when available, with a metadata fallback.","write_action":false,"price_micros":0,"input_schema":null},{"name":"google_ads_get_video_upload","description":"Read the processing state and YouTube video ID of one Google Ads upload in the selected customer. Use only the returned videoId after state=PROCESSED. This is a read; it does not upload again.","write_action":true,"price_micros":0,"input_schema":null},{"name":"google_ads_health_check","description":"Read-only connectivity check. Verifies credential presence, Google Ads API access, login customer visibility, API version, and actionable warnings without returning secrets.","write_action":false,"price_micros":0,"input_schema":null},{"name":"google_ads_list_accounts","description":"List Google Ads customer accounts accessible with the current credentials. If an accessible customer is a manager account, also attempts to include enabled child accounts from customer_client.","write_action":false,"price_micros":0,"input_schema":null},{"name":"google_ads_list_image_assets","description":"List the account's image asset library (FROM asset) with stable, publicly served full-size URLs on tpc.googlesyndication.com, dimensions, file size, and mime type. This is the whole stock and carries no notion of delivery: an asset uploaded in 2022 and never served appears exactly like one running today. Newest first, so a limit returns recent assets rather than an arbitrary slice, and the count i","write_action":false,"price_micros":0,"input_schema":null},{"name":"google_ads_list_video_assets","description":"List the account's YouTube video assets (FROM asset) with derived watch, embed, and public thumbnail URLs. This is the whole stock and carries no notion of delivery: an asset uploaded years ago and never served appears exactly like one running today. Newest first, so a limit returns recent assets rather than an arbitrary slice, and the count in the response is the account total. For a visual-only ","write_action":false,"price_micros":0,"input_schema":null},{"name":"google_ads_remove_video_upload","description":"Remove a video upload owned by the selected ad account. Deletes the uploaded YouTube video and can break ads referencing it. Preview and matching expectedPlanHash required. Google v26 marks title/description immutable; this tool does not pretend to edit them.","write_action":true,"price_micros":0,"input_schema":null},{"name":"google_ads_rename_account","description":"Rename a Google Ads account (its descriptive name). Nothing else changes. Previews by default.","write_action":false,"price_micros":0,"input_schema":null},{"name":"google_ads_rename_campaign","description":"Rename a Google Ads campaign. The name is the only thing that changes: delivery, budget and targeting are untouched. Previews by default.","write_action":false,"price_micros":0,"input_schema":null},{"name":"google_ads_run_gaql","description":"Execute a raw GAQL (Google Ads Query Language) query. Full flexibility for any reporting need. Example: SELECT campaign.name, metrics.impressions FROM campaign WHERE campaign.status = 'ENABLED' AND segments.date DURING LAST_30_DAYS ORDER BY metrics.impressions DESC LIMIT 100","write_action":true,"price_micros":0,"input_schema":null},{"name":"google_ads_run_readonly_rpc","description":"Advanced read-only escape hatch for allowlisted Google Ads services outside GAQL: Audience Insights, Reach Planner, benchmarks, creator/trending insights, targeting suggestions, Smart Campaign suggestions, identity verification, invoices, and payments accounts. The operation is an enum; arbitrary paths and all mutations/uploads are impossible.","write_action":true,"price_micros":0,"input_schema":null},{"name":"google_ads_search_fields","description":"Search Google's live GoogleAdsField catalog. Discovers every queryable GAQL resource, attribute, segment, metric, enum value, and selectable-with compatibility relationship. Read-only and useful before a raw GAQL query.","write_action":false,"price_micros":0,"input_schema":null},{"name":"google_ads_suggest_geo_targets","description":"Resolve up to 25 location names or geo target IDs to Google Ads geoTargetConstants. Returns criterion IDs, canonical names, target types, status, parents, locale, and approximate reach. Read-only.","write_action":false,"price_micros":0,"input_schema":null},{"name":"google_ads_update_adgroup_bid","description":"Change the default CPC bid of a Google Ads ad group. The amount is in the account currency (1.20 for 1.20 EUR). Has no effect on a campaign using an automated bidding strategy. Previews by default.","write_action":true,"price_micros":0,"input_schema":null},{"name":"google_ads_update_adgroup_status","description":"Pause, re-enable or remove a Google Ads ad group. Previews by default.","write_action":true,"price_micros":0,"input_schema":null},{"name":"google_ads_update_campaign_budget","description":"Change the daily budget of a Google Ads campaign. The amount is in the account currency (12.50 for 12.50 EUR). Previews by default.","write_action":true,"price_micros":0,"input_schema":null},{"name":"google_ads_update_campaign_schedule","description":"Change the start or end date of a Google Ads campaign. Dates are YYYY-MM-DD in the account time zone. Previews by default.","write_action":true,"price_micros":0,"input_schema":null},{"name":"google_ads_update_campaign_status","description":"Pause, re-enable or remove a Google Ads campaign. Previews by default: without confirm: true, the tool describes the change without applying it.","write_action":true,"price_micros":0,"input_schema":null},{"name":"google_ads_upload_video","description":"Upload MP4/WebM/QuickTime bytes (max 16 MiB) to the Google-managed YouTube channel for the selected ad account. Visibility is UNLISTED: viewable by anyone with the link, not private. Default preview omits bytes and returns planHash; confirm requires expectedPlanHash. This API has no validateOnly. After upload, query you_tube_video_upload.state and video_id with google_ads_run_gaql; only use the vi","write_action":true,"price_micros":0,"input_schema":null},{"name":"google_ads_validate_query","description":"Validate metric/dimension/resource compatibility BEFORE executing a query. Checks segment restrictions and resource availability.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":80,"grade":"B","scanned_at":"2026-10-30T06:00:28.421Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-10-30T06:00:28.408Z","components":{"code":{"score":25,"max":25,"notes":["7 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":6,"max":15,"notes":["static API keys via environment variables"]},"maintenance":{"score":15,"max":15,"notes":["last push 4 days ago"]},"identity":{"score":6,"max":10,"notes":["namespace and repository owner differ","website matches verified namespace"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"@getmcpads/google-ads-mcp-server","version":"2.1.1","found":true,"license":"Apache-2.0","hasInstallScripts":false,"dependencyCount":2,"publishedAt":"2026-10-26T14:44:47.751Z","repositoryUrl":"git+https://github.com/get-mcp-ads/google-ads-mcp-server.git","weeklyDownloads":593}],"repo":{"found":true,"owner":"get-mcp-ads","repo":"google-ads-mcp-server","archived":false,"pushedAt":"2026-10-26T16:17:17Z","stars":1,"forks":0,"openIssues":4,"ownerType":"Organization","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/333092235?v=4","ownerCreatedAt":"2026-09-23T20:58:16Z","license":"Apache-2.0"},"icon":{"url":"https://www.getmcpads.com/icon.svg?icon.04oocdq1kv3ro.svg","source":"registry"},"presence":{"stars":1,"forks":0,"downloadsWeek":593,"license":"Apache-2.0","lastPushAt":"2026-10-26T16:17:17.000Z","score":35}}}},"grade_history":[{"kind":"restore","fromGrade":"C","toGrade":"B","reason":"score 80","createdAt":"2026-10-30T06:00:29.526Z"}],"reviews":[]}