Prototipo · Versión preliminar: todos los servidores del registro oficial, sincronizados cada 30 minutos. Las reseñas y las cuentas llegarán en una etapa posterior.
PopNx MCPServidores MCP para quienes usan IA · explicados con palabras sencillas

Google Ads

de mharnettversión 1.0.1i★ –iSe ejecuta en tu computadora
Nombre en el registroio.github.mharnett/google-ads

Instalar

Resumen

Descripción del creador (original en inglés)

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

Los tres pilares de PopNx MCP

Estos tres nunca se combinan en una sola puntuación: las opiniones, las mediciones y la popularidad son cosas distintas.

Qué puedes hacer con él

Todavía no escribimos un resumen sencillo para este. Abajo están los datos que leímos del registro.

  • Conexión: Se ejecuta en tu computadora
  • Transporte: stdio
  • Categoría: Marketing y redes sociales
  • Debes completar: GOOGLE_ADS_CLIENT_ID, GOOGLE_ADS_CLIENT_SECRET, GOOGLE_ADS_REFRESH_TOKEN, GOOGLE_ADS_DEVELOPER_TOKEN

Instalación

Elige la app de IA que usas y copia la configuración.

Antes de instalar

  • Revisiones básicas: 1 de 1 superadas
  • Se ejecuta en tu computadora con los permisos de tu usuario (archivos, red, apps).
  • Debes completar tú: GOOGLE_ADS_CLIENT_ID, GOOGLE_ADS_CLIENT_SECRET, GOOGLE_ADS_REFRESH_TOKEN, GOOGLE_ADS_DEVELOPER_TOKEN

Los valores marcados como secretos son llaves de tu cuenta. Nunca los compartas ni los pegues en un chat.

Necesitas

  • npmNode.js instalado (para el comando npx)

¿Qué app usas?

Elige tu app arriba. La recordamos, así que la próxima vez el botón dirá “Instalar en …”.

Abre Claude Desktop → Settings → Developer → Edit Config y pega esto en claude_desktop_config.json

{
  "mcpServers": {
    "google-ads": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-google-ads"
      ],
      "env": {
        "GOOGLE_ADS_CLIENT_ID": "your-value",
        "GOOGLE_ADS_CLIENT_SECRET": "your-value",
        "GOOGLE_ADS_REFRESH_TOKEN": "your-value",
        "GOOGLE_ADS_DEVELOPER_TOKEN": "your-value"
      }
    }
  }
}

Ejecuta esto en tu terminal

claude mcp add google-ads --env GOOGLE_ADS_CLIENT_ID=your-value --env GOOGLE_ADS_CLIENT_SECRET=your-value --env GOOGLE_ADS_REFRESH_TOKEN=your-value --env GOOGLE_ADS_DEVELOPER_TOKEN=your-value -- npx -y mcp-google-ads

Completa los valores vacíos antes de ejecutarlo.

Abrir en Cursor

O copia la configuración tú

Pégalo en .cursor/mcp.json de tu proyecto, o en ~/.cursor/mcp.json

{
  "mcpServers": {
    "google-ads": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-google-ads"
      ],
      "env": {
        "GOOGLE_ADS_CLIENT_ID": "your-value",
        "GOOGLE_ADS_CLIENT_SECRET": "your-value",
        "GOOGLE_ADS_REFRESH_TOKEN": "your-value",
        "GOOGLE_ADS_DEVELOPER_TOKEN": "your-value"
      }
    }
  }
}

Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.

Abrir en VS Code

O copia la configuración tú

Pégalo en .vscode/mcp.json de tu proyecto

{
  "servers": {
    "google-ads": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "mcp-google-ads"
      ],
      "env": {
        "GOOGLE_ADS_CLIENT_ID": "your-value",
        "GOOGLE_ADS_CLIENT_SECRET": "your-value",
        "GOOGLE_ADS_REFRESH_TOKEN": "your-value",
        "GOOGLE_ADS_DEVELOPER_TOKEN": "your-value"
      }
    }
  }
}

Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.

Este se ejecuta en tu computadora, y ChatGPT solo puede conectarse a servidores en internet. Elige otra app.

Tu elección se guarda en una cookie en este dispositivo; no necesitas cuenta.

Valores que debes completar

  • GOOGLE_ADS_CLIENT_ID obligatorio env
    OAuth client ID
  • GOOGLE_ADS_CLIENT_SECRET secreto obligatorio env
    OAuth client secret
  • GOOGLE_ADS_REFRESH_TOKEN secreto obligatorio env
    OAuth refresh token
  • GOOGLE_ADS_DEVELOPER_TOKEN secreto obligatorio env
    Google Ads API developer token

Esta configuración se genera a partir de la ficha del creador en el registro. Si el README dice otra cosa, sigue el README.

Qué puede hacer

Se ejecuta en tu computadora; la lista de herramientas aparece en tu app de IA después de instalarlo.

Revisiones básicasi

Revisamos información que cualquiera puede ver; no hemos leído el código. Las revisiones que no aplican no se cuentan. · Revisado el 7 nov 2026

  • ✓ Superada

    El creador coincide con el repo

    El nombre en el registro se verificó con la cuenta de GitHub mharnett, dueña del repo

  • … Aún sin revisar

    Sigue en mantenimiento

    Todavía no hemos leído este repo en GitHub

  • … Aún sin revisar

    Tiene licencia

    Todavía no hemos leído este repo en GitHub

  • – No aplica

    El endpoint responde

    Este se ejecuta en tu computadora; no hay endpoint en internet

  • – No aplica

    Inicio de sesión con OAuth

    Se ejecuta en tu computadora y usa ajustes locales en su lugar

  • … Aún sin revisar

    Sin instrucciones ocultas en las descripciones de herramientas

    Se ejecuta en tu computadora; solo podemos leer listas de herramientas de endpoints en internet

Comparado con otros en Marketing y redes socialesi

  • Más estrellas que el 0% de los otros 2982 servidores de esta categoría
  • Publicado en el registro más recientemente que el 5% de los otros 2982 servidores de esta categoría
  • Revisiones básicas iguales o mejores que el 100% de los otros 2982 servidores de esta categoría

Comparado con todos los servidores activos de esta categoría en el registro. Las estrellas solo cuentan cuando quien lo publica es dueño del repo.

Preguntas frecuentes

¿Es seguro Google Ads?

Superó 1 de 1 revisiones básicas aplicables. No hemos leído el código. Antes de agregar una clave o un token, revisa qué acceso pide el servidor y usa una clave que tenga solo los permisos que necesitas.

¿Qué claves o códigos necesita?

Debes completar: GOOGLE_ADS_CLIENT_ID, GOOGLE_ADS_CLIENT_SECRET, GOOGLE_ADS_REFRESH_TOKEN, GOOGLE_ADS_DEVELOPER_TOKEN

¿Se ejecuta en mi computadora o en la nube?

Se ejecuta en tu computadora. Tu app de IA lo inicia cuando hace falta, y los datos no pasan por los servidores del creador (a menos que el propio servidor llame a un servicio en línea).

¿Sigue en mantenimiento?

El repo de GitHub cambió por última vez –, y la última versión (1.0.1) llegó al registro hace 7 meses.

¿Qué apps pueden usarlo?

Las apps compatibles con MCP, como Claude Desktop, Claude Code, Cursor y VS Code. También necesitas Node.js en tu computadora.

¿Qué puedo usar en su lugar?

En la misma categoría: MCP YouTube Transcript, Google Analytics MCP, BibiGPT YouTube Video Summarizer

Alternativas

Servidores de la misma categoría hechos por otros creadores, ordenados por estrellas.

Cómo leer una tarjeta:★ Estrellas de GitHubiTres pilares: reseñas · revisiones · usoiActualizado = fecha en que se publicó la última versión en el registroi

An MCP server retrieving transcripts of YouTube videos

Se ejecuta en tu computadora★ 495MITActualizado hace 10 días
Instalar

GA4 MCP server for AI agents: schema discovery, server-side aggregation, analysis-ready defaults.

Se ejecuta en tu computadora★ 244MITActualizado hace 10 días
Instalar

AI video summarizer: summarize and transcribe YouTube, Bilibili, TikTok and podcast videos.

Se ejecuta en la nube★ 137MITActualizado hace 10 días
Instalar

README del creador

Abrir el README

Copiado tal cual del repo del creador. PopNx MCP no lo ha revisado ni lo respalda. Se quitaron HTML, imágenes y scripts. Los enlaces llevan fuera de este sitio.

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 client_id and client_secret)
Getting a Refresh Token

Bring your own OAuth client (the client_id / client_secret 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: GOOGLE_ADS_DEVELOPER_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

Alternatively, set credentials via environment variables (these override config.json):

VariableRequiredDescription
GOOGLE_ADS_DEVELOPER_TOKENYesGoogle Ads API developer token
GOOGLE_ADS_CLIENT_IDYesOAuth 2.0 client ID
GOOGLE_ADS_CLIENT_SECRETYesOAuth 2.0 client secret
GOOGLE_ADS_REFRESH_TOKENYesOAuth 2.0 refresh token
GOOGLE_ADS_MCP_WRITENoSet to true to expose mutating tools (create/update/pause/enable/remove/apply). Default: read-only.
GOOGLE_ADS_MCP_OVERRIDE_LOGNoJSONL file that records every confirm_large_change override (timestamp, tool, entity, old -> new, reason). Default: overrides.jsonl in the per-user config directory.
GOOGLE_ADS_MCP_OVERRIDE_WEBHOOK_URLNoSlack-compatible incoming webhook; each override also posts one line here. A missing or failing webhook never fails the write.
GOOGLE_ADS_MCP_OVERRIDE_SLACK_TOKEN / GOOGLE_ADS_MCP_OVERRIDE_SLACK_CHANNELNoSlack bot token + channel id; when both are set each override posts via chat.postMessage and the webhook is skipped. run-mcp.sh sets these to the drak bot and #drak-ops.
GOOGLE_ADS_MCP_ALWAYS_LOADNoComma-separated tool names to mark as always-loaded, e.g. google_ads_get_client_context,google_ads_gaql_query. Default: unset (no tool is marked).
Always-loaded tools

Clients that defer tool schemas behind a tool-search step only load a tool once it is searched for. Naming tools in GOOGLE_ADS_MCP_ALWAYS_LOAD stamps them with _meta: {"anthropic/alwaysLoad": true} in tools/list, so those tools are offered directly. Names that match no tool are ignored, and the marker never exposes a tool that read-only mode hides.

Read-only by default

The server ships read-only. Mutating tools (anything that creates, updates, pauses, enables, removes, links, or applies) are hidden from the tool list until you set GOOGLE_ADS_MCP_WRITE=true in the MCP server environment. If a write tool is somehow invoked without that flag, the server returns a clear error pointing at the env var.

This is deliberate: a casual chat message like "activate the Fundraising campaign" should not move live ad spend without an explicit opt-in.

4. Add to Claude Code

Add to your Claude Code MCP settings (~/.claude/settings.json or project settings):

{

"mcpServers": { "google-ads": { "command": "node", "args": ["node_modules/mcp-google-ads/dist/index.js"] } } }

Or if installed from source:

{

"mcpServers": { "google-ads": { "command": "node", "args": ["/path/to/mcp-google-ads/dist/index.js"] } } }

Restart Claude Code.

Claude Desktop: Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows).

Usage

Workflow
1. cd into client folder → auto-detects account context
  1. Ask Claude to create campaigns/ads → all created PAUSED
  2. Review in Google Ads UI or Editor
  3. Tell Claude to enable approved items
  4. Claude enables (requires your approval prompt)
Available Tools (36)
Context & Discovery
ToolDescription
google_ads_get_client_contextDetect which account from working directory
google_ads_list_campaignsList all campaigns with status and metrics
google_ads_list_ad_groupsList ad groups in a campaign
google_ads_list_pending_changesShow paused items with claude- label
google_ads_list_conversion_actionsList conversion actions
Campaign Management
ToolDescription
google_ads_create_campaignCreate campaign (PAUSED). Supports SEARCH + DEMAND_GEN channels, richer bidding (MANUAL_CPC / MAXIMIZE_CLICKS / MAXIMIZE_CONVERSIONS / TARGET_CPA), geo + language targeting, start/end dates
google_ads_create_ad_groupCreate ad group (PAUSED). type accepts SEARCH_STANDARD (default) or DEMAND_GEN_MULTI_ASSET_AD_GROUP
google_ads_create_responsive_search_adCreate RSA with validation (PAUSED)
google_ads_create_image_assetUpload PNG/JPG/GIF image asset (validates ≤5MB, ≥600×314) for use in Demand Gen ads
google_ads_create_demand_gen_multi_asset_adCreate a Demand Gen multi-asset ad (PAUSED) — validates char/count caps before API call, fails fast if ad_group isn't DG
google_ads_create_keywordsCreate keywords (PAUSED)
google_ads_validate_adValidate RSA without creating
google_ads_enable_itemsEnable items (make LIVE) — requires approval
google_ads_pause_itemsPause active items
google_ads_pause_keywordsPause specific keywords
google_ads_update_campaign_budgetUpdate campaign daily budget
Tracking & URLs
ToolDescription
google_ads_get_campaign_trackingGet tracking templates and URL parameters
google_ads_update_campaign_trackingUpdate tracking templates
Negative Keywords
ToolDescription
google_ads_create_shared_setCreate shared negative keyword list
google_ads_link_shared_setLink shared set to campaign
google_ads_unlink_shared_setUnlink shared set from campaign
google_ads_add_shared_negativesAdd keywords to shared negative list
google_ads_remove_shared_negativesRemove keywords from shared list
google_ads_add_campaign_negativesAdd campaign-level negatives
google_ads_remove_campaign_negativesRemove campaign-level negatives
google_ads_remove_adgroup_negativesRemove ad group-level negatives
Performance & Reporting
ToolDescription
google_ads_keyword_performanceKeyword metrics with quality score
google_ads_keyword_performance_by_conversionKeyword metrics by conversion action
google_ads_ad_performanceAd-level performance metrics
google_ads_ad_performance_by_conversionAd metrics by conversion action
google_ads_search_term_reportSearch term query report
google_ads_search_term_report_by_conversionSearch terms by conversion action
google_ads_search_term_insightsSearch term category insights
google_ads_search_term_insight_termsTerms within insight categories
google_ads_keyword_volumeKeyword planner volume estimates
Advanced
ToolDescription
google_ads_gaql_queryRun raw GAQL queries
Example Commands
# Check which account you're working with

"What Google Ads account am I connected to?"

List campaigns

"Show me all campaigns in this account"

Create a new campaign

"Create a Search campaign for brand terms with $50/day budget"

Check what's pending review

"What changes are pending my review?"

After reviewing in Google Ads UI

"Enable the approved ads in the Brand campaign"

Performance analysis

"Show me keyword performance for the last 30 days, sorted by cost"

Run custom GAQL

"Run a GAQL query to get all ad groups with CTR below 2%"

Example: Create a Demand Gen Campaign End-to-End
# 1. Campaign: $75/day, DEMAND_GEN channel, MAXIMIZE_CONVERSIONS default,

targeting Alaska (21134) + Maine (21141) in English

google_ads_create_campaign({ name: "DG - Spring Promo", daily_budget: 75, channel_type: "DEMAND_GEN", geo_target_ids: ["21134", "21141"], start_date: "2026-05-01", end_date: "2026-06-30" })

→ campaign_id: 555123

2. Ad group: DEMAND_GEN_MULTI_ASSET_AD_GROUP

google_ads_create_ad_group({ campaign_id: "555123", name: "DG AG 1", type: "DEMAND_GEN_MULTI_ASSET_AD_GROUP" })

→ ad_group_id: 555456

3. Image assets (PNG/JPG/GIF, ≥600×314, ≤5MB). Returns {asset_id, ...}

google_ads_create_image_asset({ name: "hero-landscape", file_path: "/abs/path/hero.png" })

→ asset_id: 42001

google_ads_create_image_asset({ name: "hero-square", file_path: "/abs/path/sq

Solo se muestra el principio; lee el resto en el repo

Pregunta a PopNx