mcp-microsoft-ads
mcp-microsoft-ads
No oficial: no está afiliado a Microsoft, ni respaldado ni soportado por Microsoft. Se trata de un servidor MCP (Model Context Protocol) de terceros para Microsoft Advertising. "MCP" es el protocolo abierto que permite que un asistente de IA (Claude, o cualquier otro cliente MCP) llame a herramientas contra un sistema real; aquí, tu cuenta de Microsoft Ads.
El MCP de Microsoft Ads con prioridad en la seguridad: 47 herramientas que cubren la gestión de campañas, grupos de anuncios, palabras clave, palabras clave negativas, segmentación geográfica, programación de anuncios, extensiones, medios, audiencias y objetivos de conversión, además de informes de rendimiento e investigación de palabras clave con Ad Insight, diseñado para que dar acceso de escritura a un asistente de IA a una cuenta de anuncios en vivo no signifique darle un cheque en blanco.
Por qué "la seguridad es lo primero"
Toda herramienta que muta está desactivada por defecto. Activar las escrituras es una variable de entorno, y aun así cada escritura pasa por la misma puerta de seguridad en capas antes de que una sola llamada llegue a la API de Microsoft:
MS_ADS_ENABLE_WRITES=true— sin esto, toda herramienta de escritura se niega a ejecutarse. De fábrica, este es un servidor de solo lectura.Borrador → confirmación. Una herramienta de escritura nunca muta en su propia llamada. Devuelve una vista previa (un
draft_idy exactamente qué cambiaría); nada se aplica hasta que tú — o tu cliente MCP — llames aconfirm_and_apply(draft_id).Límites de gasto. Tanto la creación del borrador como la aplicación rechazan cantidades por encima de
MS_ADS_MAX_DAILY_BUDGET(por defecto 1000) oMS_ADS_MAX_CPC(por defecto 50), en la moneda de la propia cuenta, no en USD.Protecciones de cierre seguro para Smart Bidding. Las escrituras de ofertas/ajustes están en una lista blanca de estrategias de oferta manuales (
ManualCpc,EnhancedCpc,ManualCpv,ManualCpm,ManualCpa); una estrategia no reconocida o automatizada (MaxConversions,TargetCpa,TargetRoas, …) se rechaza en lugar de asumirse como segura.Registro de auditoría JSONL. Cada borrador y cada aplicación se añaden a un archivo JSONL local de solo anexión: un rastro en texto plano de lo que este servidor realmente hizo.
Respaldado por más de 380 pruebas fuera de línea (sin llamadas a la API en vivo) que ejercitan las protecciones, las peculiaridades del cableado SOAP y el ciclo de vida de borrador/confirmación contra simulaciones.
Sé honesto sobre lo que "borrador → confirmación" no es
Borrador → confirmación es una puerta de vista previa contra accidentes de una sola llamada: un error tipográfico en una oferta, un error de copiar y pegar, llamar a la herramienta equivocada. No es un control de acceso con aprobación humana: el mismo cliente MCP que creó el borrador puede llamar a confirm_and_apply inmediatamente después, sin que el servidor requiera un humano en el bucle. Si quieres que un humano revise cada escritura, eso debe imponerlo tu propio flujo de trabajo (un paso de aprobación separado, un cliente solo para humanos, etc.); este servidor no lo hace por ti.
Una escritura se menciona por separado porque la historia en capas anterior no puede acotarla por completo: apply_recommendation delega en una mutación decidida por Microsoft; solo obtienes una vista previa del ID de la recomendación, no del cambio en sí, por lo que el efecto monetario real no es algo que los límites de gasto de este servidor puedan verificar de antemano. Se mantiene (las recomendaciones de Microsoft pueden ser útiles), se etiqueta claramente como la excepción que es, y está protegida por ambas MS_ADS_ENABLE_WRITES y su propio indicador separado, MS_ADS_ALLOW_APPLY_RECOMMENDATION; así que activar las escrituras en general no activa esta.
Lo que este servidor no hace
Sin diagnósticos de Quality Score.
Sin reintentos automáticos/backoff en fallos transitorios de la API (una llamada fallida falla; tú reintentas).
Construido sobre el SDK SOAP de Bing Ads de Microsoft, que Microsoft ha anunciado como fin de vida: ver más abajo.
Related MCP server: OpenAI Ads MCP
Fin de vida de SOAP y hoja de ruta hacia REST
Este servidor está construido sobre el SDK SOAP bingads. Microsoft ha anunciado que SOAP llegará a su fin de vida el 2027-01-31 y recomienda migrar antes del 2026-10-01 (las nuevas funciones de la API se publicarán solo en REST a partir de entonces). Consulta la guía de Microsoft Migrate to REST API y la guía de migración de SOAP a REST del SDK de Python. Portar las herramientas de este servidor a REST es el elemento de la hoja de ruta; SOAP sigue funcionando hoy y no desaparecerá hasta la fecha de fin de vida, pero no planifiques a largo plazo en torno a él.
Cómo se compara
acceso de escritura | capa de seguridad de escritura | notas | |
mcp-microsoft-ads (este proyecto) | sí, opcional | borrador→confirmación + límites de gasto + protecciones de Smart Bidding + registro de auditoría | SOAP hoy, REST planificado |
— | — | consulta su repositorio para el alcance actual | |
servidor MCP de Bing Ads de bit-of-a-shambles | — | — | consulta el repositorio de ese proyecto para el alcance actual |
conector MCP de Microsoft Ads de CData | solo lectura | n/a | sin ruta de escritura |
MCP alojado oficial de Microsoft | — | — | consulta la documentación de Microsoft para el alcance actual |
Comparación verificada por última vez el 2026-08-24. Este proyecto no pretende conocer el conjunto de funciones exacto actual de las otras filas más allá de si son de solo lectura o no; consulta el repositorio/documentación de cada proyecto para obtener detalles. Los diferenciadores anteriores (escrituras opcionales, borrador→confirmación en dos fases, límites de gasto, protecciones de cierre seguro de Smart Bidding, registro de auditoría JSONL, más de 380 pruebas fuera de línea) son en torno a lo que se construye este proyecto.
Instalación
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]"La configuración completa (registro de la aplicación de Azure, token de desarrollador, primer inicio de sesión con OAuth) está en docs/setup.md. Esta sección solo cubre cómo ejecutar el servidor una vez que ya existen las credenciales.
Credenciales
Las credenciales viven fuera del repositorio, en un archivo YAML (por defecto ~/.mcp-microsoft-ads/credentials.yaml, se puede sobrescribir con MS_ADS_CREDENTIALS_PATH): developer_token, client_id, client_secret, refresh_token, customer_id, account_id, tenant.
Los seis campos estáticos (todo excepto refresh_token) se pueden configurar en su lugar como variables de entorno MS_ADS_DEVELOPER_TOKEN, MS_ADS_CLIENT_ID, MS_ADS_CLIENT_SECRET, MS_ADS_CUSTOMER_ID, MS_ADS_ACCOUNT_ID, MS_ADS_TENANT; el entorno gana sobre el archivo cuando ambos están presentes. refresh_token es solo de archivo: Microsoft lo rota en cada uso, y un token rotado debe persistirse en algún lugar para la siguiente ejecución, lo que una variable de entorno no puede hacer. El servidor persiste cada rotación de vuelta al archivo de credenciales de forma atómica (se conserva un .bak).
Recorrido de primera ejecución
Inicio de sesión de arranque:
.venv/bin/python -m mcp_microsoft_ads.reauthRealiza un inicio de sesión OAuth interactivo en tu navegador y escribe el
refresh_tokenresultante en el archivo de credenciales. Consultadocs/setup.mdpara el registro de la aplicación de Azure y el token de desarrollador de los que depende este paso.Inicia el servidor en modo de solo lectura (aún no configures
MS_ADS_ENABLE_WRITES) y, desde tu cliente MCP, llama ahealth_check, luego alist_accountsy/oget_account_info.Confirma que la cuenta es la que quieres: verifica el ID de cuenta, el nombre de cuenta y la moneda de cuenta devueltos por esas llamadas contra la cuenta a la que pretendes permitir que este servidor acceda. Los límites de gasto siguientes se aplican en la moneda de esa cuenta, por lo que vale la pena detectar una discrepancia de moneda antes de que las escrituras estén activadas.
Solo entonces configura
MS_ADS_ENABLE_WRITES=true(y, si lo deseas,MS_ADS_ALLOW_APPLY_RECOMMENDATION=true) y reinicia el servidor.
Configuración del cliente MCP
Ambas configuraciones asumen que el venv anterior vive en ~/mcp-microsoft-ads/.venv; reemplázalo con la ruta absoluta real en tu máquina (ambos clientes necesitan una ruta absoluta, no ~).
Claude Code (.mcp.json en tu proyecto, o mediante 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"]
}
}
}No apuntes dos clientes concurrentes al mismo archivo de credenciales
Compartir un archivo de credenciales entre clientes concurrentes no es compatible. El refresh_token es un archivo mutable, rotatorio y compartido: cada actualización genera un token nuevo e invalida inmediatamente el anterior, y la operación de lectura-modificación-escritura que persiste la rotación no se puede serializar de forma segura entre dos procesos separados en esta capa. Dos clientes que compiten por actualizar desde el mismo archivo pueden dejarse mutuamente con un token invalidado. Si quieres más de un cliente concurrente (por ejemplo, Claude Code y Claude Desktop abiertos a la vez), dale a cada uno su propio archivo de credenciales y su propio registro de aplicación de Azure: configura MS_ADS_CREDENTIALS_PATH de forma diferente por cliente y arranca cada uno con su propia ejecución de reauth.
Variables de entorno
Var | Default | Propósito |
|
| ubicación del archivo de credenciales |
|
| configuración opcional del anunciante (términos bloqueados, dominio del anunciante, valores predeterminados de investigación de palabras clave) — si falta el archivo, se usan los valores predeterminados |
|
| ubicación del registro de auditoría JSONL |
|
| interruptor principal para todas las herramientas de mutación |
|
| segundo interruptor separado requerido (además de |
|
| tope máximo de presupuesto diario, en la moneda propia de la cuenta |
|
| tope máximo de oferta/tCPA, en la moneda propia de la cuenta |
|
| cuánto tiempo un borrador sigue siendo válido antes de que |
| — | los seis campos de credenciales estáticos; las variables de entorno tienen prioridad sobre el archivo de credenciales cuando ambos están configurados |
Nota sobre la moneda: MS_ADS_MAX_DAILY_BUDGET y MS_ADS_MAX_CPC se comparan directamente con los montos en la moneda propia de la cuenta, no se convierten a o desde USD. Un tope de 1000 significa 1000 unidades de la moneda en la que esté denominada la cuenta.
Pruebas / lint
.venv/bin/python -m pytest -q # offline test suite, ~370 tests, no live API calls
.venv/bin/python -m ruff check . # lintDocumentación
docs/setup.md — Registro de la aplicación de Azure, token de desarrollador, arranque completo.
SECURITY.md — cómo reportar una vulnerabilidad.
CHANGELOG.md — historial de versiones.
Licencia y soporte
Con licencia MIT — consulte LICENSE. Este es un proyecto de código abierto sin fines de lucro y de mejor esfuerzo: sin SLA, sin tiempo de respuesta garantizado. Los problemas se supervisan y se clasifican de la mejor manera posible.
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