linkedin-campaign-manager-mcp
LinkedIn Campaign Manager MCP
Servidor MCP para la API de Marketing de LinkedIn: consulta campañas, rendimiento y formularios de generación de leads desde Claude en lenguaje sencillo.
19 herramientas de solo lectura que cubren cuentas publicitarias, campañas, creatividades, análisis de rendimiento, datos demográficos, análisis de vídeo, ritmo de presupuesto, comparaciones de periodos, conversiones, formularios de generación de leads, audiencias y facetas de segmentación. Creado para equipos de social media de pago B2B que gestionan Contenido Patrocinado, Formularios de Generación de Leads y campañas basadas en cuentas en LinkedIn.
Por qué existe esto
La API de Marketing de LinkedIn es notoriamente difícil de manejar: versiones mensuales de Rosetta, mapeos de campos sin documentar, parámetros de consulta anidados al estilo Rest.li para analíticas y tokens de acceso de 60 días que caducan silenciosamente. Este servidor maneja todo eso internamente para que puedas hacer preguntas en lenguaje sencillo en lugar de escribir manualmente dateRange=(start:(year:...)).
Ningún otro servidor MCP de código abierto para LinkedIn Ads ofrece esta profundidad. La mayoría se detiene en "listar campañas". Este incluye datos demográficos, embudo de finalización de vídeo, ritmo de presupuesto, comparaciones de periodos y respuestas de formularios de generación de leads con PII para que puedas conciliar leads con Marketo o Salesforce.
Ejemplos de prompts
Una vez instalado, pregúntale a Claude cosas como:
"¿Cuál es nuestra tendencia de gasto en LinkedIn Ads en los últimos 28 días, desglosada por grupo de campaña?"
"Compara el CPL de las campañas de conquista de competidores de este mes frente al anterior: ¿qué creatividades movieron la cifra?"
"Extrae los datos demográficos de nuestra campaña con mayor gasto: ¿qué antigüedad y sector están convirtiendo?"
"¿Qué formularios de generación de leads tuvieron la tasa de envío más alta el mes pasado y cuánto costó cada lead?"
"Muestra el embudo de finalización de vídeo de nuestra campaña de notoriedad: ¿dónde abandona la gente?"
"¿Hay alguna campaña en riesgo de sobrepasar el presupuesto? Muestra el ritmo de presupuesto de todas las activas."
"Extrae las respuestas de los formularios de generación de leads de ayer para poder cotejarlas con Marketo."
Demo
🎥 Vídeo de demostración próximamente: consultando el rendimiento de campañas de LinkedIn desde Claude Code en menos de 60 segundos.
Herramientas
Herramienta | Qué hace |
| Todas las cuentas publicitarias a las que el usuario tiene acceso, con estado + moneda. |
| Detalle de una sola cuenta: moneda, estado, tipo, información de facturación. |
| Campañas en una cuenta; filtrar por estado o grupo de campaña. |
| Detalle completo de la campaña: criterios de segmentación, puja, presupuesto, objetivo. |
| Grupos de campañas (contenedores de presupuesto/objetivo compartido). |
| Creatividades de anuncios; filtrar por campaña o estado. |
| Detalle completo de la creatividad: titular, texto, URL, URNs de imagen/vídeo. |
| Impresiones/clics/gasto/conversiones/leads en un rango de fechas. Granularidad DIARIA/MENSUAL/ANUAL/TOTAL. |
| Rendimiento por empresa / tamaño de empresa / sector / función laboral / cargo / antigüedad / región / país. |
| WoW/MoM/YoY con columnas _current/_prior/_delta/_pct_change por entidad calculadas en el servidor. |
| Embudo de finalización de vídeo por creatividad: inicios → 25% → 50% → 75% → finalizaciones + tasa de finalización. |
| Gasto frente a % de utilización del presupuesto para campañas activas durante un periodo configurable. |
| Definiciones de eventos de conversión de Insight Tag: tipo, ventanas de atribución, estado habilitado. |
| Rendimiento por evento de conversión (pivote CONVERSION): desglose post-clic frente a post-impresión. |
| Segmentos DMP: audiencias coincidentes, listas de empresas, segmentos combinados/similares + tamaños. |
| Búsqueda predictiva de valores de segmentación (cargos, habilidades, empresas, sectores, ubicaciones, antigüedades). |
| Formularios de generación de leads + configuración de preguntas + estado. |
| Envíos reales de formularios con PII (nombre, correo electrónico, empresa, cargo). |
| Métricas LGF por creatividad: tasa de apertura de formulario, tasa de envío, coste por lead. |
Configuración
1. Instalación
npm install -g linkedin-campaign-manager-mcpO clona y compila localmente:
git clone https://github.com/ZLeventer/linkedin-campaign-manager-mcp
cd linkedin-campaign-manager-mcp
npm install
npm run build2. Crear una aplicación de desarrollador de LinkedIn
La API de Marketing está restringida. Necesitas una aplicación de desarrollador de LinkedIn con aprobaciones de producto específicas:
Ve a developer.linkedin.com → Crear aplicación (asóciala a tu página de empresa).
Pestaña Productos — solicita acceso a:
Marketing Developer Platform(cubrer_ads,r_ads_reporting)Lead Gen FormsoCommunity Management API(cubrer_ads_leadgen_automation)
LinkedIn revisa el acceso a la aplicación manualmente, normalmente entre 2 y 6 semanas.
Pestaña Auth → Authorized Redirect URLs — añade:
http://127.0.0.1:53123(cambia53123si estableces unLINKEDIN_OAUTH_PORTdiferente).Copia el Client ID y el Client Secret de la pestaña Auth.
Sin la aprobación del producto, cada llamada a la API devuelve un 403. El servidor se compila y arranca correctamente; el 403 es un problema de permisos a nivel de aplicación, no de código.
3. Configurar el entorno
cp .env.example .env
# edit .env with your LINKEDIN_CLIENT_ID, LINKEDIN_CLIENT_SECRET,
# LINKEDIN_DEFAULT_AD_ACCOUNT (numeric ID from Campaign Manager URL)4. Autorizar (flujo OAuth de una sola vez)
npm run authEsto abre un servidor HTTP local en el puerto 53123 (o LINKEDIN_OAUTH_PORT), imprime una URL de autenticación en tu terminal y espera la devolución de llamada OAuth. Después de aprobar en el navegador, intercambia el código por un token de acceso + un token de actualización de 365 días y los guarda en token.json (modo 0600).
Solo necesitas volver a ejecutar npm run auth si el token de actualización caduca (después de 365 días).
5. Conectar con Claude Code (o cualquier cliente MCP)
Añade a ~/.claude.json bajo mcpServers:
{
"mcpServers": {
"linkedin": {
"command": "linkedin-campaign-manager-mcp",
"env": {
"LINKEDIN_CLIENT_ID": "your_client_id",
"LINKEDIN_CLIENT_SECRET": "your_client_secret",
"LINKEDIN_TOKEN_PATH": "/absolute/path/to/token.json",
"LINKEDIN_DEFAULT_AD_ACCOUNT": "123456789",
"LINKEDIN_API_VERSION": "202504"
}
}
}
}O si ejecutas desde el código fuente:
{
"mcpServers": {
"linkedin": {
"command": "node",
"args": ["/path/to/linkedin-campaign-manager-mcp/dist/index.js"],
"env": {
"LINKEDIN_CLIENT_ID": "...",
"LINKEDIN_CLIENT_SECRET": "...",
"LINKEDIN_TOKEN_PATH": "/path/to/token.json",
"LINKEDIN_DEFAULT_AD_ACCOUNT": "123456789"
}
}
}
}Reinicia Claude Code. Las 19 herramientas aparecerán bajo el servidor linkedin.
Variables de entorno
Variable | Requerido | Por defecto | Descripción |
| Sí | — | ID de cliente de la aplicación OAuth |
| Sí | — | Secreto de cliente de la aplicación OAuth |
| No |
| Ruta para leer/escribir el archivo de token |
| Recomendado | — | ID numérico de cuenta; las herramientas recurren a esto cuando no se pasa |
| No |
| Puerto de loopback para redirección OAuth |
| No |
| Versión de la API Rosetta de LinkedIn (YYYYMM) |
Manejo de URN
Los recursos de LinkedIn se identifican mediante URNs: urn:li:sponsoredAccount:123, urn:li:sponsoredCampaign:456, etc.
Todas las entradas de herramientas aceptan tanto el ID numérico simple como la URN completa; el cliente envuelve los IDs simples automáticamente. Los IDs numéricos aparecen en las URLs del Campaign Manager (/accounts/<id>/, /campaigns/<id>/).
Entradas de fecha
Todos los parámetros de fecha aceptan:
Entrada | Significado |
| Fecha ISO literal |
| Autoexplicativo |
| N días naturales antes de hoy |
Rango por defecto: 28daysAgo → yesterday.
Advertencias específicas de LinkedIn
Cambios en la versión de la API
LinkedIn Rosetta utiliza versiones mensuales (202504 = abril de 2025). Las versiones quedan obsoletas unos 12 meses después de su lanzamiento; recibirás errores 410 Gone cuando eso ocurra. Actualiza LINKEDIN_API_VERSION trimestralmente. Consulta la documentación de versiones.
Forma de la consulta de analíticas
/adAnalytics utiliza parámetros anidados al estilo Rest.li, no cadenas ISO simples:
dateRange=(start:(year:2024,month:10,day:1),end:(year:2024,month:10,day:31))
campaigns=List(urn:li:sponsoredCampaign:123,urn:li:sponsoredCampaign:456)Esto se maneja internamente mediante dateRangeParam() y liGetRaw(). Si amplías el servidor, dirige las llamadas de analíticas a través de liGetRaw() con una URL construida manualmente; no utilices liGet() para los endpoints de analíticas, ya que URLSearchParams estropeará los paréntesis anidados.
Retraso en los datos de analíticas
Las analíticas de LinkedIn suelen tener un retraso de 2 a 6 horas para la mayoría de las métricas, y hasta 24 horas para los datos de conversión. Las cifras de ayer suelen estar completas; las de hoy son parciales.
Tokens de acceso de 60 días, tokens de actualización de 365 días
Los tokens de acceso caducan en 60 días; los tokens de actualización en 365 días. El cliente actualiza automáticamente el token de acceso en cada solicitud cuando es necesario. Si el token de actualización caduca, ejecuta npm run auth de nuevo.
PII de respuesta de Lead Gen
li_get_leadgen_responses devuelve PII real del lead: nombre, correo electrónico, empresa, cargo. Trata la salida como sensible: no la escribas en registros compartidos, almacenamiento sin cifrar o canales públicos. La política de uso de datos de LinkedIn requiere eliminar las respuestas de los leads dentro de los 90 días posteriores a su recepción, a menos que el lead haya dado su consentimiento activo. Esta herramienta está destinada a la conciliación autorizada con CRM (Marketo/SFDC).
Límites de tasa
LinkedIn no publica números estrictos de límites de tasa. En la práctica, espera una limitación (throttling) de alrededor de 100 llamadas de analíticas por minuto por aplicación. No hay reintento automático en caso de 429; si alcanzas los límites, reduce la frecuencia de llamadas o almacena los resultados en caché en el lado del cliente.
Cuándo NO usar este servidor
Crear o editar campañas, presupuestos o creatividades: diseñado como solo lectura. La creación de campañas tiene demasiados modos de fallo para automatizarla de forma segura; utiliza la interfaz de usuario del Campaign Manager.
Datos de impresiones en tiempo real: utiliza LinkedIn Insight Tag + GA4 para obtener datos casi en tiempo real.
Estimación del tamaño de audiencia para criterios de segmentación arbitrarios: utiliza la interfaz del generador de audiencias del Campaign Manager para dimensionamientos ad-hoc.
li_get_audience_insightssolo devuelve tamaños de segmentos guardados/cargados.
Licencia
MIT © 2026 Zach Leventer
Maintenance
Related MCP Connectors
Managed LinkedIn MCP server for AI agents: search, connect, message and enrich on accounts you own.
233 tools for Google, Microsoft, TikTok, LinkedIn Ads in Claude or ChatGPT. Writes need approval.
Search Meta, Google Ads, LinkedIn, and TikTok ad libraries plus creative analysis via MCP.
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/ZLeventer/linkedin-campaign-manager-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server