Skip to main content
Glama
ambo-sk

Google Ads MCP Worker

by ambo-sk

Google Ads MCP Worker

Servidor MCP de Google Ads en un Cloudflare Worker. Misma forma que mcp-gsc: TypeScript, REST mediante fetch, sin librería cliente de Google.

  • Reimplementación de FGRibreau/mcp-google-ads (Rust, API v23) en API v25

  • Autenticación: token de actualización OAuth2. La API de Google Ads no acepta cuentas de servicio, por lo que el enfoque GSC JWT no aplica aquí

  • Transportes: HTTP Streamable (/mcp) y SSE heredado (/sse)

Las escrituras no están protegidas. Sin dry-run, sin límite de presupuesto, sin tope de aumento de puja, sin confirmación en dos pasos, sin registro de auditoría. Cada herramienta de mutación se aplica inmediatamente a la cuenta a la que apunte customer_id. create_campaign, create_ad_group y create_responsive_search_ad usan PAUSED por defecto, pero ese es un valor por defecto que puedes sobrescribir, no un bloqueo. Apunta esto a una cuenta de prueba hasta que confíes en la configuración.

Configuración

1. Token de desarrollador de Google Ads

Cuenta de administrador (MCC) → Herramientas y configuración → Centro de API → solicita un token de desarrollador. Hasta que se apruebe el acceso básico, el token solo funciona con cuentas de prueba.

2. Cliente OAuth

  1. Google Cloud Console → elige/crea un proyecto → habilita la API de Google Ads.

  2. APIs y servicios → Credenciales → Crear credenciales → ID de cliente de OAuth → Aplicación de escritorio.

  3. Anota el ID de cliente y el secreto de cliente.

3. Token de actualización

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

Abre un navegador, solicita el ámbito adwords e imprime GOOGLE_ADS_REFRESH_TOKEN. Inicia sesión con una cuenta de Google que tenga acceso a la cuenta de Ads que quieras gestionar.

4. Despliegue

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

Establece los valores por defecto no secretos en wrangler.jsonc:

Var

Significado

GOOGLE_ADS_CUSTOMER_ID

Cuenta por defecto, solo dígitos. Las herramientas aceptan customer_id para sobrescribir por llamada.

GOOGLE_ADS_LOGIN_CUSTOMER_ID

Tu ID de MCC, enviado como login-customer-id. Déjalo vacío si no estás bajo un administrador.

GOOGLE_ADS_API_VERSION

Por defecto v25. Actualízalo aquí cuando Google lance una nueva versión.

Desarrollo local: copia .dev.vars.example a .dev.vars y luego npm run dev.

5. Conectar un cliente

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

Claude Desktop / clientes solo stdio:

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

Luego llama a health_check — informa del estado de OAuth, de la presencia del token de desarrollador y de las cuentas accesibles.

Related MCP server: Google Ads MCP

Herramientas

46 herramientas. Cada herramienta con ámbito de cliente acepta un customer_id opcional.

Lectura (21)

Tool

Qué hace

health_check

Estado de autenticación, versión de API, cuentas configuradas

list_accounts

Cuentas accesibles (con nombres cuando hay un MCC configurado)

get_account_info

Moneda, zona horaria, autoetiquetado, indicador de cuenta de prueba

run_gaql

Cualquier consulta GAQL; searchStream por defecto, paginada cuando se dan page_size/page_token

get_campaign_performance

Métricas de campaña por coste

get_ad_group_performance

Métricas de grupo de anuncios

get_ad_performance

Métricas de anuncios con titulares/descripciones RSA y estado de aprobación

get_keyword_performance

Métricas de palabras clave con tipo de concordancia, nivel de calidad y puja

get_search_terms

Consultas reales — la fuente de palabras clave negativas

get_negative_keywords

Negativas de campaña / grupo de anuncios / conjunto compartido

get_geo_performance

Métricas por ubicación

get_device_performance

Métricas por dispositivo

get_change_history

Eventos de cambio (la API los conserva 30 días)

list_assets

Recursos y su nivel de adjunto

get_policy_issues

Anuncios rechazados y limitados con temas de política

get_conversion_actions

Acciones de conversión con categoría, recuento y ventana de retroceso

list_recommendations

Recomendaciones de Google más estimaciones de impacto

search_geo_targets

Nombre de lugar → ID de constante de objetivo geográfico

discover_keywords

Ideas de palabras clave a partir de semillas y/o una URL

get_keyword_historical_metrics

Volumen/competencia para una lista fija de palabras clave

get_keyword_forecasts

Previsión para una campaña hipotética

Escritura (25)

Tool

Qué hace

create_campaign_budget

Presupuesto diario, compartido o no

create_campaign

Campaña + presupuesto opcional en una sola llamada

update_campaign

Nombre, estado, presupuesto, fechas, estrategia de puja

create_ad_group / update_ad_group

Grupos de anuncios y CPC por defecto

add_keywords / update_keyword

Palabras clave positivas, pujas, URL finales

add_negative_keywords

Negativas de campaña o grupo de anuncios

create_responsive_search_ad

RSA con fijación; límites de longitud comprobados antes de enviar

set_entity_status

Pausar / habilitar / eliminar cualquier cosa por nombre de recurso

add_geo_target

Segmentar o excluir ubicaciones, con modificadores de puja

set_campaign_geo_target_type

Presencia frente a presencia-o-interés

set_ad_schedule

Ventanas de segmentación por franjas horarias y modificadores de puja

add_audience_targeting / create_custom_audience

Audiencias

create_asset / attach_assets / remove_asset_link

Enlaces de sitio, destacados, fragmentos, texto, imágenes

create_conversion_action / update_conversion_action

Configuración de conversión, primaria/secundaria

create_bidding_strategy

Estrategias de cartera

apply_recommendation / dismiss_recommendation

Actuar sobre las sugerencias de Google

mutate

Mutación bruta en cualquier colección de recursos — cubre todo lo anterior

mutate_batch

googleAds:mutate atómico con IDs temporales entre recursos

mutate y mutate_batch son las vías de escape: cualquier cosa que añada Google, o cualquier recurso sin herramienta específica (conjuntos compartidos, listas de usuarios, grupos de recursos, experimentos, etiquetas), pasa por ellas sin cambiar el código. Ambas aceptan validate_only si quieres una prueba en seco manual.

Comprobaciones

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

Notas

  • El dinero se pasa en unidades de moneda (25.5) y se convierte a micros internamente.

  • Las cargas útiles de mutate usan fechas YYYYMMDD; los informes usan YYYY-MM-DD. Las herramientas aceptan YYYY-MM-DD en todas partes y convierten.

  • updateMask usa nombres de campo en snake_case — relevante si escribes operaciones a mano para mutate.

  • Los tokens de acceso se almacenan en caché por aislamiento de Worker; los tokens de actualización no caducan salvo que se revoquen o no se usen durante 6 meses.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables reading and modifying Google Ads accounts, including campaign management, ad status changes, budget updates, and more.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A comprehensive Google Ads MCP server providing ~47 tools for full read/write access to Google Ads accounts, including campaign management, ad creation, keyword management, and reporting.
    2
    Apache 2.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables reading and mutating Google Ads campaigns via MCP tools, and includes structured marketer workflows for search term mining, budget optimization, and weekly reviews.
    54 npm
    6
    MIT