Skip to main content
Glama
ZLeventer

linkedin-campaign-manager-mcp

LinkedIn Campaign Manager MCP

npm version npm downloads Node.js MCP License: MIT

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

li_list_ad_accounts

Todas las cuentas publicitarias a las que el usuario tiene acceso, con estado + moneda.

li_get_account

Detalle de una sola cuenta: moneda, estado, tipo, información de facturación.

li_list_campaigns

Campañas en una cuenta; filtrar por estado o grupo de campaña.

li_get_campaign

Detalle completo de la campaña: criterios de segmentación, puja, presupuesto, objetivo.

li_list_campaign_groups

Grupos de campañas (contenedores de presupuesto/objetivo compartido).

li_list_creatives

Creatividades de anuncios; filtrar por campaña o estado.

li_get_creative

Detalle completo de la creatividad: titular, texto, URL, URNs de imagen/vídeo.

li_get_campaign_performance

Impresiones/clics/gasto/conversiones/leads en un rango de fechas. Granularidad DIARIA/MENSUAL/ANUAL/TOTAL.

li_get_demographics_report

Rendimiento por empresa / tamaño de empresa / sector / función laboral / cargo / antigüedad / región / país.

li_compare_periods

WoW/MoM/YoY con columnas _current/_prior/_delta/_pct_change por entidad calculadas en el servidor.

li_get_video_analytics

Embudo de finalización de vídeo por creatividad: inicios → 25% → 50% → 75% → finalizaciones + tasa de finalización.

li_get_budget_pacing

Gasto frente a % de utilización del presupuesto para campañas activas durante un periodo configurable.

li_get_conversion_events

Definiciones de eventos de conversión de Insight Tag: tipo, ventanas de atribución, estado habilitado.

li_get_conversion_performance

Rendimiento por evento de conversión (pivote CONVERSION): desglose post-clic frente a post-impresión.

li_get_audience_insights

Segmentos DMP: audiencias coincidentes, listas de empresas, segmentos combinados/similares + tamaños.

li_search_targeting_facets

Búsqueda predictiva de valores de segmentación (cargos, habilidades, empresas, sectores, ubicaciones, antigüedades).

li_get_leadgen_forms

Formularios de generación de leads + configuración de preguntas + estado.

li_get_leadgen_responses

Envíos reales de formularios con PII (nombre, correo electrónico, empresa, cargo).

li_get_leadgen_form_performance

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-mcp

O clona y compila localmente:

git clone https://github.com/ZLeventer/linkedin-campaign-manager-mcp
cd linkedin-campaign-manager-mcp
npm install
npm run build

2. 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:

  1. Ve a developer.linkedin.comCrear aplicación (asóciala a tu página de empresa).

  2. Pestaña Productos — solicita acceso a:

    • Marketing Developer Platform (cubre r_ads, r_ads_reporting)

    • Lead Gen Forms o Community Management API (cubre r_ads_leadgen_automation)

  3. LinkedIn revisa el acceso a la aplicación manualmente, normalmente entre 2 y 6 semanas.

  4. Pestaña AuthAuthorized Redirect URLs — añade: http://127.0.0.1:53123 (cambia 53123 si estableces un LINKEDIN_OAUTH_PORT diferente).

  5. 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 auth

Esto 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

LINKEDIN_CLIENT_ID

ID de cliente de la aplicación OAuth

LINKEDIN_CLIENT_SECRET

Secreto de cliente de la aplicación OAuth

LINKEDIN_TOKEN_PATH

No

./token.json

Ruta para leer/escribir el archivo de token

LINKEDIN_DEFAULT_AD_ACCOUNT

Recomendado

ID numérico de cuenta; las herramientas recurren a esto cuando no se pasa ad_account_id

LINKEDIN_OAUTH_PORT

No

53123

Puerto de loopback para redirección OAuth

LINKEDIN_API_VERSION

No

202504

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

2024-10-01

Fecha ISO literal

today / yesterday

Autoexplicativo

7daysAgo, 28daysAgo, 90daysAgo

N días naturales antes de hoy

Rango por defecto: 28daysAgoyesterday.


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_insights solo devuelve tamaños de segmentos guardados/cargados.


Licencia

MIT © 2026 Zach Leventer

Install Server
A
license - permissive license
A
quality
B
maintenance

Maintenance

Maintainers
2hResponse time
0dRelease cycle
2Releases (12mo)

Related MCP Connectors

View all MCP Connectors

Latest Blog Posts

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