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
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
- 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.
- 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. - 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.
- Fragmentación de IA de Escritorio vs. Nube: Las herramientas de IA de escritorio (Claude Desktop, Cursor) se comunican a través de
stdiolocal, 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
- 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.
- 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. - 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. - 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. - Arquitectura Universal de Múltiples Transportes: Se ejecuta localmente a través de
stdiousandouvxsin clonación, o de forma remota a través destreamable-http/ssecon 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:
- Google Chrome: Instalado y funcionando normalmente.
- Python 3.10 o superior: python.org/downloads
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
- Windows (PowerShell):
⚡ 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:
- Se abrirá automáticamente una ventana real de Google Chrome.
- Ingresa tus credenciales de LinkedIn y completa 2FA / verificación si se solicita.
- 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.
- 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
- Copia la URL pública del túnel que se muestra en tu terminal (por ejemplo,
https://example-subdomain.trycloudflare.com). - Ve a grok.com/connectors en tu navegador.
- Haz clic en Agregar Servidor MCP Personalizado:
- Nombre:
LinkedIn MCP - URL:
https://example-subdomain.trycloudflare.com/mcp(⚠️ Importante: debes agregar/mcpal final de la URL)
- Nombre:
- Haz clic en Guardar y ¡comienza a chatear con Grok!
[!TIP] ¿Por qué
/mcpen 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 congrok.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ía | Nombre de la Herramienta | Argumentos Clave | Descripción |
|---|---|---|---|
| Autenticación y Mantenimiento | check_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_login | timeout_seconds | Abre 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 Propio | get_my_profile | (ninguno) | Recupera los detalles de tu perfil autenticado (nombre, titular, biografía, experiencia). |
(Bloqueado de forma fija a /in/me) | update_my_headline | headline | Actualiza tu titular bajo tu nombre. |
update_my_about | summary | Actualiza tu texto de resumen Acerca de / biografía. | |
add_education | school, degree, field_of_study, start_year, end_year, ... | Agrega una credencial académica a tu perfil. | |
add_experience | title, company, employment_type, location, description, ... | Agrega un trabajo o rol a tu sección de Experiencia. | |
add_skill | skill_name | Agrega una habilidad a tu sección de Habilidades (con autoselección de sugerencias). | |
add_project | title, description, url, start_year, end_year | Agrega un proyecto a tu sección de Proyectos. | |
update_job_preferences | job_titles, location_types, locations, employment_types | Configura las preferencias profesionales de "Abierto a trabajar". | |
update_my_services | services_to_add, services_to_remove, description | Actualiza los servicios y ofertas para clientes en tu perfil. | |
| Navegación y Búsqueda | search_people | keywords, location, current_company, limit | Busca profesionales en LinkedIn con insignias de grado de conexión (1.º/2.º/3.º). |
view_profile | profile_url | Lee los detalles del perfil público/de red de cualquier miembro en modo solo lectura. | |
| Feed, Publicaciones y Encuestas | get_feed | limit | Lee publicaciones recientes de tu feed de inicio personal. |
create_post | text, media_path (opcional) | Publica una publicación creada por tu cuenta, opcionalmente adjuntando imagen/PDF. | |
create_poll | question, options, duration | Publica una encuesta interactiva en tu feed (2-4 opciones, duración personalizada). | |
comment_on_post | post_url, comment_text | Comenta en una publicación como tu perfil autenticado. | |
| Análisis e Información | get_post_analytics | limit | Recupera 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 Directa | list_conversations | limit | Lista los hilos de mensajes directos recientes en tu bandeja de entrada. |
get_conversation_messages | recipient_name, limit | Lee el historial completo de mensajes y respuestas de un hilo específico. | |
send_message | recipient_profile_url, message_text | Envía un mensaje directo desde tu cuenta. | |
| Crecimiento de Red | send_connection_request | profile_url, custom_note | Enví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_invitation | sender_name, action | Acepta o ignora una invitación de conexión pendiente. | |
| Habilidades de Agente | get_network_briefing | limit | Genera 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ámetrotarget_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.