Microsoft Advertising MCP Connector
Microsoft Advertising MCP Connector
Servidor MCP True Model B independiente para Custom Connectors de Claude.ai. Un operador puede conectar varias cuentas de Microsoft. Cada conexión puede ver varios clientes y cuentas publicitarias de Microsoft Advertising.
Esto no forma parte del conector Google All-in-One. No tiene dependencia en tiempo de ejecución de ese proyecto, ni colecciones de Firestore compartidas, ni tokens de OAuth compartidos.
Claude.ai
│ MCP OAuth 2.1
▼
operatorId
├── Microsoft Connection A → customers → advertising accounts → campaigns / reports
├── Microsoft Connection B
└── Microsoft Connection CEl sub del JWT de MCP es siempre el operatorId interno. El sub de Microsoft OpenID solo existe en bing_mcp_microsoft_connections.microsoftSubjectId. El correo electrónico es metadatos de visualización, nunca una clave de autorización.
Arquitectura
App Router de Next.js 15 +
mcp-handlerStreamable HTTP en/mcpMCP OAuth 2.1 con PKCE S256, DCR y Claude CIMD
Flujo de código de autorización de Microsoft Entra (inquilino
common)Microsoft Advertising REST v13 (no SOAP)
Base de datos Firestore con nombre
bing-mcp-v1Cifrado en reposo del token de actualización con AES-256-GCM
Cloud Run (sin estado; escucha en
$PORT)
Related MCP server: Bing Ads MCP Server
Credenciales (son cosas distintas)
Variable | Qué es |
| Registro de aplicación de Entra. A nivel de aplicación. Se utiliza para ejecutar el flujo de OAuth de Microsoft. |
| Token de desarrollador de Microsoft Advertising. A nivel de aplicación. Obligatorio en cada llamada a la API de Ads. No por operador. Nunca se devuelve a Claude. |
Token de actualización por conexión | Credencial OAuth de usuario almacenada cifrada en la conexión de Microsoft de ese operador. Conectar la cuenta Y no reemplaza a la cuenta X. |
Entorno
Copia .env.example a .env. Nunca hagas commit de .env.
Requerido:
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 debe ser bing-mcp-v1. El arranque rechaza (default) y gconnect-mcp-all-v1.
Registro de aplicación de Microsoft Entra
Crea un registro.
Tipos de cuenta compatibles: Cuentas en cualquier directorio de la organización y cuentas personales de Microsoft (para que
commonfuncione).Añade un URI de redirección web:
{APP_BASE_URL}/oauth/microsoft/callback(ejemplo local:http://localhost:3000/oauth/microsoft/callback).Crea un secreto de cliente. Guárdalo en
MICROSOFT_CLIENT_SECRET.Permisos de API: ámbito delegado de Microsoft Advertising
https://ads.microsoft.com/msads.manage. Solicita tambiénopenid,profile,emailyoffline_access.Concede el consentimiento de administrador si tu inquilino lo requiere.
Guías oficiales:
Token de desarrollador
Obtén un token de desarrollador de Microsoft Advertising desde la configuración de desarrollador de Microsoft Advertising. Los tokens de sandbox se pueden autoemitir; los tokens de producción requieren la aprobación de Microsoft.
Este token es una credencial de aplicación. Se envía como cabecera DeveloperToken en las llamadas REST de Advertising. Nunca se almacena por operador y no debe aparecer jamás en la salida de MCP ni en los registros.
Desarrollo local
npm install
npm test
npm run typecheck
npm run devSalud:
GET http://localhost:3000/healthMCP:
http://localhost:3000/mcpCallback de Microsoft:
http://localhost:3000/oauth/microsoft/callback
Añade el Custom Connector en Claude.ai apuntando a {APP_BASE_URL}/mcp. Claude completa el OAuth de MCP y, a continuación, el servidor redirige el navegador al inicio de sesión de Microsoft. Tras el consentimiento, continúa de vuelta en Claude.
Firestore en local: o bien Application Default Credentials (gcloud auth application-default login) más FIRESTORE_PROJECT_ID, o bien FIRESTORE_EMULATOR_HOST.
Herramientas MCP (V1, solo lectura)
Conexiones: get_operator, list_microsoft_connections, get_microsoft_connection, start_microsoft_connection, disconnect_microsoft_connection
Clientes / cuentas: list_microsoft_customers, get_microsoft_customer, list_microsoft_accounts, get_microsoft_account
Entidades: list_campaigns, get_campaign, list_ad_groups, get_ad_group, list_ads, get_ad, list_keywords, get_keyword
Informes (API Reporting oficial, envío/sondeo/descarga asíncronos): get_account_performance, get_campaign_performance, get_ad_group_performance, get_keyword_performance
Si la misma cuenta publicitaria es visible a través de más de una conexión de Microsoft, el servidor devuelve un error de ambigüedad y solicita connectionId. Nunca hace suposiciones.
Colecciones de Firestore
Base de datos con nombre: 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
El tráfico entrante de Cloud Run debe ser no autenticado. La autenticación es el JWT de MCP, no Cloud IAM.
La cuenta de servicio de Cloud Run necesita acceso a Firestore en la base de datos con nombre (roles/datastore.user es lo habitual). Usa Application Default Credentials. No hagas commit de un archivo JSON de cuenta de servicio.
.\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 ...A continuación, añade {APP_BASE_URL}/oauth/microsoft/callback a la aplicación de Entra y añade el Custom Connector de Claude en {APP_BASE_URL}/mcp.
El tiempo de espera del servicio es de 300 segundos para que los informes asíncronos puedan completarse.
Seguridad
Nunca se exponen a través de MCP ni en los registros: tokens de acceso, tokens de actualización, secretos de cliente, token de desarrollador, claves de cifrado, códigos de autorización.
La autorización utiliza operatorId + connectionId + identificadores de Microsoft. Los nombres y los correos electrónicos no son identificadores de autorización.
V2 (no implementado)
Creación/actualización/pausa de campañas, escrituras de grupos de anuncios y anuncios, escrituras de palabras clave, actualizaciones de presupuesto.
Pruebas
npm testLas pruebas automatizadas cubren la identidad JWT de MCP, el estado/intercambio/actualización/invalid_grant de OAuth de Microsoft, el aislamiento de operadores, la multiconexión, la misma identidad de Microsoft entre operadores, el rechazo de cuentas ambiguas, el análisis de los CSV de informes, las reglas de cabeceras y la redacción de secretos.
Las rutas en vivo de Claude, del inicio de sesión de Microsoft y de Cloud Run requieren tu aplicación de Entra, token de desarrollador y proyecto de 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