Skip to main content
Glama
ambo-sk

Google Ads MCP Worker

by ambo-sk

Google Ads MCP Worker

Google Ads MCP-Server auf einem Cloudflare Worker. Gleiche Struktur wie mcp-gsc: TypeScript, REST über fetch, keine Google-Client-Bibliothek.

  • Neuimplementierung von FGRibreau/mcp-google-ads (Rust, API v23) auf API v25

  • Authentifizierung: OAuth2-Refresh-Token. Die Google-Ads-API akzeptiert keine Servicekonten, daher ist der GSC-JWT-Ansatz hier nicht anwendbar

  • Transporte: Streamable HTTP (/mcp) und Legacy-SSE (/sse)

Schreibvorgänge sind ungeschützt. Kein Dry-Run, kein Budgetlimit, keine Gebotserhöhungsgrenze, keine Zwei-Schritt-Bestätigung, kein Audit-Log. Jedes Mutations-Tool wird sofort auf das Konto angewendet, auf das customer_id zeigt. create_campaign, create_ad_group und create_responsive_search_ad sind standardmäßig auf PAUSED gesetzt, aber das ist nur ein Standardwert, den du überschreiben kannst, keine Sperre. Richte dies auf ein Testkonto aus, bis du dem Setup vertraust.

Einrichtung

1. Google-Ads-Entwicklertoken

Manager-Konto (MCC) → Tools & Einstellungen → API-Center → Entwicklertoken beantragen. Bis zur Genehmigung des Basis-Zugriffs funktioniert das Token nur mit Testkonten.

2. OAuth-Client

  1. Google Cloud Console → Projekt auswählen/erstellen → Google-Ads-API aktivieren.

  2. APIs & Dienste → Anmeldedaten → Anmeldedaten erstellen → OAuth-Client-ID → Desktop-App.

  3. Client-ID und Client-Secret notieren.

3. Refresh-Token

npm install --legacy-peer-deps
npm run token -- <CLIENT_ID> <CLIENT_SECRET>

Öffnet einen Browser, fragt nach dem adwords-Bereich und gibt GOOGLE_ADS_REFRESH_TOKEN aus. Melde dich mit einem Google-Konto an, das Zugriff auf das zu verwaltende Ads-Konto hat.

4. Bereitstellung

npx wrangler secret put GOOGLE_ADS_DEVELOPER_TOKEN
npx wrangler secret put GOOGLE_ADS_CLIENT_ID
npx wrangler secret put GOOGLE_ADS_CLIENT_SECRET
npx wrangler secret put GOOGLE_ADS_REFRESH_TOKEN
npx wrangler secret put MCP_AUTH_TOKEN     # any long random string: openssl rand -hex 32
npm run deploy

Setze die nicht-geheimen Standardwerte in wrangler.jsonc:

Variable

Bedeutung

GOOGLE_ADS_CUSTOMER_ID

Standardkonto, nur Ziffern. Tools akzeptieren customer_id zur Überschreibung pro Aufruf.

GOOGLE_ADS_LOGIN_CUSTOMER_ID

Deine MCC-ID, gesendet als login-customer-id. Leer lassen, wenn nicht unter einem Manager.

GOOGLE_ADS_API_VERSION

Standardmäßig v25. Hier erhöhen, wenn Google eine neue Version veröffentlicht.

Lokale Entwicklung: .dev.vars.example nach .dev.vars kopieren, dann npm run dev.

5. Client verbinden

claude mcp add --transport http gads https://gads-mcp.<your-subdomain>.workers.dev/mcp \
  --header "Authorization: Bearer <MCP_AUTH_TOKEN>"

Claude Desktop / stdio-only-Clients:

{
  "mcpServers": {
    "gads": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://gads-mcp.<your-subdomain>.workers.dev/mcp",
        "--header",
        "Authorization: Bearer <MCP_AUTH_TOKEN>"
      ]
    }
  }
}

Dann health_check aufrufen – es meldet den OAuth-Status, das Vorhandensein des Entwicklertokens und die erreichbaren Konten.

Tools

46 Tools. Jedes kundenbezogene Tool akzeptiert ein optionales customer_id.

Lesen (21)

Tool

Was

health_check

Auth-Status, API-Version, konfigurierte Konten

list_accounts

Zugängliche Konten (mit Namen, wenn ein MCC konfiguriert ist)

get_account_info

Währung, Zeitzone, Auto-Tagging, Testkonto-Flag

run_gaql

Beliebige GAQL-Abfrage; standardmäßig searchStream, paginiert bei page_size/page_token

get_campaign_performance

Kampagnenmetriken nach Kosten

get_ad_group_performance

Anzeigengruppenmetriken

get_ad_performance

Anzeigenmetriken mit RSA-Überschriften/Beschreibungen und Genehmigungsstatus

get_keyword_performance

Keyword-Metriken mit Übereinstimmungstyp, Qualitätsfaktor, Gebot

get_search_terms

Tatsächliche Suchanfragen – die Quelle für negative Keywords

get_negative_keywords

Negative Keywords auf Kampagnen-/Anzeigengruppen-/gemeinsamen Sets

get_geo_performance

Metriken nach Standort

get_device_performance

Metriken nach Gerät

get_change_history

Änderungsereignisse (API speichert 30 Tage)

list_assets

Assets und ihre Anhängeebene

get_policy_issues

Abgelehnte und eingeschränkte Anzeigen mit Richtlinienthemen

get_conversion_actions

Conversion-Aktionen mit Kategorie, Zählung, Lookback

list_recommendations

Googles Empfehlungen plus Auswirkungsschätzungen

search_geo_targets

Ortsname → Geo-Target-Konstanten-ID

discover_keywords

Keyword-Ideen aus Seeds und/oder einer URL

get_keyword_historical_metrics

Volumen/Wettbewerb für eine feste Keyword-Liste

get_keyword_forecasts

Prognose für eine hypothetische Kampagne

Schreiben (25)

Tool

Was bedeutet

create_campaign_budget

Tagesbudget, geteilt oder nicht

create_campaign

Kampagne + optionales Budget in einem Aufruf

update_campaign

Name, Status, Budget, Daten, Gebotsstrategie

create_ad_group / update_ad_group

Anzeigengruppen und Standard-CPC

add_keywords / update_keyword

Positive Keywords, Gebote, finale URLs

add_negative_keywords

Negative Keywords auf Kampagnen- oder Anzeigengruppenebene

create_responsive_search_ad

RSA mit Pinning; Längenlimits werden vor dem Senden geprüft

set_entity_status

Pausieren / Aktivieren / Entfernen von beliebigen Ressourcen per Ressourcenname

add_geo_target

Standorte gezielt ansprechen oder ausschließen, mit Gebotsanpassungen

set_campaign_geo_target_type

Präsenz vs. Präsenz-oder-Interesse

set_ad_schedule

Tageszeitfenster und Gebotsanpassungen

add_audience_targeting / create_custom_audience

Zielgruppen

create_asset / attach_assets / remove_asset_link

Sitelinks, Callouts, Snippets, Text, Bilder

create_conversion_action / update_conversion_action

Conversion-Einrichtung, primär/sekundär

create_bidding_strategy

Portfolio-Strategien

apply_recommendation / dismiss_recommendation

Auf Googles Vorschläge reagieren

mutate

Rohes Mutate auf beliebigen Ressourcen – deckt alles oben ab

mutate_batch

Atomisches googleAds:mutate mit temporären IDs über Ressourcen hinweg

mutate und mutate_batch sind die Notausgänge: Alles, was Google hinzufügt, oder jede Ressource ohne benanntes Tool (gemeinsame Sets, Nutzerlisten, Asset-Gruppen, Experimente, Labels), läuft ohne Codeänderung darüber. Beide akzeptieren validate_only, wenn du einen manuellen Dry-Run möchtest.

Prüfungen

npm run typecheck   # tsc --noEmit
npm test            # pure-logic selfcheck: micros, dates, resource names, bidding payloads

Hinweise

  • Geld wird in Währungseinheiten (25.5) übergeben und intern in Mikros umgerechnet.

  • Mutate-Payloads verwenden YYYYMMDD-Daten; Reporting verwendet YYYY-MM-DD. Tools akzeptieren überall YYYY-MM-DD und konvertieren.

  • updateMask verwendet snake_case-Feldnamen – relevant, wenn du Operationen für mutate von Hand schreibst.

  • Zugriffstokens werden pro Worker-Isolate zwischengespeichert; Refresh-Tokens laufen nicht ab, es sei denn, sie werden widerrufen oder 6 Monate lang nicht verwendet.

-
license - not tested
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • Manage Google, Meta, Amazon, TikTok, LinkedIn & ChatGPT ads. 430 tools for campaigns & analytics.

  • OpenAI Ads MCP for ChatGPT Ads campaigns, creatives, audiences, insights, and conversions.

  • Search Meta, Google Ads, LinkedIn, and TikTok ad libraries plus creative analysis via MCP.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ambo-sk/mcp-google-ads'

If you have feedback or need assistance with the MCP directory API, please join our Discord server