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: Google 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 deployed
Maintenance
Related MCP Connectors
Manage Google Ads from ChatGPT, Claude or any MCP client. Sign in with OAuth or use an API key.
Hosted MCP server for marketing agencies: connect Google Ads, GA4, Search Console, Meta, LinkedIn and more to Claude or ChatGPT. Pull reports and make changes via OAuth login, no setup.
Live Google Ads, GA4, Search Console, Meta Ads and GBP data in Claude, ChatGPT and any MCP client
Run Apple Search Ads from Claude: performance, recommendations, keywords, budgets, launches.
Related MCP Servers
- 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.102 npm4MIT
- AlicenseNot gradedqualityDmaintenanceConnects Claude Desktop to your Google Ads account, allowing you to analyze and manage campaigns, ad groups, and keywords using natural language.MIT
- AlicenseAqualityBmaintenanceEnables Claude to read and search an Amazon Ads account, pull suggested bids and reports, and propose changes as approved plans with rollback support.16Apache 2.0
- AlicenseBqualityCmaintenanceEnables Claude and other MCP-capable assistants to monitor and manage Google Ads accounts by pulling performance reports, running GAQL queries, adjusting budgets, pausing or enabling campaigns, adding keywords and negative keywords, and creating campaigns and ads, with preview and read-only safety controls.31Apache 2.0