MCP.Market

Google Ads MCP server

by mharnett·io.github.mharnett/google-ads·v1.0.1·1 stars

Google Ads MCP with MCC support: 35 tools for campaigns, keywords, reporting, GAQL.

B83/100grade B
What users say
No reviews yet
Be the first
Safety scan
B83/100

full report

Adoption
New

1 stars

Reviews

Write one

Nobody has reviewed Google Ads yet.

If you have run it, two minutes of your experience saves the next person an afternoon.

Google Ads tools (34, 11 write)

write = sends, deletes, buys or posts

Read from the package source without running it. The installed server may list more.

  • google_ads_ad_performance

    Get ad performance report with metrics, ad copy (headlines/descriptions), final URLs, and ad strength rating.

  • google_ads_ad_performance_by_conversion

    Get ad performance broken down by conversion action. Shows which ads drive which conversion types.

  • google_ads_add_campaign_negatives

    Add negative keywords at the campaign level. Use for campaign-specific negatives that shouldn't be in a shared list.

  • google_ads_add_shared_negatives

    Add negative keywords to a shared negative keyword list. Keywords will immediately block matching queries across all campaigns the list is applied to.

  • google_ads_create_ad_groupwrite action

    Create a new ad group (will be PAUSED until approved). Returns ad group ID.

  • google_ads_create_campaignwrite action

    Create a new campaign (will be PAUSED until approved). Returns campaign ID.

  • google_ads_create_keywordswrite action

    Create keywords for an ad group (will be PAUSED until approved). Keywords are auto-labeled for easy discovery via google_ads_list_pending_changes.

  • google_ads_create_responsive_search_adwrite action

    Create a responsive search ad (will be PAUSED until approved). Validates before creating. Headlines/descriptions can be plain strings or objects with pinned_position (1-3 for headlines, 1-2 for descriptions).

  • google_ads_create_shared_setwrite action

    Create a new shared negative keyword list at account level. Returns the new shared set ID.

  • google_ads_enable_items

    Enable paused campaigns, ad groups, or ads. REQUIRES USER APPROVAL. Use after reviewing in Google Ads UI.

  • google_ads_gaql_querywrite action

    Execute a raw GAQL (Google Ads Query Language) query. Use this for custom reports or accessing any Google Ads API resource not covered by other tools. See https://developers.google.com/google-ads/api/docs/query/overview for GAQL syntax.

  • google_ads_get_campaign_tracking

    Get campaign tracking parameters including tracking URL template, final URL suffix, and custom URL parameters

  • google_ads_get_client_context

    Get the current client context based on working directory. Call this first to confirm which Google Ads account you're working with.

  • google_ads_keyword_performance

    Get keyword performance report with metrics including impressions, clicks, cost, conversions, quality score components (quality score, expected CTR, ad relevance, landing page experience), and impression share metrics.

  • google_ads_keyword_performance_by_conversion

    Get keyword performance broken down by conversion action. Shows which keywords drive which conversion types (e.g., form fills, MQLs, etc.).

  • google_ads_keyword_volume

    Get historical search volume estimates for a list of keywords using the Google Ads Keyword Planner. Returns avg monthly searches, competition level, and CPC bid range for each keyword.

  • google_ads_link_shared_set

    Link a shared negative keyword list to one or more campaigns. Once linked, all negatives in the list will apply to those campaigns.

  • google_ads_list_ad_groups

    List ad groups, optionally filtered by campaign

  • google_ads_list_campaigns

    List all campaigns for the current client account

  • google_ads_list_conversion_actions

    List all available conversion actions (e.g., form fills, MQLs, etc.) to understand what conversion tracking is set up.

  • google_ads_list_pending_changes

    List all pending changes (paused items with claude- label) awaiting review

  • google_ads_pause_items

    Pause enabled campaigns, ad groups, or ads. REQUIRES USER APPROVAL. This will stop items from serving.

  • google_ads_pause_keywords

    Pause active keywords by their criterion resource names.

  • google_ads_remove_adgroup_negativeswrite action

    Remove ad-group-level negative keywords by their resource names. Get resource names from a GAQL query on ad_group_criterion.

  • google_ads_remove_campaign_negativeswrite action

    Remove campaign-level negative keywords by their resource names. Get resource names from a GAQL query on campaign_criterion.

  • google_ads_remove_shared_negativeswrite action

    Remove negative keywords from a shared negative keyword list by their resource names. Get resource names from a GAQL query on shared_criterion.

  • google_ads_search_term_insight_terms

    Drill into a specific search term category to see the individual search terms within it. Requires an insight_id from google_ads_search_term_insights.

  • google_ads_search_term_insights

    Get search term category insights for a campaign. Shows the search categories your ads appeared against (like the Insights panel in the Google Ads UI). Must query one campaign at a time. Optionally compares two date ranges to show trends.

  • google_ads_search_term_report

    Get search term report showing actual search queries that triggered ads, with the keyword they matched to.

  • google_ads_search_term_report_by_conversion

    Get search term report broken down by conversion action. Shows which search queries drive which conversion types.

  • google_ads_unlink_shared_set

    Unlink a shared negative keyword list from one or more campaigns. The list's negatives will no longer apply to those campaigns.

  • google_ads_update_campaign_budgetwrite action

    Update the daily budget for a campaign. Can update the existing budget amount or create a new solo budget and reassign the campaign to it (useful for breaking shared budgets).

  • google_ads_update_campaign_trackingwrite action

    Update campaign tracking parameters: final URL suffix, tracking URL template, and/or custom URL parameters. Use google_ads_get_campaign_tracking first to see current values.

  • google_ads_validate_ad

    Validate an RSA without creating it. Use this to check for errors before creating.

Public scan report

scanner v0.1.9 · 2026-09-27 · same rubric, same numbers if you re-run it

no findings
  • Code scan11 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 2 days ago15/15
  • Maintainer identityregistry namespace matches repository owner; GitHub account older than a year8/10
Overall 83/100. Components that don't apply are left out of the denominator. Any critical finding is an F.RubricAppeal a findingJSON

How Google Ads compares

Against every graded MCP server, from our own scans and uptime checks. Updated after each scan run.

Safety score
83/100
higher than 65% of 48,255 servers
Tools
34
the typical server has 7
Tools that change things
32%
typical: 0%. Fewer write tools means less an agent can break
GitHub stars
1
more than 65% of 28,688 servers

What its tools let an agent do: 23 read · 11 change

Install Google Ads in Claude Code, Cursor or VS Code

Runs npx -y mcp-google-ads on your machine. Read the scan report first; the gateway never runs local packages.

claude mcp add google-ads -- npx -y mcp-google-ads
Add to Cursor

What the publisher says

From the Google Ads repository's README, as published. We do not edit it. Read it on GitHub

MCP Google Ads Server

An MCP (Model Context Protocol) server for the Google Ads API with built-in safeguards for review before changes go live. Production-proven with MCC (Manager Account) support, 36 tools for campaign management, reporting, and optimization. v1.2.0 adds Demand Gen campaign creation end-to-end.

Features

  • MCC Support: Works with Manager accounts and multiple client accounts
  • Auto-Context: Detects which client account based on your working directory
  • Safe by Default: All new items created in PAUSED state
  • Approval Workflow: Enable items only after manual review
  • Validation: Validates ads before creating to catch errors early
  • Resilience: Circuit breakers, retry with backoff, and timeout handling (cockatiel)
  • Structured Logging: Pino-based logging with build fingerprinting

Setup

1. Google Ads API Access

You need:

  • A Google Ads Developer Token (apply at Google Ads API Center)
  • OAuth credentials (Client ID & Secret from Google Cloud Console)
  • A Refresh Token for your MCC account

Getting OAuth Credentials

  1. Go to Google Cloud Console
  2. Create a project or select existing
  3. Enable the Google Ads API
  4. Go to Credentials → Create Credentials → OAuth Client ID
  5. Choose Desktop App
  6. Download the JSON (contains clientid and clientsecret)

Getting a Refresh Token

Bring your own OAuth client (the clientid / clientsecret from the step above) and run the bundled helper. It runs Google's installed-app loopback flow with PKCE (S256) and prints your refresh token. It reads nothing from your home directory and needs no shared OAuth keyfile.

export GOOGLE_ADS_CLIENT_ID="YOUR_CLIENT_ID.apps.googleusercontent.com"
export GOOGLE_ADS_CLIENT_SECRET="YOUR_CLIENT_SECRET"
node get-refresh-token.cjs

Your browser opens for Google sign-in; approve as the Google account that owns the Ads data. On success the helper prints one line to stdout:

GOOGLE_ADS_REFRESH_TOKEN=1//0a...

Set that value in your environment (or config.json, below). The OAuth scope requested is read from config.json (oauth.scope), falling back to config.example.json, so the helper and the running server always request the same scope. This MCP requests only the minimum scope it needs: https://www.googleapis.com/auth/adwords.

Do not run this with stdout redirected to a shared log file — the refresh

token is printed to stdout by design.

Note: GOOGLEADSDEVELOPER_TOKEN is a separate Google Ads API credential, not an OAuth scope — set it independently (see Environment Variables below).

2. Install

npm install mcp-google-ads

Or clone and build from source:

git clone https://github.com/mharnett/mcp-google-ads.git
cd mcp-google-ads
npm install
npm run build

Security: Never share your .mcp.json file or commit it to git -- it may contain API credentials. Add .mcp.json to your .gitignore.

3. Configure

cp config.example.json config.json

Edit config.json with your credentials:

{
  "oauth": {
    "scope": "https://www.googleapis.com/auth/adwords"
  },
  "google_ads": {
    "developer_token": "YOUR_DEVELOPER_TOKEN",
    "client_id": "YOUR_CLIENT_ID.apps.googleusercontent.com",
    "client_secret": "YOUR_CLIENT_SECRET",
    "refresh_token": "YOUR_REFRESH_TOKEN",
    "mcc_customer_id": "123-456-7890"
  },
  "clients": {
    "my-client": {
      "customer_id": "111-222-3333",
      "name": "My Client",
      "folder": "/path/to/client/workspace"
    },
    "another-client": {
      "customer_id": "444-555-6666",
      "name": "Another Client",
      "folder": "/path/to/another/workspace"
    }
  },
  "defaults": {
    "create_paused": true,
    "label_prefix": "claude-",
    "require_approval_for_enable": true
  }
}

Environment Variables

Shortened. The full README is on GitHub.

Nothing above is checked by us. What we check is on the safety report.

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, Cursor, VS Code or Claude Desktop config from the install section.
Does Google Ads need an API key?
Yes. The registry entry asks for GOOGLE_ADS_CLIENT_SECRET, GOOGLE_ADS_REFRESH_TOKEN, GOOGLE_ADS_DEVELOPER_TOKEN.
Is Google Ads maintained?
The last commit was 39 days ago (2026-09-26). The latest release is v1.0.1.
What can I use instead of Google Ads?
Servers from other publishers that do the same job: AdLoop MCP server.
How does Google Ads compare with other MCP servers?
safety score 83/100 (higher than 65% of 48,255 servers); tools 34 (the typical server has 7); tools that change things 32% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.

Alternatives to Google Ads

Same job from other publishers: the closest match first, then the best rated.

  • AdLoop
    Google Ads, Reddit Ads, GA4 and Tag Manager in your AI client, with a preview before every change.
    A

More from mharnett →