Microsoft Advertising MCP Connector
Microsoft Advertising MCP Connector
Автономный True Model B MCP-сервер для Custom Connectors в Claude.ai. Один оператор может подключить несколько учетных записей Microsoft. Каждое подключение может видеть несколько клиентов Microsoft Advertising и рекламных аккаунтов.
Это не часть коннектора Google All-in-One. У него нет зависимости от этого проекта во время выполнения, нет общих коллекций Firestore и общих токенов OAuth.
Claude.ai
│ MCP OAuth 2.1
▼
operatorId
├── Microsoft Connection A → customers → advertising accounts → campaigns / reports
├── Microsoft Connection B
└── Microsoft Connection CMCP JWT sub — это всегда внутренний operatorId. Microsoft OpenID sub хранится только в bing_mcp_microsoft_connections.microsoftSubjectId. Электронная почта — это отображаемые метаданные, а не ключ авторизации.
Архитектура
Next.js 15 App Router +
mcp-handlerStreamable HTTP на/mcpMCP OAuth 2.1 с PKCE S256, DCR и Claude CIMD
Поток авторизации Microsoft Entra (код авторизации, тенант
common)Microsoft Advertising REST v13 (не SOAP)
Именованная база данных Firestore
bing-mcp-v1Шифрование refresh-токенов AES-256-GCM при хранении
Cloud Run (без состояния; прослушивание на
$PORT)
Related MCP server: Bing Ads MCP Server
Учетные данные (это разные вещи)
Переменная | Что это |
| Регистрация приложения Entra. Уровень приложения. Используется для запуска потока OAuth Microsoft. |
| Токен разработчика Microsoft Advertising. Уровень приложения. Требуется для каждого вызова Ads API. Не для каждого оператора. Никогда не возвращается в Claude. |
Refresh-токен для каждого подключения | Учетные данные пользователя OAuth, хранящиеся зашифрованными в подключении Microsoft этого оператора. Подключение учетной записи Y не заменяет учетную запись X. |
Окружение
Скопируйте .env.example в .env. Никогда не коммитьте .env.
Обязательные:
APP_BASE_URL
MICROSOFT_CLIENT_ID
MICROSOFT_CLIENT_SECRET
MICROSOFT_REDIRECT_URI
MICROSOFT_ADS_DEVELOPER_TOKEN
MCP_TOKEN_SECRET
OAUTH_STATE_SECRET
TOKEN_ENCRYPTION_KEY
FIRESTORE_PROJECT_ID
FIRESTORE_DATABASE_ID=bing-mcp-v1FIRESTORE_DATABASE_ID должен быть bing-mcp-v1. При запуске отклоняются (default) и gconnect-mcp-all-v1.
Регистрация приложения Microsoft Entra
Откройте Регистрация приложений Microsoft Entra.
Создайте регистрацию.
Поддерживаемые типы учетных записей: Учетные записи в любом organizational directory и личные учетные записи Microsoft (чтобы работал
common).Добавьте URI перенаправления Web:
{APP_BASE_URL}/oauth/microsoft/callback(локальный пример:http://localhost:3000/oauth/microsoft/callback).Создайте секрет клиента. Сохраните его в
MICROSOFT_CLIENT_SECRET.Разрешения API: делегированная область Microsoft Advertising
https://ads.microsoft.com/msads.manage. Также запроситеopenid,profile,emailиoffline_access.Предоставьте согласие администратора, если этого требует ваш тенант.
Официальные руководства:
Токен разработчика
Получите токен разработчика Microsoft Advertising в настройках разработчика Microsoft Advertising. Песочные токены можно выпускать самостоятельно; производственные токены требуют одобрения Microsoft.
Этот токен — учетные данные приложения. Он отправляется как заголовок DeveloperToken в вызовах Advertising REST. Он никогда не хранится для каждого оператора и не должен появляться в выводе MCP или в журналах.
Локальная разработка
npm install
npm test
npm run typecheck
npm run devHealth:
GET http://localhost:3000/healthMCP:
http://localhost:3000/mcpCallback Microsoft:
http://localhost:3000/oauth/microsoft/callback
Добавьте Custom Connector в Claude.ai, указав {APP_BASE_URL}/mcp. Claude завершает MCP OAuth, затем сервер перенаправляет браузер на вход в Microsoft. После согласия вернитесь в Claude.
Firestore локально: либо Application Default Credentials (gcloud auth application-default login) плюс FIRESTORE_PROJECT_ID, либо FIRESTORE_EMULATOR_HOST.
Инструменты MCP (V1, только чтение)
Подключения: get_operator, list_microsoft_connections, get_microsoft_connection, start_microsoft_connection, disconnect_microsoft_connection
Клиенты / аккаунты: list_microsoft_customers, get_microsoft_customer, list_microsoft_accounts, get_microsoft_account
Сущности: list_campaigns, get_campaign, list_ad_groups, get_ad_group, list_ads, get_ad, list_keywords, get_keyword
Отчеты (официальный Reporting API, асинхронная отправка/опрос/загрузка): get_account_performance, get_campaign_performance, get_ad_group_performance, get_keyword_performance
Если один и тот же рекламный аккаунт виден через несколько подключений Microsoft, сервер возвращает ошибку неоднозначности и запрашивает connectionId. Он никогда не угадывает.
Коллекции Firestore
Именованная база данных: bing-mcp-v1
bing_mcp_operatorsbing_mcp_microsoft_connectionsbing_mcp_connection_uniques({operatorId}_{microsoftSubjectId})bing_mcp_microsoft_customersbing_mcp_microsoft_accountsbing_mcp_oauth_transactionsbing_mcp_sessions
Cloud Run
Входящий трафик Cloud Run должен быть без аутентификации. Аутентификация — это MCP JWT, а не Cloud IAM.
Сервисный аккаунт Cloud Run должен иметь доступ к Firestore в именованной базе данных (обычно roles/datastore.user). Используйте Application Default Credentials. Не коммитьте JSON-файл сервисного аккаунта.
.\scripts\cloud-run-setup.ps1 -ProjectId YOUR_PROJECT
.\scripts\cloud-run-deploy.ps1 -ProjectId YOUR_PROJECT
.\scripts\cloud-run-set-env.ps1 -ProjectId YOUR_PROJECT -AppBaseUrl https://... -MicrosoftClientId ... -MicrosoftClientSecret ... -McpTokenSecret ... -OauthStateSecret ... -TokenEncryptionKey ... -MicrosoftAdsDeveloperToken ...Затем добавьте {APP_BASE_URL}/oauth/microsoft/callback в приложение Entra и добавьте Custom Connector Claude по адресу {APP_BASE_URL}/mcp.
Таймаут сервиса — 300 секунд, чтобы асинхронные отчеты могли завершиться.
Безопасность
Никогда не раскрываются через MCP или журналы: токены доступа, refresh-токены, секреты клиента, токен разработчика, ключи шифрования, коды авторизации.
Авторизация использует operatorId + connectionId + идентификаторы Microsoft. Имена и адреса электронной почты не являются идентификаторами авторизации.
V2 (не реализовано)
Создание/обновление/пауза кампаний, запись рекламных групп и объявлений, запись ключевых слов, обновление бюджетов.
Тесты
npm testАвтоматические тесты покрывают идентификацию MCP JWT, состояние/обмен/обновление/invalid_grant OAuth Microsoft, изоляцию операторов, множественные подключения, одну и ту же личность Microsoft у разных операторов, отклонение неоднозначных аккаунтов, разбор CSV-отчетов, правила заголовков и редактирование секретов.
Живые пути Claude, входа в Microsoft и Cloud Run требуют вашего приложения Entra, токена разработчика и проекта GCP.
This server cannot be installed
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
- FlicenseNot gradedqualityDmaintenanceEnables Claude Desktop to access and manage Google Ads data, including campaigns, ad groups, keywords, budgets, and visualizations, through natural language interactions.19
- AlicenseNot gradedqualityAmaintenanceProduction-grade MCP server for Microsoft Advertising (Bing Ads) API. Enables Claude to manage Bing/Microsoft Ads accounts with full campaign, ad group, keyword, and performance analysis capabilities.1074MIT
- AlicenseNot gradedqualityCmaintenanceConnects Claude Desktop to your Google Ads account, allowing you to analyze and manage campaigns, ad groups, and keywords using natural language.MIT
- AlicenseNot gradedqualityCmaintenanceConnects Claude to Meta Ads, enabling full management of ad accounts including campaigns, creatives, budgets, and reporting. Handles authentication, token minting, and MCP server registration automatically.MIT
Related MCP Connectors
Run Google, Meta, Microsoft, TikTok and LinkedIn Ads from Claude or ChatGPT. Writes need approval.
OpenAI Ads MCP for ChatGPT Ads campaigns, creatives, audiences, insights, and conversions.
MCP for Yandex Direct: manage ad campaigns & analytics from Claude or ChatGPT
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/devopsbrandmirchi/BingMcpV1'
If you have feedback or need assistance with the MCP directory API, please join our Discord server