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.

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.

-
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