LinkedIn MCP Server

Un servidor MCP para la API REST v2 de LinkedIn que permite a asistentes de IA crear, listar y eliminar publicaciones, gestionar eventos, subir imágenes, comentar y reaccionar, con OAuth 2.0 y persistencia de sesión, seguimiento local del historial de publicaciones y múltiples pruebas automatizadas.

Documentación

Servidor MCP de LinkedIn

linkedin-mcp-server MCP server

Un servidor de Protocolo de Contexto de Modelo (MCP) que proporciona a los asistentes de IA acceso a la API oficial de LinkedIn. Crea publicaciones, gestiona eventos e interactúa con LinkedIn, todo mediante lenguaje natural a través de cualquier cliente compatible con MCP.

Solo API oficial. Sin scraping, sin endpoints no oficiales, sin riesgo para tu cuenta.

Características

Herramientas de autoservicio (sin aprobación de LinkedIn)

HerramientaDescripción
linkedin_auth_startIniciar el flujo de autenticación OAuth 2.0
linkedin_auth_callbackCompletar OAuth con el código de autorización
linkedin_auth_logoutRevocar el token y cerrar sesión
linkedin_get_my_profileObtener tu perfil de LinkedIn (nombre, titular, foto, correo)
linkedin_get_my_emailObtener tu dirección de correo electrónico
linkedin_get_auth_statusVerificar el estado de autenticación
linkedin_get_rate_limitsVer el uso de los límites de tasa de la API
linkedin_create_postCrear publicaciones de texto, artículo o imagen
linkedin_delete_postEliminar tus publicaciones
linkedin_create_commentComentar en publicaciones
linkedin_react_to_postReaccionar a publicaciones (me gusta, celebrar, apoyar, amar, perspicaz, divertido)
linkedin_upload_imageSubir imágenes para publicaciones
linkedin_list_my_postsListar publicaciones creadas a través de este servidor con URNs de referencia
linkedin_create_eventCrear eventos de LinkedIn
linkedin_get_eventObtener detalles del evento

Aspectos destacados de la arquitectura

  • OAuth 2.0 - Autenticación segura con almacenamiento persistente de tokens
  • Restauración automática de sesión - Sobrevive a reinicios del servidor sin reautenticación (hasta que el token expire)
  • Seguimiento del historial de publicaciones - Registro local en SQLite de publicaciones creadas a través del servidor para fácil referencia y eliminación
  • Limitación de tasa adaptativa - Aprende los límites reales de LinkedIn a partir de los encabezados de respuesta
  • Reintento automático - Retroceso exponencial para fallos transitorios (429, 5xx)
  • Detección de capacidades - Solo expone herramientas que coinciden con tus alcances otorgados
  • Versionado de API - Maneja la rotación mensual de versiones de la API de LinkedIn

Requisitos previos

  1. Node.js 20+
  2. Aplicación de desarrollador de LinkedIn (consulta los pasos de configuración a continuación)

Configuración de la aplicación de LinkedIn

Paso 1: Crear una aplicación de desarrollador de LinkedIn

  1. Ve a linkedin.com/developers/apps e inicia sesión
  2. Haz clic en Create app
  3. Completa los campos obligatorios:
    • App name: Elige cualquier nombre (por ejemplo, "My MCP LinkedIn")
    • LinkedIn Page: Selecciona tu página de LinkedIn o crea una si es necesario
    • Privacy policy URL: Puedes usar la URL de tu sitio web o un marcador de posición
    • App logo: Sube cualquier imagen (obligatorio)
  4. Marca la casilla del acuerdo legal y haz clic en Create app

Paso 2: Obtener tu Client ID y Client Secret

  1. Después de crear la aplicación, aterrizarás en la página de configuración de la aplicación
  2. Ve a la pestaña Auth
  3. Copia el Client ID - lo necesitarás para la configuración
  4. Copia el Client Secret (haz clic en el ícono del ojo para revelarlo) - también lo necesitarás

Paso 3: Agregar la URL de redirección

  1. Aún en la pestaña Auth, desplázate hasta OAuth 2.0 settings
  2. Bajo Authorized redirect URLs for your app, haz clic en Add redirect URL
  3. Ingresa: http://localhost:3000/callback
  4. Haz clic en Update para guardar

Importante: La URL de redirección debe coincidir exactamente, incluidos el protocolo (http://), el puerto (:3000) y la ruta (/callback). Sin barra diagonal final.

Paso 4: Habilitar los productos requeridos

  1. Ve a la pestaña Products en la página de tu aplicación
  2. Solicita acceso a estos dos productos:
    • Sign In with LinkedIn using OpenID Connect - Haz clic en Request access, revisa los términos y acepta
    • Share on LinkedIn - Haz clic en Request access, revisa los términos y acepta
  3. Ambos productos suelen aprobarse al instante para uso de autoservicio

Verifica: Después de habilitarlos, vuelve a la pestaña Auth. Bajo OAuth 2.0 scopes, deberías ver: openid, profile, email, w_member_social.

Inicio rápido

1. Instalación

git clone https://github.com/souravdasbiswas/linkedin-mcp-server.git
cd linkedin-mcp-server
npm install
npm run build

2. Configura tu cliente MCP

Para Claude Code (recomendado):

claude mcp add linkedin \
  -e LINKEDIN_CLIENT_ID=your_client_id \
  -e LINKEDIN_CLIENT_SECRET=your_client_secret \
  -- node /path/to/linkedin-mcp-server/dist/index.js

O agrégalo manualmente a ~/.claude.json:

{
  "mcpServers": {
    "linkedin": {
      "command": "node",
      "args": ["/path/to/linkedin-mcp-server/dist/index.js"],
      "env": {
        "LINKEDIN_CLIENT_ID": "your_client_id",
        "LINKEDIN_CLIENT_SECRET": "your_client_secret"
      }
    }
  }
}

Para Claude Desktop, agrégalo a claude_desktop_config.json:

{
  "mcpServers": {
    "linkedin": {
      "command": "node",
      "args": ["/path/to/linkedin-mcp-server/dist/index.js"],
      "env": {
        "LINKEDIN_CLIENT_ID": "your_client_id",
        "LINKEDIN_CLIENT_SECRET": "your_client_secret"
      }
    }
  }
}

Reemplaza your_client_id y your_client_secret con los valores del Paso 2.

3. Autenticación

Una vez conectado, dile a tu asistente de IA:

"Authenticate with LinkedIn"

El asistente generará una URL de OAuth. Esto es lo que sucede:

  1. Abre la URL en tu navegador
  2. Inicia sesión en LinkedIn y haz clic en Allow para autorizar la aplicación
  3. LinkedIn redirige a http://localhost:3000/callback?code=XXX&state=YYY
  4. Como no hay un servidor local escuchando, verás un error de "página no encontrada" - eso es esperado
  5. Copia la URL completa de la barra de direcciones de tu navegador y pégala de vuelta al asistente
  6. El asistente extrae los parámetros code y state y completa la autenticación

Después de la primera autenticación, tu sesión persiste entre reinicios del servidor (el token es válido por 60 días). Solo necesitas reautenticarte cuando el token expire.

4. Úsalo

Ejemplos de indicaciones:

  • "Post to LinkedIn: Just shipped a new feature that reduces API latency by 40%"
  • "List my LinkedIn posts" - ver todas las publicaciones que has hecho a través del servidor
  • "Delete my last LinkedIn post"
  • "Create a LinkedIn event for our team meetup next Friday at 2pm"
  • "React to this LinkedIn post with a celebrate reaction"
  • "What's my LinkedIn profile info?"

Variables de entorno

VariableObligatoriaPredeterminadoDescripción
LINKEDIN_CLIENT_IDSí-Client ID de la aplicación de LinkedIn
LINKEDIN_CLIENT_SECRETSí-Client secret de la aplicación de LinkedIn
LINKEDIN_REDIRECT_URINohttp://localhost:3000/callbackURI de redirección de OAuth
LINKEDIN_MCP_DATA_DIRNo~/.linkedin-mcpDirectorio para el almacenamiento de tokens
LINKEDIN_API_BASE_URLNohttps://api.linkedin.comURL base de la API (anular para pruebas)
LINKEDIN_AUTH_BASE_URLNohttps://www.linkedin.com/oauth/v2URL base de autenticación

Desarrollo

# Install dependencies
npm install

# Type check
npm run typecheck

# Run tests
npm test

# Run tests in watch mode
npm run test:watch

# Run with coverage
npm run test:coverage

# Lint
npm run lint

# Dev mode (tsx, no build needed)
npm run dev

Arquitectura de pruebas

Las pruebas se ejecutan completamente contra un servidor simulado de la API de LinkedIn - no se realizan llamadas reales a la API.

CapaQué pruebaArchivos
Pruebas unitariasAuth, PKCE, almacén de tokens, limitador de tasa, errores, capacidadestests/unit/
Pruebas de integraciónFlujo completo del protocolo MCP mediante transporte en memoriatests/integration/
Pruebas de contratoLas formas de solicitud/respuesta coinciden con la especificación de la API de LinkedIntests/contract/

Estructura del proyecto

src/
  index.ts              # Entry point, stdio transport
  server.ts             # MCP server wiring
  auth/
    oauth2.ts           # OAuth 2.0 flow + token exchange
    token-store.ts      # SQLite token persistence + session auto-restore
    pkce.ts             # PKCE challenge generation (available for public clients)
    tools.ts            # Auth MCP tools
  client/
    api-client.ts       # HTTP client with retry
    rate-limiter.ts     # Adaptive rate limiting
    version-manager.ts  # LinkedIn API versioning
    errors.ts           # Structured error types
    post-history.ts     # Local post tracking (SQLite)
  capabilities/
    detector.ts         # Scope-based capability detection
  modules/
    profile/tools.ts    # Profile reading tools
    posting/tools.ts    # Post creation/management tools
    events/tools.ts     # Event management tools
  types/
    linkedin.ts         # LinkedIn API type definitions
    config.ts           # Server configuration types

Limitaciones

Estas son restricciones de la API de LinkedIn, no limitaciones del servidor:

  • No se pueden leer perfiles de otros - Solo el perfil del usuario autenticado
  • No se puede buscar personas - No hay API pública de búsqueda
  • No se pueden enviar mensajes - Solo disponible para socios de Sales Navigator
  • No se pueden leer feeds - El alcance r_member_social está cerrado
  • No se puede acceder a conexiones - Solo el recuento de conexiones con aprobación de Marketing API
  • Límites de tasa - ~500 llamadas de aplicación/día, ~100 por miembro/día (nivel de desarrollo)

Extensión al nivel Pro

Si tu aplicación de LinkedIn tiene aprobación de Community Management API o Advertising API, la detección de capacidades del servidor habilitará automáticamente módulos adicionales cuando te autentiques con los alcances correspondientes. La arquitectura modular admite agregar nuevos módulos de API sin modificar el servidor principal.

Licencia

MIT