Skip to main content
Glama
ambo-sk

Google Ads MCP Worker

by ambo-sk

Google Ads MCP Worker

Сервер Google Ads MCP на Cloudflare Worker. Та же структура, что и mcp-gsc: TypeScript, REST через fetch, без клиентской библиотеки Google.

  • Переработка FGRibreau/mcp-google-ads (Rust, API v23) на API v25

  • Аутентификация: OAuth2 refresh token. Google Ads API не принимает сервисные аккаунты, поэтому подход с JWT из GSC здесь не работает

  • Транспорты: Streamable HTTP (/mcp) и устаревший SSE (/sse)

Запись не защищена. Нет dry-run, нет лимита бюджета, нет ограничения повышения ставок, нет двухэтапного подтверждения, нет журнала аудита. Каждый инструмент изменения применяется немедленно к тому аккаунту, на который указывает customer_id. create_campaign, create_ad_group и create_responsive_search_ad по умолчанию используют PAUSED, но это значение по умолчанию, которое можно переопределить, а не блокировка. Направляйте это на тестовый аккаунт, пока не убедитесь в надёжности настройки.

Настройка

1. Токен разработчика Google Ads

Аккаунт менеджера (MCC) → Инструменты и настройки → API Center → подайте заявку на токен разработчика. Пока не одобрен Basic Access, токен работает только с тестовыми аккаунтами.

2. OAuth-клиент

  1. Google Cloud Console → выберите/создайте проект → включите Google Ads API.

  2. APIs & Services → Credentials → Create credentials → OAuth client ID → Desktop app.

  3. Запишите client ID и client secret.

3. Refresh token

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

Открывает браузер, запрашивает область adwords, выводит GOOGLE_ADS_REFRESH_TOKEN. Войдите как аккаунт Google, у которого есть доступ к аккаунту Ads, которым вы хотите управлять.

4. Развёртывание

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

Задайте несекретные значения по умолчанию в wrangler.jsonc:

Переменная

Значение

GOOGLE_ADS_CUSTOMER_ID

Аккаунт по умолчанию, только цифры. Инструменты принимают customer_id для переопределения в каждом вызове.

GOOGLE_ADS_LOGIN_CUSTOMER_ID

Ваш MCC-идентификатор, отправляется как login-customer-id. Оставьте пустым, если вы не под менеджером.

GOOGLE_ADS_API_VERSION

По умолчанию v25. Обновите здесь, когда Google выпустит новую версию.

Локальная разработка: скопируйте .dev.vars.example в .dev.vars, затем npm run dev.

5. Подключение клиента

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

Клиенты Claude Desktop / только stdio:

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

Затем вызовите health_check — он сообщает статус OAuth, наличие токена разработчика и доступные аккаунты.

Related MCP server: Google Ads MCP

Инструменты

46 инструментов. Каждый инструмент, привязанный к аккаунту, принимает необязательный customer_id.

Чтение (21)

Инструмент

Что делает

health_check

Статус аутентификации, версия API, настроенные аккаунты

list_accounts

Доступные аккаунты (с именами, если настроен MCC)

get_account_info

Валюта, часовой пояс, автотегирование, флаг тестового аккаунта

run_gaql

Любой GAQL-запрос; searchStream по умолчанию, с постраничным выводом при заданных page_size/page_token

get_campaign_performance

Метрики кампаний по стоимости

get_ad_group_performance

Метрики групп объявлений

get_ad_performance

Метрики объявлений с заголовками/описаниями RSA и статусом одобрения

get_keyword_performance

Метрики ключевых слов с типом соответствия, показателем качества, ставкой

get_search_terms

Фактические запросы — источник минус-слов

get_negative_keywords

Минус-слова кампании / группы объявлений / общего набора

get_geo_performance

Метрики по местоположению

get_device_performance

Метрики по устройствам

get_change_history

События изменений (API хранит 30 дней)

list_assets

Активы и уровень их привязки

get_policy_issues

Отклонённые и ограниченные объявления с темами политик

get_conversion_actions

Действия конверсии с категорией, подсчётом, окном возврата

list_recommendations

Рекомендации Google плюс оценки влияния

search_geo_targets

Название места → константа идентификатора геотаргетинга

discover_keywords

Идеи ключевых слов из источников и/или URL

get_keyword_historical_metrics

Объём/конкуренция для фиксированного списка ключевых слов

get_keyword_forecasts

Прогноз для гипотетической кампании

Запись (25)

Инструмент

Что делает

create_campaign_budget

Дневной бюджет, общий или нет

create_campaign

Кампания + необязательный бюджет одним вызовом

update_campaign

Название, статус, бюджет, даты, стратегия назначения ставок

create_ad_group / update_ad_group

Группы объявлений и CPC по умолчанию

add_keywords / update_keyword

Позитивные ключевые слова, ставки, финальные URL

add_negative_keywords

Минус-слова кампании или группы объявлений

create_responsive_search_ad

RSA с закреплением; ограничения длины проверяются перед отправкой

set_entity_status

Пауза / включение / удаление чего угодно по имени ресурса

add_geo_target

Таргетинг или исключение местоположений с модификаторами ставок

set_campaign_geo_target_type

Присутствие против присутствия-или-интереса

set_ad_schedule

Окна показов по дням и модификаторы ставок

add_audience_targeting / create_custom_audience

Аудитории

create_asset / attach_assets / remove_asset_link

Быстрые ссылки, уточнения, сниппеты, текст, изображения

create_conversion_action / update_conversion_action

Настройка конверсий, основные/вторичные

create_bidding_strategy

Портфельные стратегии

apply_recommendation / dismiss_recommendation

Действия по рекомендациям Google

mutate

Сырой mutate для любой коллекции ресурсов — покрывает всё выше

mutate_batch

Атомарный googleAds:mutate с временными идентификаторами между ресурсами

mutate и mutate_batch — это запасные выходы: всё, что добавляет Google, или любой ресурс без именованного инструмента (общие наборы, списки пользователей, группы активов, эксперименты, метки), обрабатывается через них без изменения кода. Оба принимают validate_only, если нужен ручной dry-run.

Проверки

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

Примечания

  • Деньги передаются в единицах валюты (25.5) и внутренне конвертируются в микроны.

  • Полезные нагрузки mutate используют даты YYYYMMDD; отчётность использует YYYY-MM-DD. Инструменты везде принимают YYYY-MM-DD и конвертируют.

  • updateMask использует имена полей в snake_case — это важно, если вы вручную пишете операции для mutate.

  • Токены доступа кэшируются на каждый изолят Worker; refresh token не истекает, если не отозван или не использовался 6 месяцев.

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
    C
    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.
    18 npm
    6
    MIT