Servidor de MCP de Google Ads: Guía de integración para desarrolladores

El Protocolo de contexto del modelo (MCP) es un estándar abierto que permite que los modelos de lenguaje grandes (LLM) interactúen de forma segura con datos y aplicaciones externos. El servidor de MCP de Google Ads proporciona un puente estandarizado a la API de Google Ads. Permite que los agentes de IA recuperen y analicen los datos de la cuenta, creen recursos, suban videos y administren etiquetas con lenguaje natural.

Recursos y asistencia de la comunidad

Descripción técnica general

La integración del servidor de MCP de Google Ads elimina la necesidad de escribir código personalizado para la autenticación de la API de Google Ads, la recuperación de recursos, el análisis de datos y las mutaciones de recursos o etiquetas admitidas. El servidor expone herramientas que se pueden llamar y recursos de referencia (consulta Funciones principales) que un LLM puede inspeccionar e invocar.

Especificaciones clave

  • Protocolo: MCP (Protocolo de contexto del modelo)
  • Modo: Lectura y mutación parcial (creación de activos, cargas de videos y administración de etiquetas con validación de propuesta y confirmación o modo de solo lectura configurable)
  • Lenguaje: Python 3.10 o posterior
  • Transporte: Entrada y salida estándar (stdio) o HTTP transmitible (streamable-http en Cloud Run)
  • Autenticación: Credenciales predeterminadas de la aplicación (credenciales de usuario de OAuth 2.0 o cuenta de servicio) para stdio local o credenciales de aplicación web de OAuth 2.0 para HTTP remoto

Cómo funciona el bucle de interacción

  1. Solicitud: Envías una instrucción como "¿Cómo es el rendimiento de mi campaña esta semana?" o "Crea un recurso de texto destacado para nuestra oferta de verano".
  2. Descubrimiento: El LLM inspecciona sus herramientas y recursos disponibles, y selecciona una herramienta de google-ads-mcp que coincida.
  3. Validación de ejecución o de prueba de simulación: Las herramientas de lectura consultan directamente la API de Google Ads. Las herramientas de mutación se ejecutan primero en modo de propuesta (validate_only=True) para validar las entradas sin confirmar los cambios (consulta Flujo de trabajo de seguridad de propuesta y confirmación).
  4. Inserción de contexto: El servidor de MCP devuelve resultados de consultas estructurados o entradas de change_items propuestas y un resumen de verificación de checksum a la ventana de contexto del LLM.
  5. Respuesta y confirmación: El LLM presenta una respuesta o te pide que confirmes los cambios propuestos. Después de que apruebes, el LLM volverá a llamar a la herramienta de mutación con validate_only=False y el valor checksum coincidente para confirmar el cambio.

Comenzar

Sigue estos pasos para configurar y ejecutar el servidor de MCP de Google Ads de forma local. Para implementar un servicio remoto compartido, consulta Implementación en Google Cloud.

Requisitos previos

Antes de configurar el servidor, completa los siguientes requisitos previos en tu entorno local y en la consola de Google Cloud:

  • Proyecto de Google Cloud: Crea o selecciona un proyecto de Google Cloud con la API de Google Ads habilitada. Habilitar la API otorga acceso de prueba para probar los flujos de trabajo de lectura y mutación en las cuentas de prueba. Para acceder a las cuentas de producción, consulta la página de resumen de la API de Google Ads para obtener acceso de explorador, básico o estándar, o solicita uno de estos niveles de acceso. De lo contrario, las llamadas de producción fallarán con un error AuthorizationError.CLOUD_PROJECT_NOT_APPROVED_FOR_PRODUCTION. Google retirará los tokens de desarrollador (GOOGLE_ADS_DEVELOPER_TOKEN) el 9 de septiembre de 2026. El proyecto de Google Cloud que posee tu cliente de OAuth o cuenta de servicio determina tu nivel de acceso a la API.
  • Credenciales: El modo stdio local se autentica con las credenciales predeterminadas de la aplicación (ADC) de un archivo JSON de secreto de cliente de OAuth 2.0 o una cuenta de servicio en tu proyecto de Cloud. Establece la variable de entorno GOOGLE_CLOUD_PROJECT cuando sea necesario para especificar tu proyecto de ADC o cuota predeterminado. En cambio, las implementaciones remotas de streamable-http requieren un ID de cliente y un secreto de cliente de la aplicación web de OAuth 2.0 (consulta Implementa en Google Cloud Run).
  • Software local (para el modo stdio): Instala Python 3.10 o una versión posterior, pipx y la herramienta de línea de comandos de gcloud (que se usa para generar archivos ADC de usuario).

Configuración

  1. Genera credenciales predeterminadas de la aplicación (ADC) con un cliente de OAuth de tu proyecto de Google Cloud con la API habilitada y, luego, incluye el permiso de la API de Google Ads:

    gcloud auth application-default login \
      --scopes=https://www.googleapis.com/auth/adwords,https://www.googleapis.com/auth/cloud-platform \
      --client-id-file=PATH_TO_CLIENT_SECRET_JSON
    

    Reemplaza lo siguiente:

    • PATH_TO_CLIENT_SECRET_JSON: Es la ruta de acceso al archivo JSON del secreto del cliente de OAuth 2.0.

    Este comando imprime Credentials saved to file: [PATH_TO_CREDENTIALS_JSON] (como ~/.config/gcloud/application_default_credentials.json en Linux y macOS). Para autenticarte con una cuenta de servicio, omite este paso y apunta GOOGLE_APPLICATION_CREDENTIALS al archivo JSON de la clave de tu cuenta de servicio, o pasa --impersonate-service-account a gcloud auth application-default login.

  2. Agrega el servidor al archivo de configuración de MCP de tu host (como ~/.gemini/config/mcp_config.json, ~/.gemini/settings.json o ~/.claude/settings.json):

    {
      "mcpServers": {
        "google-ads-mcp": {
          "command": "pipx",
          "args": [
            "run",
            "--spec",
            "google-ads-mcp==0.0.6",
            "google-ads-mcp"
          ],
          "env": {
            "GOOGLE_CLOUD_PROJECT": "PROJECT_ID",
            "GOOGLE_APPLICATION_CREDENTIALS": "PATH_TO_CREDENTIALS_JSON"
          }
        }
      }
    }
    

    Reemplaza lo siguiente:

    • PROJECT_ID: tu ID del proyecto de Google Cloud.
    • PATH_TO_CREDENTIALS_JSON: Es la ruta de acceso al archivo JSON de ADC que se imprimió en el paso 1 o al archivo JSON de la clave de tu cuenta de servicio. Puedes omitir GOOGLE_APPLICATION_CREDENTIALS cuando uses la ubicación predeterminada del archivo ADC gcloud.

    Para acceder a las cuentas de cliente a través de una cuenta de administrador, establece GOOGLE_ADS_LOGIN_CUSTOMER_ID (10 dígitos, sin guiones) en env o pasa el parámetro login_customer_id en las llamadas individuales a la herramienta.

Opcional: Equipa a tu agente con habilidades y el asistente para desarrolladores

El servidor de MCP de Google Ads le brinda a tu cliente de IA acceso en tiempo real a los datos de informes de la cuenta, junto con herramientas de creación de recursos, carga de videos y administración de etiquetas. Vincula el servidor de MCP con las siguientes herramientas complementarias para ayudar a tu agente a crear consultas válidas en el lenguaje de consulta de Google Ads (GAQL) y diagnosticar cambios en el rendimiento de la cuenta. Estas herramientas también generan código de biblioteca cliente, como secuencias de comandos para vincular los recursos creados a las campañas o realizar otras mutaciones no admitidas:

  • Habilidades del agente de la API de Google Ads: Son módulos de flujo de trabajo portátiles (incluidos google-ads-api-mcp-setup, google-ads-api-account-diagnostics y google-ads-api-quickstart) que ayudan a tu agente a usar el servidor de MCP de Google Ads con menos sobrecarga de tokens. Ejecuta el siguiente comando para instalarlas (se requiere Node.js) o consulta la guía de habilidades de agentes de la API de Google Ads para configurar Antigravity, Claude Code, Codex y Cursor:

    npx skills add google/skills/skills/ads
    
  • Asistente para desarrolladores de la API de Google Ads: Es un complemento modular para Google Antigravity y Claude Code que proporciona inspección de esquemas de Protobuf locales, validación de GAQL, generación de código de biblioteca cliente y solución de problemas de conversiones sin conexión. Lee ¿Qué es el Asistente para desarrolladores de la API de Google Ads? o sigue la guía de instalación.

Capacidades principales

En las siguientes secciones, se describen las herramientas de lectura, las herramientas de mutación parcial y los recursos de referencia del servidor. A partir de v0.0.6, las herramientas se registran de forma predeterminada con el prefijo del espacio de nombres de su categoría (como search_search). Cuando actualices las instrucciones o las listas de entidades permitidas de las versiones sin prefijo, actualiza los nombres de las herramientas o establece un prefijo vacío ("") en tools_config.yaml (consulta Configura los espacios de nombres de las herramientas y el modo de solo lectura).

Herramientas de lectura

  • customers_list_accessible_customers (herramienta list_accessible_customers): Devuelve los IDs de cliente de Google Ads a los que el usuario autenticado puede acceder directamente.
  • search_search (herramienta search): Compila y ejecuta consultas de GAQL SearchStream a partir de parámetros estructurados (customer_id, resource y fields, además de los parámetros opcionales conditions, orderings, limit y login_customer_id) en lugar de una cadena de GAQL sin procesar. Cada consulta agrega PARAMETERS omit_unselected_resource_names=true para recuperar los atributos, las métricas, los segmentos, los presupuestos y el estado de los recursos de forma limpia.
  • metadata_get_resource_metadata (herramienta get_resource_metadata): Recupera atributos, métricas y segmentos seleccionables, filtrables y ordenables para un tipo de recurso de la API de Google Ads (por ejemplo, "campaign"). Usa estos metadatos para descubrir campos de consulta válidos, incluidas las métricas y los segmentos agregados en versiones secundarias, como la v26.2, antes de llamar a la herramienta search_search.

Herramientas de mutación (compatibilidad parcial)

  • assets_create_asset (herramienta create_asset): Crea recursos de Google Ads independientes con parámetros dedicados para los tipos de recursos TEXT, IMAGE, YOUTUBE_VIDEO, SITELINK, CALLOUT y STRUCTURED_SNIPPET. Pasa el diccionario extra_params para otros tipos de AssetService mutables (como PRICE, PROMOTION, CALL o BUSINESS_MESSAGE) e incluye final_urls a nivel raíz junto con sitelink_link_text para los recursos de SITELINK. Las rutas de acceso a archivos locales (image_asset_path) solo funcionan en el modo stdio local. Para las implementaciones de HTTP remotas, pasa el parámetro image_asset_data codificado en Base64 con image_asset_mime_type establecido en IMAGE_PNG, IMAGE_JPEG o IMAGE_GIF (hasta 20 MB).
  • assets_upload_video_asset (herramienta upload_video_asset): Sube un archivo de video local (.3gp, .avi, .flv, .mkv, .mov, .mp4, .mpeg, .mpg, .ogg, .webm o .wmv) a YouTube a través de la API de Google Ads solo en el modo stdio local. Tanto video_title como video_description son parámetros obligatorios, y la privacidad se establece de forma predeterminada en UNLISTED (o PUBLIC en los canales de marca que pertenecen al anunciante con OAuth de usuario). Esta herramienta devuelve un valor de video_upload_id de Google Ads (y un nombre de recurso), no el video_id de YouTube de 11 caracteres. Consulta you_tube_video_upload con la herramienta search_search (filtrando por you_tube_video_upload.video_upload_id) hasta you_tube_video_upload.state = 'PROCESSED'. Luego, pasa you_tube_video_upload.video_id como el parámetro youtube_video_id a assets_create_asset (asset_type="YOUTUBE_VIDEO").
  • labels_manage_labels (herramienta manage_labels): Crea, actualiza y quita etiquetas de cuenta, incluidos el nombre, la descripción y el color de fondo hexadecimal.
  • labels_manage_label_associations (herramienta manage_label_associations): Admite operaciones de asociación de etiquetas CREATE y REMOVE (no se admite UPDATE) en recursos CAMPAIGN, CUSTOMER, AD_GROUP y AD_GROUP_CRITERION. Para los recursos CUSTOMER, resource_id es opcional y el valor predeterminado es customer_id. Pasa un ID de {ad_group_id}~{criterion_id} compuesto para los recursos AD_GROUP_CRITERION y quita las asociaciones pasando resource_id y label_id o association_resource_name. No se admiten las etiquetas AD_GROUP_AD a nivel del anuncio.

Recursos de referencia

El servidor expone cuatro recursos de MCP de solo lectura que permanecen activados, independientemente de tu configuración de tools_config.yaml:

  • resource://discovery-document: Descripción general del descubrimiento de REST de JSON de los recursos, los métodos de servicio y los esquemas de la API de Google Ads. Complementa la herramienta metadata_get_resource_metadata, que devuelve campos de consulta de GAQL que se pueden seleccionar, filtrar y ordenar.
  • resource://metrics: Es la documentación de referencia en HTML para las métricas de la API de Google Ads.
  • resource://segments: Es la documentación de referencia de HTML para los segmentos de la API de Google Ads.
  • resource://release-notes: Notas de la versión de la API de Google Ads en HTML que abarcan los cambios de versión y las funciones nuevas.

Flujo de trabajo de seguridad de propuesta y confirmación

Cada herramienta de mutación (assets_create_asset, assets_upload_video_asset, labels_manage_labels y labels_manage_label_associations) aplica un flujo de trabajo de dos pasos de propuesta y confirmación para ayudar a evitar modificaciones no deseadas en la cuenta:

  1. Proponer (validate_only=True, predeterminado): Valida las entradas sin confirmar los cambios. Las herramientas de recursos y etiquetas ejecutan una ejecución de prueba de la API de Google Ads en vivo de validate_only. Debido a que YouTubeVideoUploadService no tiene un modo de ejecución de prueba, assets_upload_video_asset valida el archivo local y vincula su tamaño y marca de tiempo de modificación. Cada herramienta devuelve entradas change_items legibles por humanos y un resumen checksum SHA-256 sin estado vinculado al parámetro customer_id y a la carga útil de la solicitud.
  2. Confirmar (validate_only=False): Después de presentar la lista de change_items y recibir tu aprobación, el agente vuelve a llamar a la herramienta con validate_only=False, los mismos parámetros y argumentos de customer_id, y el valor de checksum del paso 1. El servidor rechaza cualquier suma de comprobación faltante o que no coincida antes de mutar la cuenta.

Configura espacios de nombres de herramientas y el modo de solo lectura

El servidor incluye un archivo tools_config.yaml predeterminado con las cinco categorías de herramientas (customers, search, metadata, labels y assets) habilitadas. Personaliza tools_config.yaml para habilitar o inhabilitar de forma selectiva herramientas o espacios de nombres individuales, cambiar o quitar prefijos de espacios de nombres, o aplicar una implementación estrictamente de solo lectura.

Durante el inicio, el servidor resuelve tools_config.yaml en el siguiente orden:

  1. Una ruta de acceso explícita en la variable de entorno GOOGLE_ADS_MCP_TOOLS_CONFIG (recomendada para hosts locales de stdio, cuyo directorio de trabajo puede diferir de la carpeta de tu proyecto).
  2. Un archivo tools_config.yaml en el directorio de trabajo actual del servidor.
  3. El archivo tools_config.yaml predeterminado que se incluye en el paquete.

Si GOOGLE_ADS_MCP_TOOLS_CONFIG apunta a un archivo faltante o si algún archivo de configuración resuelto no es válido, el servidor genera un error durante el inicio en lugar de recurrir a los valores predeterminados.

El siguiente archivo tools_config.yaml mínimo aplica una implementación estrictamente de solo lectura:

namespaces:
  customers: true
  search: true
  metadata: true
  labels: false
  assets: false

En el siguiente archivo tools_config.yaml, se personalizan los prefijos y se filtran las herramientas individuales (por ejemplo, se expone la herramienta create_asset de base64 en Cloud Run mientras se inhabilita la herramienta upload_video_asset solo local):

namespaces:
  # Default prefix ("customers_list_accessible_customers")
  customers: true

  # Empty prefix mounts unprefixed tool names ("search")
  search: ""

  # Custom prefix ("schema_get_resource_metadata")
  metadata: "schema"

  # Enable only specific tools in a multi-tool category
  assets:
    enabled_tools:
      - create_asset

Instrucciones de ejemplo para comenzar

Prueba las siguientes instrucciones en tu cliente de MCP después de conectar el servidor.

Preguntar qué puede hacer el servidor

What can the google-ads-mcp server do?

Pregunta sobre los clientes

What customers do I have access to?

Preguntar sobre las campañas

How many active campaigns do I have?
How is my campaign performance this week?
Give me a report of the top spending campaigns split by device category over the last 7 days for account 1234567890

Crea activos, sube videos y administra etiquetas

Create a callout asset with the text "Free Shipping" for account 1234567890
Upload /path/to/promo.mp4 with title "Summer Sale" and description "Summer promo video" for account 1234567890
Create a label named "Q4 Promo" with background color #34A853 and apply it to campaign 9876543210 in account 1234567890

Implementación en Google Cloud

Para compartir el servidor de MCP entre varios agentes o ejecutarlo como un servicio web, alójalo en Google Cloud Run o en otro proveedor de infraestructura de nube en lugar de ejecutarlo de forma local.

Requisitos previos

  1. Un proyecto de Google Cloud con la API de Google Ads habilitada (consulta los requisitos previos para conocer los requisitos de acceso a producción)
  2. La herramienta de línea de comandos de gcloud instalada, autenticada y configurada con un proyecto activo:

    gcloud config set project PROJECT_ID
    

    Reemplaza lo siguiente:

    • PROJECT_ID: tu ID del proyecto de Google Cloud.

Compila y envía una imagen de Docker

Usa Cloud Build para compilar y enviar la imagen de contenedor a Artifact Registry sin instalar Docker de forma local:

  1. Crea un repositorio en Artifact Registry:

    gcloud artifacts repositories create mcp-servers \
      --repository-format=docker --location=us-central1
    
  2. Compila y envía la imagen desde una etiqueta de versión en el repositorio de GitHub (o desde . en una confirmación de la compra local si personalizaste Dockerfile o tools_config.yaml):

    gcloud builds submit https://github.com/googleads/google-ads-mcp \
      --git-source-revision=v0.0.6 \
      --tag=us-central1-docker.pkg.dev/PROJECT_ID/mcp-servers/google-ads-mcp:v0.0.6
    

    Reemplaza lo siguiente:

    • PROJECT_ID: tu ID del proyecto de Google Cloud.

    Vuelve a compilar y a implementar la imagen cada vez que actualices google-ads-mcp o la biblioteca cliente de Python google-ads empaquetada para las nuevas versiones de la API de Google Ads (como la v26.2).

Implementar en Google Cloud Run

Configura las siguientes variables de entorno y secretos para tu servicio de Cloud Run:

  • GOOGLE_ADS_MCP_OAUTH_CLIENT_ID: Es el ID de cliente de la aplicación web de OAuth 2.0 de tu proyecto de Google Cloud con la API habilitada para la autenticación de OAuth a nivel de la aplicación. Completa los siguientes pasos de configuración de OAuth:
    • Agrega los URIs de redireccionamiento autorizados para los clientes de IA que planeas conectar (como https://claude.ai/api/mcp/auth_callback, https://chatgpt.com/connector_platform_oauth_redirect o https://antigravity.google/oauth-callback).
    • Agrega el permiso https://www.googleapis.com/auth/adwords a la pantalla de consentimiento de OAuth en APIs y servicios > Pantalla de consentimiento de OAuth > Acceso a los datos (Agregar o quitar permisos).
    • Si el estado de publicación de la pantalla de consentimiento de OAuth se establece en Prueba (el valor predeterminado), agrega las Cuentas de Google que se conectan al servidor de MCP como Usuarios de prueba en APIs y servicios > Pantalla de consentimiento de OAuth > Público (Usuarios de prueba > + Agregar usuarios).
  • GOOGLE_ADS_MCP_OAUTH_CLIENT_SECRET: Es el secreto del cliente de OAuth que corresponde a tu ID de cliente de OAuth.
  • GOOGLE_ADS_MCP_BASE_URL: Es la URL base pública de tu servidor de MCP (por ejemplo, https://google-ads-mcp-xyz-uc.a.run.app). Cloud Run asigna esta URL durante la implementación inicial, por lo que primero debes realizar la implementación sin esta variable y, luego, actualizar el servicio.
  • GOOGLE_ADS_MCP_JWT_SIGNING_KEY (recomendado para Cloud Run de instancias múltiples): Es un Secret persistente que firma los JWT de FastMCP en los reinicios de contenedores y el escalamiento horizontal.
  • GOOGLE_ADS_MCP_STORAGE_TYPE (recomendado para Cloud Run de varias instancias): Backend persistente para registros y tokens de clientes de OAuth (redis con GOOGLE_ADS_MCP_STORAGE_REDIS_URL o firestore). Debido a que el Dockerfile de v0.0.6 estándar solo instala el backend en la memoria, primero instala py-key-value-aio[redis] o .[firestore] en un Dockerfile personalizado. Para usar firestore, también se requiere una base de datos de Firestore y el rol de IAM roles/datastore.user en la cuenta de servicio de Cloud Run. Para las pruebas de instancia única con almacenamiento en memoria, pasa --max-instances=1.
  • GOOGLE_ADS_LOGIN_CUSTOMER_ID (opcional): Es el ID de cliente administrador predeterminado de 10 dígitos (sin guiones) que se usa cuando las llamadas a la herramienta omiten el parámetro login_customer_id.
  • GOOGLE_ADS_MCP_TOOLS_CONFIG (opcional): Es la ruta de acceso del contenedor a un archivo tools_config.yaml personalizado (por ejemplo, activado desde Secret Manager en /etc/mcp/tools_config.yaml para aplicar el modo de solo lectura sin volver a compilar la imagen). Consulta Configura los espacios de nombres de las herramientas y el modo de solo lectura.

Almacena GOOGLE_ADS_MCP_OAUTH_CLIENT_SECRET y GOOGLE_ADS_MCP_JWT_SIGNING_KEY en Secret Manager, y, luego, implementa el servicio en Google Cloud Run:

gcloud run deploy google-ads-mcp \
  --image=us-central1-docker.pkg.dev/PROJECT_ID/mcp-servers/google-ads-mcp:v0.0.6 \
  --platform=managed \
  --region=us-central1 \
  --allow-unauthenticated \
  --set-env-vars="GOOGLE_ADS_MCP_OAUTH_CLIENT_ID=CLIENT_ID" \
  --set-secrets="GOOGLE_ADS_MCP_OAUTH_CLIENT_SECRET=MCP_OAUTH_CLIENT_SECRET:latest,GOOGLE_ADS_MCP_JWT_SIGNING_KEY=MCP_JWT_SIGNING_KEY:latest"

Después de que Cloud Run complete la implementación, recupera la URL del servicio asignada y actualiza el servicio con la variable de entorno GOOGLE_ADS_MCP_BASE_URL:

gcloud run services update google-ads-mcp \
  --region=us-central1 \
  --update-env-vars="GOOGLE_ADS_MCP_BASE_URL=https://CLOUD_RUN_SERVICE_URL"

Reemplaza lo siguiente:

  • PROJECT_ID: tu ID del proyecto de Google Cloud.
  • CLIENT_ID: Es el ID de cliente de la aplicación web de OAuth 2.0.
  • MCP_OAUTH_CLIENT_SECRET: Es el nombre del Secret Manager que almacena tu secreto del cliente de OAuth 2.0.
  • MCP_JWT_SIGNING_KEY: Es el nombre del Secret de Secret Manager que almacena tu clave de firma de JWT.
  • CLOUD_RUN_SERVICE_URL: el nombre de host asignado a tu servicio de Cloud Run (por ejemplo, google-ads-mcp-xyz-uc.a.run.app).

Modelo de autenticación y seguridad

La implementación con --allow-unauthenticated inhabilita la verificación de IAM de la infraestructura de Cloud Run (roles/run.invoker) para que los clientes de IA externos puedan conectarse sin tokens de cuentas de servicio de Google Cloud. En cambio, la autenticación se delega a la capa de aplicación:

  • Cuando se configuran GOOGLE_ADS_MCP_OAUTH_CLIENT_ID y GOOGLE_ADS_MCP_OAUTH_CLIENT_SECRET, el servidor aplica OAuth 2.0 de Google en cada solicitud y devuelve un código de estado HTTP 401 Unauthorized a los emisores no autenticados. Cada llamada a la herramienta se ejecuta con la identidad de OAuth del emisor autenticado.
  • Omitir --allow-unauthenticated requiere que los emisores pasen tokens de identidad de OIDC de Google Cloud con cada solicitud. Los clientes de IA estándar (como Claude y ChatGPT) usan OAuth de usuario final en lugar de tokens de IAM de Google Cloud, por lo que las conexiones directas requieren --allow-unauthenticated vinculado con OAuth a nivel de la aplicación.

Configura el cliente de MCP

Después de la implementación, configura tu cliente de MCP con la URL del servicio de Cloud Run. Debido a que el servidor aplica OAuth 2.0, tu cliente debe admitir el flujo de OAuth de MCP o proporcionar un token de portador autorizado:

  • Clientes habilitados para OAuth: En los clientes que admiten el descubrimiento de OAuth de MCP (como Antigravity), la conexión activa una notificación de acceso con Google para otorgar el permiso https://www.googleapis.com/auth/adwords (que se muestra como .../auth/adwords en la consola de Google Cloud).
  • Plataformas de IA de terceros (Claude, ChatGPT): En la configuración del conector de tu cliente, agrega un conector personalizado que apunte a la URL de tu servicio con la ruta de acceso /mcp (por ejemplo, https://google-ads-mcp-xyz-uc.a.run.app/mcp). Selecciona la autenticación de OAuth 2.0 con tu ID de cliente de OAuth y el secreto del cliente, y confirma que el URI de devolución de llamada del cliente esté en los URI de redireccionamiento autorizados de tu cliente de OAuth.
  • Clientes sin compatibilidad con OAuth: Los clientes que no admiten flujos de OAuth HTTP reciben un código de estado HTTP 401 Unauthorized. Para esos clientes, usa la configuración de stdio local.

En el siguiente ejemplo, se configura la herramienta de línea de comandos de gemini en ~/.gemini/settings.json (para Google Antigravity en ~/.gemini/config/mcp_config.json, reemplaza "httpUrl" por "serverUrl" o "url"):

{
  "mcpServers": {
    "google-ads-mcp": {
      "httpUrl": "https://CLOUD_RUN_SERVICE_URL/mcp"
    }
  }
}

Reemplaza lo siguiente:

  • CLOUD_RUN_SERVICE_URL: el nombre de host asignado a tu servicio de Cloud Run (por ejemplo, google-ads-mcp-xyz-uc.a.run.app).

Próximos pasos