Перейти к содержанию
GetProfit

MCP-сервер Google Ads: подключаем Claude и закрываем доступ

Подключите официальный MCP-сервер Google, чтобы Claude читал ваш кабинет Google Ads, и войдите ролью «Только чтение»: тогда ключи не смогут менять кампании.

MCP-сервер Google Ads — это программа Google с открытым кодом, которая позволяет ИИ-ассистенту, например Claude, запрашивать ваш рекламный кабинет через Google Ads API. Текущая версия работает только на чтение и содержит три инструмента. Чтобы подключить её, нужны проект Google Cloud с доступом не ниже Explorer, учётные данные OAuth и один блок настроек в ассистенте. Сначала закройте доступ: входите через отдельный Google-аккаунт с ролью «Только чтение», потому что API использует одно и то же разрешение и для чтения, и для записи.

Ассистент, подключённый через MCP, — один из нескольких способов дать программе работать в вашем рекламном кабинете. Остальные — автоматизированные правила, скрипты и сам API. Наше руководство по автоматизации Google Ads сравнивает их. В этой статье — официальный сервер, два вида уровней доступа, которые его ограничивают, настройка в Claude Desktop и Claude Code и ограничения, с которыми вы столкнётесь в первую неделю.

Что официальный сервер умеет и чего не умеет

Model Context Protocol — это стандарт с открытым кодом для подключения ИИ-приложений к внешним системам, как сказано в документации MCP. MCP-сервер — программа на другой стороне этого соединения. Он предлагает инструменты. Когда их вызывать, решает модель, стоящая за ассистентом, а результаты попадают в контекстное окно модели.

Сервер Google стоит между ассистентом и Google Ads API. По руководству по интеграции для разработчиков это программа на Python, которая запускается на вашем компьютере или в Cloud Run как веб-сервис. Входит она через OAuth 2.0 или сервисный аккаунт. Текущая версия работает только на чтение: по описанию Google, она не может менять ставки, останавливать кампании и создавать новые объекты. Код открыт на GitHub по лицензии Apache 2.0.

ИнструментЧто делаетДля чего использовать
list_accessible_customersВозвращает ID аккаунтов, к которым вошедший пользователь имеет прямой доступПроверить, что ассистент видит только те аккаунты, которые вы имели в виду
get_resource_metadataОписывает тип ресурса, например campaign: по каким полям можно делать выборку и фильтрациюНе дать модели угадывать названия полей
searchСобирает запрос из полей, ресурса, условий, сортировки и необязательного лимита строк, затем возвращает строкиЛюбой отчёт: кампании, товары, поисковые запросы, история изменений

Инструмент search сам пишет запрос на GAQL, и запрос всегда начинается с SELECT. Сервер остаётся только читающим, потому что каждый инструмент вызывает только методы API для чтения: ни один не отправляет изменение. Кроме того, сервер предлагает четыре справочных ресурса: discovery-документ API, список метрик, список сегментов и последние заметки о выпуске.

Две строки в README сервера важны ещё до подключения. Данные вашего кабинета уходят тому ассистенту и той модели, которые вы подключаете к серверу. И сервер добавляет к вызовам API дополнительный заголовок, чтобы Google мог собирать данные об использовании.

Два вида уровней доступа определяют, до чего дотянется ассистент

Google называет «уровнем доступа» две несвязанные вещи. Одна ограничивает, что вошедший пользователь может делать в рекламном кабинете. Другая — сколько запросов может выполнять ваш проект Google Cloud. Настроить нужно обе.

Уровни доступа пользователя: что вошедший может менять

Google Ads API заимствует модель доступа у Google Ads. Согласно странице Understand the Google Ads access model, API использует одни и те же OAuth-скоупы и для операций только чтения, и для операций чтения с записью. Он следует ролям пользователей, которые поддерживает Google Ads. Об этом же говорит код самого сервера: отдельного скоупа «только чтение» Google не публикует, поэтому ограничение чтением обеспечивают инструменты, которые предлагает сервер.

Следствие: официальный сервер ничего не запишет, но учётные данные, которые вы для него создали, смогут — в любом другом инструменте, который их использует. Ограничение на изменения, которое обеспечивает сам Google, — это роль вошедшего пользователя. API различает четыре уровня доступа пользователя, то есть роли, перечисленные в справочнике AccessRole:

РольЧто разрешает
Администратор (Admin)Владеет аккаунтом и управляет тем, кого ещё добавить
Стандартный (Standard)Может менять кампании, но не влияет на других пользователей
Только чтение (Read only)Может просматривать кампании и изменения в аккаунте, но не может ничего править
Только оповещения по эл. почте (Email only)Получатель писем, а не настоящий пользователь

Роли, выданные в управляющем аккаунте, передаются каждому связанному с ним аккаунту. Допустим, вы подключаетесь Google-аккаунтом, у которого есть доступ «Стандартный» или «Администратор» в управляющем аккаунте агентства. Тогда ассистент доберётся до каждого клиентского аккаунта под ним с этой ролью.

Уровни доступа API: сколько запросов может выполнять ваш проект Cloud

Google отказался от токенов разработчика 9 сентября 2026 года, как сказано на странице Developer token. Уровни доступа API теперь принадлежат проекту Google Cloud, которому принадлежит ваш OAuth-клиент или сервисный аккаунт. Если запрос всё ещё содержит токен разработчика, API его игнорирует.

В README репозитория шаг с токеном разработчика всё ещё описан и помечен как необязательный. В руководстве Google по интеграции сказано, что последней версии сервера токен больше не нужен.

Лимиты каждого уровня — со страницы Google Access levels and permissible use:

Уровень доступа APIКакие аккаунты можно запрашиватьОпераций в сутки
TestТолько тестовые аккаунты15 000
ExplorerТестовые и рабочие аккаунты2 880 на рабочих аккаунтах, 15 000 на тестовых
BasicТестовые и рабочие аккаунты15 000
StandardТестовые и рабочие аккаунтыБез ограничений

Explorer — самый низкий уровень, который может запрашивать рабочий аккаунт, то есть тот, что показывает реальную рекламу. Заявку на него подают на странице Google Ads API Overview в Google Cloud Console, а Google может повысить уровень проекта автоматически. Прежде чем подавать заявку на Basic, вашему проекту Cloud нужна верификация бренда.

Каждый запрос Search или SearchStream считается одной операцией, сколько бы строк он ни вернул (API limits and quotas). Google считает сутками последние 24 часа в любой момент. Поэтому 2 880 операций в сутки — это две в минуту круглосуточно.

Человеку, который задаёт вопросы, этого хватает с запасом. Ассистент, который делает отдельный запрос на каждую кампанию или на каждый день, может израсходовать лимит целиком.

Как подключить Claude к Google Ads: пошагово

В этих шагах замок ставится первым, чтобы учётные данные никогда не принадлежали Google-аккаунту с правами администратора.

  1. Создайте Google-аккаунт, от имени которого будет действовать ассистент. Возьмите отдельный адрес, например reports@ваш-домен. Попросите администратора кабинета выдать ему роль «Только чтение» в Google Ads (как выдать роль). Проверка: новый аккаунт принял приглашение, а в списке пользователей рядом с его адресом стоит «Только чтение».

  2. Настройте проект Google Cloud. Включите в нём Google Ads API, откройте страницу Google Ads API Overview и подайте заявку на Explorer, если у проекта всё ещё указан Test. Проверка: на странице указан Explorer, Basic или Standard.

  3. Создайте учётные данные OAuth и войдите аккаунтом с ролью «Только чтение». Создайте OAuth-клиент для компьютера или веб-приложения, скачайте его JSON-файл и выполните команду из README. Когда откроется браузер, выберите аккаунт «Только чтение», а не свой аккаунт администратора.

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

    Проверка: команда печатает путь, по которому сохранила файл с учётными данными. Относитесь к этому файлу как к паролю: тот, у кого он есть, действует от имени этого пользователя.

  4. Установите pipx и добавьте сервер в ассистента. Вот блок из руководства Google по интеграции:

    {
      "mcpServers": {
        "google-ads-mcp": {
          "command": "pipx",
          "args": ["run", "--spec", "git+https://github.com/googleads/google-ads-mcp.git", "google-ads-mcp"],
          "env": {
            "GOOGLE_PROJECT_ID": "YOUR_PROJECT_ID",
            "GOOGLE_APPLICATION_CREDENTIALS": "/path/to/credentials.json"
          }
        }
      }
    }
    • Claude Desktop: откройте «Settings» в меню Claude, перейдите в «Developer» и выберите «Edit Config». Откроется файл claude_desktop_config.json. Вставьте блок, сохраните, затем полностью закройте приложение и запустите снова (Connect to local MCP servers).
    • Claude Code: добавьте тот же сервер из командной строки (Connect Claude Code to tools via MCP). Оставьте --transport stdio между переменными и именем сервера, иначе командная строка прочтёт имя как ещё одну переменную.
    claude mcp add --env GOOGLE_PROJECT_ID=YOUR_PROJECT_ID GOOGLE_APPLICATION_CREDENTIALS=/path/to/credentials.json \
      --transport stdio google-ads-mcp \
      -- pipx run --spec git+https://github.com/googleads/google-ads-mcp.git google-ads-mcp

    Если вы попадаете в аккаунт через управляющий аккаунт, добавьте GOOGLE_ADS_LOGIN_CUSTOMER_ID с ID управляющего. Согласно README, тот же блок mcpServers работает в Cursor и VS Code.

  5. Сделайте первую проверку. Спросите: «К каким аккаунтам у меня есть доступ?» Проверка: в ответе список ID аккаунтов. Если вы видите ошибку CLOUD_PROJECT_NOT_APPROVED_FOR_PRODUCTION, у проекта пока доступ Test.

Что закрыть до первого настоящего запроса

ЗамокЗачем
Отдельный Google-аккаунт с ролью «Только чтение»API следует ролям пользователей, и эта роль — ограничение на изменения, которое обеспечивает Google
Доступ к одному рекламному кабинету напрямую, а не через управляющий аккаунтРоли в управляющем аккаунте передаются каждому связанному аккаунту
Учётные данные вне общей конфигурацииВ Claude Code --scope project записывает сервер в .mcp.json — файл, который предназначен для общего использования через систему контроля версий. Локальная область по умолчанию хранит его в ~/.claude.json
Сервер как отдельный процесс, если им пользуются несколько инструментовВ README сказано, что сервер, который запускает сам ассистент, хуже изолирует учётные данные, потому что путь к ним лежит в настройках ассистента. Если вы запускаете сервер как локальный веб-сервис, пусть он слушает только локальный адрес (loopback)
Только нужные инструментыtools_config.yaml включает и выключает отдельные инструменты и их группы
Журнал того, что спрашивалиСервер записывает в журнал каждый запрос, который собирает инструмент search. Claude Desktop пишет вывод stderr локального сервера в mcp-server-<name>.log, на macOS — в ~/Library/Logs/Claude
Человек между моделью и любым изменениемСпецификация MCP требует, чтобы человек всегда мог отклонить вызов инструмента. Она также предписывает ассистенту считать метку «read-only» у инструмента недостоверной, если сервер не доверенный
Осторожность с чужим текстомВ данные кабинета входит текст, который написали люди вне вашей компании, например поисковые запросы. Prompt injection прячет инструкции в таком тексте. С инструментами только для чтения вред — неверный ответ. С инструментами записи это изменение в кабинете
Тестовый аккаунт перед любым сервером, который пишетТестовые аккаунты не показывают рекламу и требуют собственного тестового управляющего аккаунта. В них нет данных о результатах, поэтому для сервера только для чтения они лишь доказывают, что соединение работает

Два из этих замков важнее всего, когда вы добавляете сторонний сервер с инструментами записи: осторожность с чужим текстом и тестовый аккаунт. Какие ограничители нужны в этом случае, описано в нашей статье ИИ-агенты, которые меняют ваш кабинет.

Ограничения, с которыми вы столкнётесь в первую неделю

Ответы, которые не помещаются. Инструмент search возвращает каждую строку, если модель не задала лимит. Claude Code предупреждает, когда вывод инструмента превышает 10 000 токенов. Выше 25 000 токенов по умолчанию он сохраняет результат в файл и передаёт Claude путь к нему.

Пример на вымышленном магазине, числа не клиентские.

У магазина посуды 3 000 товаров, и 1 200 из них получили показы в этом месяце. Отчёт с одной строкой на товар в день за 30 дней может вернуть до 36 000 строк. При лимите в 25 000 токенов на строку остаётся меньше одного токена. Просите итоги по кампаниям или 50 товаров с наибольшим расходом, а не каждую строку.

Квота. На уровне Explorer все, кто пользуется проектом Cloud, включая ассистента, делят 2 880 операций в сутки.

История изменений. Ресурс change_event охватывает только последние 30 дней, и каждому запросу нужен LIMIT не больше 10 000 строк (Change Event). По каждому изменению он показывает старые и новые значения и то, пришло ли изменение через API или через веб-интерфейс. Он также называет пользователя, если его показывает «История изменений».

Поля, которые значат не то, что кажется. Три примера из справочников полей Google для API:

  • Деньги приходят в микроединицах: миллион микроединиц равен одной единице валюты аккаунта (справочник campaign_budget).
  • metrics.all_conversions считает все конверсии, включая действия, которые вы не включили в столбец «Конверсии» (справочник metrics).
  • Доля потерянных из-за бюджета показов в поиске (Search budget lost impression share) доходит только до 0,9: всё, что выше, API сообщает как 0,9001.

Наша статья про ИИ для анализа Google Ads показывает, как модель неверно читает такие поля, и даёт запросы, которые не дают ей выдумывать числа. В нашем руководстве по GAQL для отчётов по товарам есть готовые запросы по товарам в Shopping и Performance Max.

Сначала чтение, каждая запись с подтверждением: правила из нашего проектного брифа MCP

В апреле 2026 года мы набросали проектный бриф для собственного MCP-сервера Google Ads. Это внутренний черновик, а не описание работающего продукта. Его правила подходят для любой схемы:

  1. Чтение — первым. Первый этап — только чтение, запись — отдельный более поздний этап.
  2. Инструмент свободных запросов принимает только SELECT. Сырой GAQL может только читать данные.
  3. Каждая запись требует явного подтверждения. Инструменты, которые задают лейблы товаров и ставки, ждут «да», а инструмент ставок перед применением нового значения показывает прежнее.
  4. Изменения структуры проходят через человека. Инструмент формирует CSV для Google Ads Editor, который человек проверяет и импортирует.
  5. Проект учитывает большие ответы и квоту. У каждого инструмента есть параметр лимита, постраничная выдача и режим сводки. Кэширование и пакетные запросы берегут суточную квоту.

Портал следует той части этих правил, что касается чтения, и вам не нужно запускать никакой сервер. Можно войти отдельным Google-аккаунтом с ролью «Только чтение», и тогда гарантия лежит на стороне Google (как портал читает ваш кабинет).

Портал и самодельное подключение различаются двумя вещами: поддержкой и историей. MCP-подключение вам строить и поддерживать самим, а два года истории магазина в чат не помещаются (портал в сравнении с ChatGPT). При первом подключении портал запрашивает у Google до двух лет истории по товарам. Дальше он хранит собственную копию записей об изменениях, которые API отдаёт только за 30 дней.

Хотите гарантию, а не обещание? Войдите Google-аккаунтом, у которого в вашем кабинете роль «Только чтение». Портал полностью наследует права вошедшего, поэтому изменить что-либо не сможет даже теоретически: Google отклонит попытку — у пользователя недостаточно прав.

Войти через Google Ads →

Три первых запроса и как проверить ответы

  1. «К каким аккаунтам у меня есть доступ?» Сравните ID со списком аккаунтов в Google Ads. Лишний ID означает, что Google-аккаунт достаёт дальше, чем вы планировали.
  2. «Через get_resource_metadata покажи для shopping_performance_view поля расхода, кликов и ценности конверсий.» Собственные инструкции сервера велят модели искать поля, а не угадывать. Этот запрос показывает, делает ли она так.
  3. «Покажи расход, клики и ценность конверсий по кампаниям за прошлый месяц, 20 кампаний с наибольшим расходом.» Откройте в Google Ads раздел «Кампании» за те же даты и сравните итоги. Если они различаются, проверьте сначала даты, затем микроединицы, затем не использовала ли модель all_conversions.

Используйте числа ассистента в решениях, когда все три ответа совпадают с тем, что вы видите в Google Ads.

Частые вопросы

Может ли MCP-сервер Google Ads менять мои кампании?

Нет. Google описывает текущую версию как только читающую, и её инструменты вызывают только методы API для чтения. Другие MCP-серверы для Google Ads могут включать инструменты записи. Проверяйте их список инструментов и считайте их собственные пометки «read-only» заявлениями, а не гарантиями.

Работает ли он с ассистентами, кроме Claude?

Да, с любым ассистентом, который поддерживает MCP. В README описана настройка для Antigravity от Google, Codex от OpenAI, Claude Code, Cursor и VS Code.

Нужен ли мне по-прежнему токен разработчика?

Нет. С 9 сентября 2026 года уровень доступа API принадлежит проекту Google Cloud. Если запрос всё ещё содержит токен разработчика, API его игнорирует.

Источники

  • Google Ads MCP server: Developer integration guide (на английском) — текущая версия только для чтения, Python, stdio или Cloud Run, OAuth 2.0 или сервисный аккаунт, три инструмента, токен разработчика больше не нужен, блок настроек. Проверено 02.10.2026.
  • googleads/google-ads-mcp on GitHub (на английском) — инструменты и ресурсы, примечания о передаче данных и заголовке использования, tools_config.yaml, изоляция учётных данных, Claude Code и другие клиенты, команда gcloud; исходный код инструмента search. Проверено 02.10.2026.
  • Understand the Google Ads access model (на английском) — одни и те же OAuth-скоупы для чтения и для чтения с записью; API следует ролям пользователей Google Ads; роли передаются через управляющие аккаунты. Проверено 02.10.2026.
  • AccessRole (на английском) — что разрешают роли Admin, Standard, Read only и Email only. Проверено 02.10.2026.
  • Developer token (на английском) — токены разработчика отключены 9 сентября 2026 года; уровни доступа принадлежат проекту Cloud; верификация бренда для Basic; ошибка доступа Test. Проверено 02.10.2026.
  • Access levels and permissible use (на английском) — лимиты Test, Explorer, Basic и Standard; как подать заявку на Explorer; скользящие сутки в 24 часа. Проверено 02.10.2026.
  • API limits and quotas (на английском) — один запрос Search или SearchStream считается одной операцией. Проверено 02.10.2026.
  • Test accounts (на английском) — тестовые аккаунты не показывают рекламу и требуют отдельной иерархии тестовых управляющих аккаунтов. Проверено 02.10.2026.
  • Change Event (на английском) — окно 30 дней, LIMIT в 10 000 строк, старые и новые значения, пользователь и тип клиента. Проверено 02.10.2026.
  • Metrics reference и campaign_budget reference (на английском) — all_conversions, потолок 0,9 для доли потерянных из-за бюджета показов в поиске, микроединицы. Проверено 02.10.2026.
  • What is the Model Context Protocol (MCP)? и Tools in the MCP specification (на английском) — определение MCP; человек в контуре; аннотации инструментов недостоверны, если сервер не доверенный. Проверено 02.10.2026.
  • Connect to local MCP servers (на английском) — файл настроек Claude Desktop и файлы журналов сервера. Проверено 02.10.2026.
  • Connect Claude Code to tools via MCP и Claude Code security (на английском) — claude mcp add, области установки, лимиты вывода в 10 000 и 25 000 токенов, prompt injection. Проверено 02.10.2026.
  • Проектный бриф MCP-сервера GetProfit, апрель 2026 (внутренний черновик) — сначала чтение, сырые запросы только SELECT, подтверждаемые записи, CSV для Editor по структуре, лимиты и постраничная выдача.

Ещё по теме