mcp-microsoft-ads
mcp-microsoft-ads
Неофициальный — не связан с Microsoft, не одобрен и не поддерживается Microsoft. Это сторонний MCP-сервер (Model Context Protocol) для Microsoft Advertising. «MCP» — это открытый протокол, который позволяет ИИ-ассистенту (Claude или любому другому MCP-клиенту) вызывать инструменты для работы с реальной системой — здесь, с вашим аккаунтом Microsoft Ads.
MCP-сервер для Microsoft Ads с приоритетом безопасности: 47 инструментов, покрывающих управление кампаниями, группами объявлений, ключевыми словами, минус-словами, геотаргетингом, расписанием показов, расширениями, медиа, аудиториями и целями конверсий, а также отчёты по эффективности и исследование ключевых слов Ad Insight — создан так, чтобы предоставление ИИ-ассистенту доступа на запись к живому рекламному аккаунту не означало предоставление ему «пустого чека».
Почему «безопасность прежде всего»
Каждый изменяющий инструмент по умолчанию отключён. Включение записи — это одна переменная окружения, и даже тогда каждая запись проходит через один и тот же многоуровневый контроль, прежде чем хотя бы один вызов достигнет API Microsoft:
MS_ADS_ENABLE_WRITES=true— без этого каждый инструмент записи отказывается работать. Из коробки это сервер только для чтения.Черновик → подтверждение. Инструмент записи никогда не изменяет данные при собственном вызове. Он возвращает предпросмотр (
draft_idи точное описание того, что изменится); ничего не применяется, пока вы — или ваш MCP-клиент — не вызоветеconfirm_and_apply(draft_id).Лимиты расходов. Создание черновика и применение отклоняют суммы выше
MS_ADS_MAX_DAILY_BUDGET(по умолчанию 1000) илиMS_ADS_MAX_CPC(по умолчанию 50), в валюте самого аккаунта, а не в долларах США.Защита от сбоев при интеллектуальных ставках. Запись ставок и корректировок разрешена только для стратегий ручных ставок (
ManualCpc,EnhancedCpc,ManualCpv,ManualCpm,ManualCpa); неизвестная или автоматизированная стратегия (MaxConversions,TargetCpa,TargetRoas, …) отклоняется, а не считается безопасной.Журнал аудита JSONL. Каждый черновик и каждое применение добавляются в локальный, доступный только для добавления файл JSONL — текстовый след того, что этот сервер фактически сделал.
Подкреплено 380+ офлайн-тестами (без живых вызовов API), которые проверяют ограничения, особенности SOAP-соединения и жизненный цикл черновик/подтверждение на фейковых объектах.
Будьте честны насчёт того, чем «черновик → подтверждение» не является
Черновик → подтверждение — это предварительный контроль от случайных ошибок при
одиночном вызове — опечатка в ставке, ошибка копирования, вызов не того инструмента.
Это не контроль доступа с одобрением человека: тот же MCP-клиент, который создал
черновик, может немедленно вызвать confirm_and_apply, и сервер не требует участия
человека. Если вы хотите, чтобы каждую запись проверял человек, это должно обеспечиваться
вашим собственным рабочим процессом (отдельный шаг одобрения, клиент только для людей
и т. д.) — этот сервер не делает это за вас.
Одна операция записи выделена отдельно, потому что многоуровневая схема выше не может
полностью её ограничить: apply_recommendation передаёт управление изменению,
определяемому Microsoft — вы видите только идентификатор рекомендации, а не само
изменение, поэтому фактический денежный эффект не может быть проверен лимитами расходов
этого сервера заранее. Она сохранена (рекомендации Microsoft могут быть полезны), явно
помечена как исключение и ограничена обоими флагами: MS_ADS_ENABLE_WRITES и
отдельным флагом MS_ADS_ALLOW_APPLY_RECOMMENDATION — так что общее включение записи
не включает эту операцию.
Что этот сервер не делает
Нет диагностики Quality Score.
Нет автоматических повторов/откатов при временных сбоях API (неудачный вызов — это неудача; вы повторяете).
Построен на SOAP-пакете Bing Ads SDK от Microsoft, который Microsoft объявила устаревшим — см. ниже.
Related MCP server: OpenAI Ads MCP
Конец поддержки SOAP и дорожная карта REST
Этот сервер построен на SOAP SDK bingads. Microsoft объявила, что SOAP прекращает
поддержку 2027-01-31, и рекомендует мигрировать до 2026-10-01 (с этого момента
новые функции API будут только в REST). См. руководство Microsoft
Migrate to REST API
и
руководство по миграции Python SDK с SOAP на REST.
Перенос инструментов этого сервера на REST — пункт дорожной карты; SOAP всё ещё работает
сегодня и не исчезнет до даты окончания поддержки, но не планируйте долгосрочную работу
на нём.
Сравнение
доступ на запись | уровень безопасности записи | примечания | |
mcp-microsoft-ads (этот проект) | да, по выбору | черновик→подтверждение + лимиты расходов + защита Smart Bidding + журнал аудита | SOAP сегодня, REST планируется |
— | — | см. их репозиторий для текущего объёма | |
bit-of-a-shambles Bing Ads MCP server | — | — | см. репозиторий того проекта для текущего объёма |
CData Microsoft Ads MCP connector | только чтение | н/д | нет пути записи |
Официальный размещённый MCP от Microsoft | — | — | см. документацию Microsoft для текущего объёма |
Сравнение проверено 2026-08-24. Этот проект не претендует на знание точного текущего набора функций других строк, кроме того, что они только для чтения или нет — проверяйте репозитории/документацию каждого проекта для деталей. Отличия выше (запись по выбору, двухфазный черновик→подтверждение, лимиты расходов, защита Smart Bidding от сбоев, журнал аудита JSONL, 380+ офлайн-тестов) — это то, вокруг чего построен этот проект.
Установка
git clone https://github.com/wvuhskr/mcp-microsoft-ads.git
cd mcp-microsoft-ads
python3 -m venv .venv # requires Python >= 3.12
.venv/bin/pip install -e ".[dev]"Полная настройка — регистрация приложения Azure, токен разработчика, первый вход через OAuth — описана в docs/setup.md. Этот раздел охватывает только запуск сервера, когда учётные данные уже существуют.
Учётные данные
Учётные данные хранятся вне репозитория, в YAML-файле (по умолчанию
~/.mcp-microsoft-ads/credentials.yaml, переопределяется через MS_ADS_CREDENTIALS_PATH):
developer_token, client_id, client_secret, refresh_token, customer_id,
account_id, tenant.
Шесть статических полей (всё, кроме refresh_token) можно также задать через переменные
окружения MS_ADS_DEVELOPER_TOKEN, MS_ADS_CLIENT_ID, MS_ADS_CLIENT_SECRET,
MS_ADS_CUSTOMER_ID, MS_ADS_ACCOUNT_ID, MS_ADS_TENANT — переменные окружения имеют
приоритет над файлом, когда присутствуют оба. refresh_token хранится только в файле:
Microsoft ротирует его при каждом использовании, и ротированный токен должен быть
сохранён где-то для следующего запуска, что переменная окружения не может сделать. Сервер
атомарно сохраняет каждую ротацию обратно в файл учётных данных (сохраняется .bak).
Пошаговое руководство для первого запуска
Начальный вход:
.venv/bin/python -m mcp_microsoft_ads.reauthПроводит интерактивный вход через OAuth в вашем браузере и записывает полученный
refresh_tokenв файл учётных данных. См.docs/setup.mdдля регистрации приложения Azure и токена разработчика, от которых зависит этот шаг.Запустите сервер в режиме только для чтения (не устанавливайте
MS_ADS_ENABLE_WRITESпока) и из вашего MCP-клиента вызовитеhealth_check, затемlist_accountsи/илиget_account_info.Убедитесь, что аккаунт тот, который вы имеете в виду — проверьте идентификатор аккаунта, имя аккаунта и валюту аккаунта, возвращённые этими вызовами, против аккаунта, которому вы собираетесь разрешить доступ этому серверу. Лимиты расходов ниже применяются в валюте этого аккаунта, поэтому несоответствие валюты стоит выявить до включения записи.
Только после этого установите
MS_ADS_ENABLE_WRITES=true(и, если хотите,MS_ADS_ALLOW_APPLY_RECOMMENDATION=true) и перезапустите сервер.
Конфигурация MCP-клиента
Обе конфигурации предполагают, что виртуальное окружение находится по пути
~/mcp-microsoft-ads/.venv — замените его на фактический абсолютный путь на вашей машине
(обоим клиентам нужен абсолютный путь, а не ~).
Claude Code (.mcp.json в вашем проекте или через claude mcp add):
{
"mcpServers": {
"microsoft-ads": {
"command": "/home/you/mcp-microsoft-ads/.venv/bin/python",
"args": ["-m", "mcp_microsoft_ads.server"]
}
}
}Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"microsoft-ads": {
"command": "/home/you/mcp-microsoft-ads/.venv/bin/python",
"args": ["-m", "mcp_microsoft_ads.server"]
}
}
}Не направляйте два одновременных клиента на один и тот же файл учётных данных
Совместное использование одного файла учётных данных между одновременными клиентами
не поддерживается. refresh_token — это ротируемый, общий, изменяемый файл: каждое
обновление создаёт новый токен и немедленно аннулирует старый, а операция
чтение-изменение-запись, которая сохраняет ротацию, не может быть безопасно
сериализована между двумя отдельными процессами на этом уровне. Два клиента, соревнующихся
за обновление из одного файла, могут оставить друг друга с аннулированным токеном. Если
вам нужно более одного одновременного клиента (например, Claude Code и Claude Desktop
открыты одновременно), дайте каждому свой собственный файл учётных данных и свою
собственную регистрацию приложения Azure — установите MS_ADS_CREDENTIALS_PATH отдельно
для каждого клиента и выполните начальный вход с помощью собственного запуска reauth.
Переменные окружения
Переменная | По умолчанию | Назначение |
|
| расположение файла учетных данных |
|
| необязательные настройки рекламодателя (заблокированные термины, домен рекламодателя, значения по умолчанию для исследования ключевых слов) — отсутствие файла означает значения по умолчанию |
|
| расположение журнала аудита JSONL |
|
| главный переключатель для всех изменяющих инструментов |
|
| второй отдельный переключатель, необходимый (в дополнение к |
|
| верхний предел дневного бюджета, в собственной валюте аккаунта |
|
| верхний предел ставки/tCPA, в собственной валюте аккаунта |
|
| как долго черновик остается действительным, прежде чем |
| — | шесть статических полей учетных данных; переменные окружения имеют приоритет над файлом учетных данных, когда заданы оба |
Примечание о валюте: MS_ADS_MAX_DAILY_BUDGET и MS_ADS_MAX_CPC сравниваются
напрямую с суммами в собственной валюте аккаунта, а не конвертируются в USD или из USD.
Предел 1000 означает 1000 единиц той валюты, в которой номинирован аккаунт.
Тест / lint
.venv/bin/python -m pytest -q # offline test suite, ~370 tests, no live API calls
.venv/bin/python -m ruff check . # lintДокументация
docs/setup.md — регистрация приложения Azure, токен разработчика, полная настройка.
SECURITY.md — как сообщить об уязвимости.
CHANGELOG.md — история релизов.
Лицензия и поддержка
Лицензия MIT — см. LICENSE. Это проект с открытым исходным кодом, поддерживаемый на добровольной основе, без оплаты: без SLA, без гарантированного времени ответа. Проблемы отслеживаются и обрабатываются по мере возможности.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- -licenseNot gradedqualityNot gradedmaintenanceEnables AI assistants to manage Google Ads accounts by providing tools for querying account data and performing write operations such as updating campaign budgets, statuses, and bidding strategies.2
- AlicenseNot gradedqualityBmaintenanceEnables management of OpenAI Ads campaigns, ad groups, ads, and insights through MCP, with approval-gated live mutations for safe write operations.57MIT
- FlicenseNot gradedqualityDmaintenanceMCP server enabling AI assistants to manage Microsoft Advertising (Bing Ads) campaigns, including campaigns, ad groups, keywords, and ad extensions via a clean set of tools.
- AlicenseAqualityBmaintenanceEnables managing Google Ads campaigns through an AI assistant with read-only reporting, recommendations, and gated write operations for bids, budgets, and statuses, all backed by preview and audit logging.311MIT
Related MCP Connectors
Manage Google, Microsoft, TikTok and LinkedIn Ads from Claude or ChatGPT. Writes need approval.
Manage ad campaigns across Google, Meta, LinkedIn, Reddit, TikTok, and more via AI.
Manage ad campaigns across Google, Meta, LinkedIn, Reddit, TikTok, and more via AI.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/wvuhskr/mcp-microsoft-ads'
If you have feedback or need assistance with the MCP directory API, please join our Discord server