Universal LinkedIn MCP Server

Servidor MCP universal de LinkedIn para edición de perfiles, publicaciones enriquecidas (multimedia, encuestas), hilos de mensajería, crecimiento de red y análisis con automatización de navegador sigilosa y estrictas salvaguardas de cuenta.

Documentación

Servidor MCP Universal de LinkedIn

Model Context Protocol Python 3.10+ Tools: 29 CI License: MIT

Un servidor de Protocolo de Contexto de Modelo (MCP) de nivel de producción que conecta tu asistente de IA (Claude, Grok, Cursor, Antigravity) a LinkedIn con automatización de navegador sigilosa similar a la humana, salvaguardas matemáticas de límites de cuenta y cero restricciones de API oficiales.


💡 Por Qué Existe Esto: El Problema y La Solución

❌ El Problema

  1. El Muro de la API Cerrada: Las API oficiales para desarrolladores de LinkedIn están restringidas detrás de programas de socios empresariales (Plataforma de Desarrollo de Marketing de LinkedIn / Soluciones de Talento de LinkedIn). Los desarrolladores independientes, freelancers y agentes de IA no pueden obtener acceso de escritura para publicar publicaciones, enviar invitaciones de conexión o actualizar perfiles de forma programática.
  2. La Trampa de Prohibición Anti-Bot: Las herramientas estándar de automatización (Puppeteer, Selenium, binarios crudos de Chromium) activan los puntos de control de detección de bots de LinkedIn en cuestión de minutos. Transmiten navigator.webdriver = true, carecen de gestión persistente de cookies, escriben a velocidades robóticas y fallan cuando se les presenta 2FA o CAPTCHAs, lo que resulta en restricciones inmediatas de cuenta.
  3. El Peligro de Seguridad de LLM e Inyección de Prompts: Dar a un LLM autónomo acceso al navegador es peligroso. Sin salvaguardas rígidas, las inyecciones de prompts pueden engañar a una IA para que edite cuentas no intencionadas, extraiga objetivos no autorizados o envíe spam a través de tu red profesional.
  4. Fragmentación de IA de Escritorio vs. Nube: Las herramientas de IA de escritorio (Claude Desktop, Cursor) se comunican a través de stdio local, mientras que la IA en la nube basada en web (como Grok.com) se ejecuta en servidores remotos y no puede acceder a tu navegador o sesión local sin túneles seguros y soporte CORS.

✅ La Solución

  1. Plataforma Completa de 29 Herramientas Sin Claves de API: Proporciona a tu IA capacidades humanas completas: edición de perfil, publicaciones enriquecidas (con imágenes/PDF), encuestas interactivas, historial de bandeja de entrada, gestión de conexiones, análisis e informes de inteligencia ejecutiva.
  2. Motor Sigiloso Nativo de Google Chrome: Utiliza la instalación real y nativa de Google Chrome de tu computadora en lugar de binarios genéricos de Chromium. Elimina los marcadores de automatización (navigator.webdriver), introduce variación de retraso de escritura humana y ejecuta movimientos naturales de ratón con curvas de Bézier.
  3. Gestión de Sesión Sin Contraseña y Compatible con 2FA: Nunca solicita ni almacena tu contraseña de LinkedIn en texto plano. Inicias sesión interactivamente una vez a través de tu navegador real, resuelves cualquier desafío 2FA, y el estado de sesión cifrado se guarda localmente en ~/.linkedin_mcp. La telemetría integrada de mantenimiento extiende automáticamente la ventana de actividad deslizante de 30 días de LinkedIn.
  4. Límites Matemáticos de Cuenta: Las herramientas de modificación de perfil (update_my_headline, update_my_about, add_experience, etc.) no aceptan un parámetro de perfil objetivo. Están codificadas de forma fija a /in/me. Es matemáticamente imposible que una IA modifique un perfil externo.
  5. Arquitectura Universal de Múltiples Transportes: Se ejecuta localmente a través de stdio usando uvx sin clonación, o de forma remota a través de streamable-http / sse con soporte CORS completo y un script de túnel Cloudflare de 1 clic para Grok.com.

📋 Requisitos Previos

Antes de configurar, asegúrate de que tu computadora tenga:

  1. Google Chrome: Instalado y funcionando normalmente.
  2. Python 3.10 o superior: python.org/downloads
  3. uv (Ejecutor Rápido de Paquetes de Python):
    • Windows (PowerShell):
      powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
      
    • macOS / Linux:
      curl -LsSf https://astral.sh/uv/install.sh | sh
      

⚡ Paso 1: Autenticación Interactiva de Una Sola Vez

Solo necesitas iniciar sesión una vez. El servidor guarda tu estado de sesión en ~/.linkedin_mcp para que tus asistentes de IA permanezcan autenticados entre reinicios.

Abre tu terminal y ejecuta:

uvx --from git+https://github.com/ChimbuezeDavid/linkedin-mcp python -c "import asyncio; from linkedin_mcp.tools.auth import linkedin_start_login; asyncio.run(linkedin_start_login())"

Qué sucede:

  1. Se abrirá automáticamente una ventana real de Google Chrome.
  2. Ingresa tus credenciales de LinkedIn y completa 2FA / verificación si se solicita.
  3. Una vez que tu feed de inicio de LinkedIn se cargue, la herramienta verifica automáticamente tu identidad, guarda tus cookies cifradas y cierra el navegador.
  4. Tu terminal mostrará: Active session verified for <Your Name>.

🔌 Paso 2: Conéctate a Tu Asistente de IA

Elige tu configuración a continuación según estés usando un Cliente de IA de Escritorio (Claude, Cursor, Antigravity) o una IA Web en la Nube (Grok.com).


Opción A: Clientes de IA de Escritorio (Sin Clonación a través de uvx)

No necesitas descargar ni clonar este repositorio. Tu cliente de IA lo ejecutará directamente usando uvx.

1. Claude Desktop

Agrega este fragmento a tu claude_desktop_config.json:

  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "linkedin": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/ChimbuezeDavid/linkedin-mcp",
        "linkedin-mcp"
      ]
    }
  }
}

2. Antigravity

Abre tu configuración MCP de Antigravity (mcp_config.json o Configuración > MCP):

{
  "mcpServers": {
    "linkedin": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/ChimbuezeDavid/linkedin-mcp",
        "linkedin-mcp"
      ]
    }
  }
}

3. Cursor y Windsurf

Agrega a .cursor/mcp.json o a tu configuración global de Cursor:

{
  "mcpServers": {
    "linkedin": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/ChimbuezeDavid/linkedin-mcp",
        "linkedin-mcp"
      ]
    }
  }
}

4. Claude Code CLI

Ejecuta directamente desde tu terminal:

claude mcp add linkedin uvx --from git+https://github.com/ChimbuezeDavid/linkedin-mcp linkedin-mcp

Opción B: IA Basada en Web en la Nube (Grok.com)

Los asistentes de IA basados en la nube (como grok.com/connectors) no pueden conectarse a localhost. Necesitan un túnel público y cifrado con soporte CORS y HTTP Streamable.

Incluimos un script de inicio de 1 clic preconfigurado que inicia el servidor MCP en modo HTTP Streamable en el puerto 8765 y lanza un túnel Cloudflare.

Paso 1: Ejecuta el Script del Conector Grok

Clona el repositorio y ejecuta el script:

git clone https://github.com/ChimbuezeDavid/linkedin-mcp.git
cd linkedin-mcp
  • En Windows (PowerShell):
    powershell -ExecutionPolicy Bypass -File .\run_for_grok.ps1
    
  • En macOS / Linux:
    # Terminal 1: Launch MCP server in Streamable HTTP mode
    uv run linkedin-mcp --transport streamable-http --port 8765
    
    # Terminal 2: Expose via Cloudflare Tunnel
    cloudflared tunnel --url http://127.0.0.1:8765
    

Paso 2: Configura Grok.com

  1. Copia la URL pública del túnel que se muestra en tu terminal (por ejemplo, https://example-subdomain.trycloudflare.com).
  2. Ve a grok.com/connectors en tu navegador.
  3. Haz clic en Agregar Servidor MCP Personalizado:
    • Nombre: LinkedIn MCP
    • URL: https://example-subdomain.trycloudflare.com/mcp (⚠️ Importante: debes agregar /mcp al final de la URL)
  4. Haz clic en Guardar y ¡comienza a chatear con Grok!

[!TIP] ¿Por qué /mcp en lugar de /sse? Los túneles rápidos de Cloudflare no admiten Eventos Enviados por el Servidor (SSE) persistentes debido al almacenamiento en búfer del proxy, pero funcionan perfectamente con HTTP Streamable (/mcp). El servidor incluye middleware CORS integrado para garantizar una comunicación fluida con grok.com.


Opción C: Configuración de Desarrollo Local

Si deseas contribuir o modificar el código base localmente:

git clone https://github.com/ChimbuezeDavid/linkedin-mcp.git
cd linkedin-mcp
uv sync

Para configurar tu cliente de IA para que apunte a tu código local:

{
  "mcpServers": {
    "linkedin": {
      "command": "uv",
      "args": [
        "--directory",
        "<ABSOLUTE_PATH_TO_LINKEDIN_MCP>",
        "run",
        "linkedin-mcp"
      ]
    }
  }
}

🛠️ Herramientas MCP Disponibles (29 Herramientas)

Todas las herramientas operan estrictamente dentro del límite de la cuenta autenticada y aplican @require_auth.

CategoríaNombre de la HerramientaArgumentos ClaveDescripción
Autenticación y Mantenimientocheck_login_status(ninguno)Inspecciona la validez de la sesión, la identidad de la cuenta activa y la antigüedad de la ventana deslizante.
start_logintimeout_secondsAbre una ventana interactiva de Chrome para inicio de sesión con 1 clic y 2FA.
logout(ninguno)Borra los tokens de sesión almacenados, cookies locales y datos de perfil en caché.
refresh_session(ninguno)Realiza un latido silencioso para extender la ventana deslizante de sesión de 30 días.
Perfil Propioget_my_profile(ninguno)Recupera los detalles de tu perfil autenticado (nombre, titular, biografía, experiencia).
(Bloqueado de forma fija a /in/me)update_my_headlineheadlineActualiza tu titular bajo tu nombre.
update_my_aboutsummaryActualiza tu texto de resumen Acerca de / biografía.
add_educationschool, degree, field_of_study, start_year, end_year, ...Agrega una credencial académica a tu perfil.
add_experiencetitle, company, employment_type, location, description, ...Agrega un trabajo o rol a tu sección de Experiencia.
add_skillskill_nameAgrega una habilidad a tu sección de Habilidades (con autoselección de sugerencias).
add_projecttitle, description, url, start_year, end_yearAgrega un proyecto a tu sección de Proyectos.
update_job_preferencesjob_titles, location_types, locations, employment_typesConfigura las preferencias profesionales de "Abierto a trabajar".
update_my_servicesservices_to_add, services_to_remove, descriptionActualiza los servicios y ofertas para clientes en tu perfil.
Navegación y Búsquedasearch_peoplekeywords, location, current_company, limitBusca profesionales en LinkedIn con insignias de grado de conexión (1.º/2.º/3.º).
view_profileprofile_urlLee los detalles del perfil público/de red de cualquier miembro en modo solo lectura.
Feed, Publicaciones y Encuestasget_feedlimitLee publicaciones recientes de tu feed de inicio personal.
create_posttext, media_path (opcional)Publica una publicación creada por tu cuenta, opcionalmente adjuntando imagen/PDF.
create_pollquestion, options, durationPublica una encuesta interactiva en tu feed (2-4 opciones, duración personalizada).
comment_on_postpost_url, comment_textComenta en una publicación como tu perfil autenticado.
Análisis e Informaciónget_post_analyticslimitRecupera impresiones, reacciones y comentarios de tus publicaciones recientes.
get_profile_views(ninguno)Recupera los recuentos de visitas de perfil privado y la demografía de los visitantes.
Mensajería Directalist_conversationslimitLista los hilos de mensajes directos recientes en tu bandeja de entrada.
get_conversation_messagesrecipient_name, limitLee el historial completo de mensajes y respuestas de un hilo específico.
send_messagerecipient_profile_url, message_textEnvía un mensaje directo desde tu cuenta.
Crecimiento de Redsend_connection_requestprofile_url, custom_noteEnvía una invitación de conexión con una nota personalizada opcional.
get_pending_invitations(ninguno)Lista las invitaciones de conexión entrantes recibidas por tu cuenta.
manage_invitationsender_name, actionAcepta o ignora una invitación de conexión pendiente.
Habilidades de Agenteget_network_briefinglimitGenera un resumen ejecutivo diario: bandeja de entrada, invitaciones, análisis y tendencias del feed.
analyze_profile_strength(ninguno)Audita la completitud en 6 secciones y proporciona una puntuación accionable y consejos.

🧪 Pruebas Automatizadas y Verificación

El repositorio incluye un conjunto completo de pruebas unitarias que verifican restricciones de límites, invariantes de seguridad, validación de parámetros y cálculo de salud de sesión:

uv run python -m unittest discover tests

Salida esperada:

Ran 12 tests in 0.015s

OK

🔒 Invariantes de Seguridad y Privacidad

  • Cero Exposición de Contraseña en Texto Plano: El servidor nunca solicita, lee ni almacena tu contraseña de LinkedIn.
  • Solo Almacenamiento Local: Todo el estado de sesión, cookies y cachés de identidad se guardan estrictamente en tu máquina local en ~/.linkedin_mcp. No se utilizan telemetría externa ni servidores en la nube.
  • Imposibilidad Matemática de Suplantación: Las herramientas de edición de perfil propio están codificadas de forma fija para navegar a /in/me/. No existe un parámetro target_profile_url, lo que evita que los LLM con inyección de prompts alteren los perfiles de otros miembros.

📄 Licencia

Licencia MIT. Consulta LICENCIA para más detalles. Creado con ❤️ por Chimbueze (David) Okoroji.