Skip to main content
Glama
joaovjo

linkedin-mcp-server-ts

by joaovjo

LinkedIn MCP Server (TypeScript / Bun)

Descargo de responsabilidad: Este es un proyecto independiente de código abierto impulsado por la comunidad. No está afiliado, patrocinado, autorizado ni respaldado por LinkedIn Corporation ni Microsoft Corporation. "LinkedIn" es una marca registrada de LinkedIn Corporation y se utiliza únicamente con fines descriptivos.

Un servidor Model Context Protocol (MCP) ultrarrápido y ligero para la automatización y el scraping de LinkedIn, reescrito en TypeScript y con el tiempo de ejecución Bun.

Proporciona a los asistentes de IA (como Claude Desktop, Cursor, OpenCode, VS Code y Windsurf/Antigravity) 19 herramientas MCP de nivel de producción para navegar por perfiles, buscar empleos y empresas, interactuar con mensajes y extraer feeds utilizando tu propia sesión de navegador autenticada.


⚡ ¿Por qué TypeScript + Bun?

linkedin-mcp-server-ts es un puerto nativo TypeScript/Bun de stickerdaniel/linkedin-mcp-server, diseñado para ofrecer la máxima eficiencia y una huella de recursos mínima:

  • 🚀 Inicio instantáneo y sobrecarga casi nula: El JIT nativo de Bun y la ejecución rápida de paquetes eliminan los retrasos de arranque en frío.

  • 🌐 WebView nativo y motor CDP directo: Automatiza Chromium mediante el Protocolo directo de Chrome DevTools (CDP) y Bun.WebView sin capas pesadas de demonios de navegador externos.

  • 🔄 Paridad total de contratos y esquemas: Reemplazo directo 1:1 de las herramientas, esquemas y formatos de respuesta del servidor MCP de Python.

  • 🔑 Compatibilidad de sesión perfecta: 100% compatible con el almacenamiento de sesión y el formato de cookies estándar de ~/.linkedin-mcp/profile.

Comparación de arquitectura

Característica

Versión de Python (mcp-server-linkedin)

Versión TypeScript / Bun (linkedin-mcp-server-ts)

Tiempo de ejecución

Python 3.10+ (uv / uvx)

Bun 1.2+ (bun / bunx)

Lenguaje

Python (fastmcp)

TypeScript 6 (@modelcontextprotocol/server v2)

Motor de navegador

Fork de Chromium de Patchright

Bun.WebView nativo + Protocolo directo de Chrome DevTools (CDP)

Memoria / Huella

Moderada (~150MB+ en tiempo de ejecución)

Ultraligera (~30-60MB base)

Transportes

stdio, streamable-http

stdio, streamable-http (mediante Bun.serve nativo)

Directorio de sesión

~/.linkedin-mcp/profile

~/.linkedin-mcp/profile (Compartido e interoperable)

Validación

Pydantic

Esquemas de Zod

Número de herramientas

19 herramientas

19 herramientas


🛠️ Resumen de herramientas MCP (19 herramientas)

Herramienta

Categoría

Descripción

Tipo de acceso

get_person_profile

Personas

Extrae detalles del perfil con secciones granulares (experiencia, educación, habilidades, proyectos, certificaciones, publicaciones, etc.)

Solo lectura

get_my_profile

Personas

Extrae el perfil del propio usuario autenticado

Solo lectura

search_people

Personas

Busca personas por palabras clave, ubicación, grado de conexión (F=1.º, S=2.º, O=3.º+) y empresa actual

Solo lectura

connect_with_person

Personas

Envía una solicitud de conexión o acepta una invitación con una nota personalizada opcional

Escritura / Acción

get_sidebar_profiles

Personas

Extrae enlaces de perfiles recomendados en la barra lateral ("Personas que quizás conozcas", "Más perfiles")

Solo lectura

get_company_profile

Empresa

Extrae detalles de la empresa, información «Acerca de», publicaciones, empleos e IDs numéricos de URN de la empresa

Solo lectura

get_company_posts

Empresa

Recupera publicaciones recientes del feed de la empresa

Solo lectura

search_companies

Empresa

Busca empresas por palabra clave

Solo lectura

get_company_employees

Empresa

Enumera los empleados de la empresa desde la sección /people/ con filtros opcionales

Solo lectura

get_job_details

Empleos

Obtiene los detalles completos y las descripciones de una oferta de empleo específica

Solo lectura

search_jobs

Empleos

Busca empleos con filtros: palabras clave, ubicación, fecha de publicación, tipo de empleo, modalidad de trabajo, nivel de experiencia, solicitud fácil

Solo lectura

get_saved_jobs

Empleos

Recupera las ofertas de empleo guardadas por el usuario autenticado

Solo lectura

get_inbox

Mensajería

Enumera los hilos de conversación recientes de la bandeja de entrada de mensajería

Solo lectura

get_conversation

Mensajería

Lee los mensajes de un hilo por nombre de usuario o thread_id

Solo lectura

search_conversations

Mensajería

Busca hilos de mensajería por palabra clave

Solo lectura

send_message

Mensajería

Envía un mensaje directo de LinkedIn (requiere confirm_send: true para una confirmación segura en dos pasos)

Escritura / Acción

get_feed

Feed

Recupera publicaciones recientes de tu feed de inicio

Solo lectura

search_posts

Feed

Búsqueda global en publicaciones de LinkedIn con filtro de antigüedad (past-24h, past-week, past-month)

Solo lectura

close_session

Sesión

Finaliza correctamente la sesión del navegador y limpia los recursos en segundo plano

Escritura / Acción


🚀 Inicio rápido

Requisitos previos

  1. Instala Bun (v1.2 o superior):

    # Windows (PowerShell)
    powershell -c "irm bun.sh/install.ps1 | iex"
    
    # macOS / Linux
    curl -fsSL https://bun.sh/install | bash
  2. Google Chrome / Chromium: instalado en tu sistema.

Ejecución con un solo comando (bunx)

Puedes ejecutar el servidor directamente sin instalación manual usando bunx:

bunx linkedin-mcp-server-ts

Clonación local y configuración de desarrollo

# Clone the repository
git clone https://github.com/joaovjo/linkedin-mcp-server-ts.git
cd linkedin-mcp-server-ts

# Install dependencies
bun install

# Start the server (stdio mode for MCP clients)
bun run start

# Start the HTTP server (for web MCP debugging)
bun run dev

💻 Configuración del cliente MCP

1. Claude Desktop

Añade lo siguiente 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": "bunx",
      "args": ["linkedin-mcp-server-ts"]
    }
  }
}

O cuando se ejecuta desde un clon local:

{
  "mcpServers": {
    "linkedin": {
      "command": "bun",
      "args": ["run", "src/index.ts"],
      "cwd": "D:/linkedin/linkedin-mcp-server-ts"
    }
  }
}

2. Cursor

Añade lo siguiente a .cursor/mcp.json de tu proyecto o a los ajustes globales de Cursor:

{
  "mcpServers": {
    "linkedin": {
      "command": "bunx",
      "args": ["linkedin-mcp-server-ts"]
    }
  }
}

3. OpenCode

Añade lo siguiente a tu opencode.json (o a ~/.config/opencode/opencode.json):

{
  "mcp": {
    "linkedin": {
      "type": "stdio",
      "command": "bunx",
      "args": ["linkedin-mcp-server-ts"]
    }
  }
}

4. Antigravity / Windsurf / VS Code (Cline / Roo Code)

Añade lo siguiente a mcp_config.json:

{
  "mcpServers": {
    "linkedin": {
      "command": "bunx",
      "args": ["linkedin-mcp-server-ts"],
      "disabled": false,
      "autoApprove": []
    }
  }
}

5. Modo Streamable HTTP

Para exponer el servidor a través de HTTP para agentes remotos o entornos contenedorizados:

bun run src/index.ts --transport streamable-http --host 127.0.0.1 --port 8000

URL del endpoint: http://127.0.0.1:8000/mcp
Comprobación de salud: http://127.0.0.1:8000/health


🔐 Autenticación y gestión de sesiones

El servidor utiliza un perfil de navegador persistente almacenado en ~/.linkedin-mcp/profile, de modo que solo necesitas autenticarte una vez.

Opción A: Importación automática desde tu navegador habitual (la más rápida)

Si ya has iniciado sesión en LinkedIn en tu navegador (Chrome, Brave, Edge, Arc, Vivaldi), importa tu sesión al instante:

# Auto-detect the most recent browser session
bunx linkedin-mcp-server-ts --import-from-browser

# Or specify a target browser
bunx linkedin-mcp-server-ts --import-from-browser brave
bunx linkedin-mcp-server-ts --import-from-browser chrome
bunx linkedin-mcp-server-ts --import-from-browser edge

Opción B: Inicio de sesión visual interactivo

Abre una ventana interactiva de Chrome para iniciar sesión:

bunx linkedin-mcp-server-ts --login
# Or from local source:
bun run login
  1. Se abrirá una ventana del navegador Chrome con la página de inicio de sesión de LinkedIn.

  2. Completa tu inicio de sesión (incluidos 2FA / CAPTCHA si se solicitan).

  3. El servidor detecta la navegación correcta a tu feed y guarda tu perfil de sesión de forma segura.

Comprobar el estado de la sesión

bunx linkedin-mcp-server-ts --status
# Or from local source:
bun run status

Cerrar sesión y borrar la sesión

bunx linkedin-mcp-server-ts --logout
# Or from local source:
bun run logout

⚙️ Configuración y variables de entorno

Crea un archivo .env en el directorio raíz (o pasa argumentos de la CLI) para personalizar el comportamiento:

Variable

Indicador CLI

Valor por defecto

Descripción

USER_DATA_DIR

--user-data-dir

~/.linkedin-mcp/profile

Ruta al directorio de perfil persistente del navegador

HEADLESS

--headless / --no-headless

true

Ejecutar el navegador en modo headless

TRANSPORT

--transport

stdio

Protocolo de transporte: stdio o streamable-http

HOST

--host

127.0.0.1

Host de enlace HTTP

PORT

--port

8000

Puerto HTTP

HTTP_PATH

--path

/mcp

Ruta del endpoint HTTP

TIMEOUT

--timeout

5000

Tiempo de espera de navegación/interacción DOM (ms)

TOOL_TIMEOUT

--tool-timeout

180

Tiempo de espera de ejecución de MCP por herramienta (segundos)

LOGIN_TIMEOUT

--login-timeout

1800

Tiempo máximo de espera durante --login (segundos)

LOGIN_INLINE_WAIT

--login-inline-wait

25

Tiempo de espera para la autenticación en línea alternativa (segundos)

AUTO_IMPORT_FROM_BROWSER

--auto-import / --no-auto-import

true

Importar cookies automáticamente si no existe un perfil

CHROME_PATH

--chrome-path

"" (auto-detectado)

Ruta personalizada al ejecutable de Chrome/Chromium

USER_AGENT

--user-agent

""

Anulación opcional del User-Agent del navegador

VIEWPORT

--viewport

1280x720

Dimensiones del viewport del navegador (WIDTHxHEIGHT)

DEBUG_PORT

--debug-port

9222

Puerto de depuración remota de Chrome utilizado durante --login

LOG_LEVEL

--log-level

WARNING

Nivel de registro (DEBUG, INFO, WARNING, ERROR)


🧪 Desarrollo, Pruebas y Calidad

Ejecutar Pruebas de Contrato y Unitarias

Ejecuta el conjunto completo de pruebas que verifica las 19 herramientas, las validaciones de esquema, los clasificadores de metadatos de enlaces y el manejo de errores:

bun test

Linting y Formateo

El estilo del código y el formateo se aplican con Biome:

# Check code for lint issues
bun run lint

# Auto-fix formatting and linting
bun run lint:fix

# Format files
bun run format

Arquitectura del Proyecto

linkedin-mcp-server-ts/
├── src/
│   ├── index.ts               # CLI Entrypoint & Transport routing (stdio / HTTP)
│   ├── config.ts              # CLI flags & environment configuration
│   ├── browser/
│   │   ├── auth.ts            # Login, logout, status, and browser cookie importer
│   │   ├── cdp.ts             # Direct Chrome DevTools Protocol helper functions
│   │   ├── chrome-launch.ts   # Process launcher for visual login & remote attach
│   │   ├── manager.ts         # Bun.WebView & CDP lifecycle manager
│   │   └── types.ts           # Browser status types
│   ├── errors/                # Unified error handling & custom error hierarchy
│   ├── mcp/
│   │   └── create-server.ts   # MCP Server registration & tool mounting
│   ├── middleware/            # Concurrency serialization queue
│   ├── scraping/              # DOM extraction, noise removal, link classification & URNs
│   ├── session/               # Cookie storage, profile directories, and persistence
│   ├── tools/                 # 19 MCP tool implementations
│   └── utils/                 # General helpers
├── tests/                     # Bun test suite & contract validations
├── bunfig.toml                # Bun configuration & npm publish registry settings
└── package.json               # Package metadata, dependencies, and scripts

📦 Publicación en NPM

Este proyecto utiliza bunfig.toml para publicar directamente en el registro npm con Bun:

# Verify typecheck & tests pass
bun test
bun run lint

# Publish public package
bun publish

🤝 Contribuciones

¡Las contribuciones, los informes de errores y las solicitudes de extracción son bienvenidos!

  1. Haz un fork del repositorio en GitHub: https://github.com/joaovjo/linkedin-mcp-server-ts

  2. Crea una rama de características: git checkout -b feature/amazing-feature

  3. Confirma tus cambios: git commit -m 'feat: add amazing feature'

  4. Asegúrate de que todas las pruebas pasen: bun test && bun run lint

  5. Empuja a la rama: git push origin feature/amazing-feature

  6. Abre una solicitud de extracción.


📄 Licencia y Créditos

-
license - not tested
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • Managed LinkedIn MCP server for AI agents: search, connect, message and enrich on accounts you own.

  • MCP server for LeadDelta — manage LinkedIn connections and CRM data via AI assistants.

  • Stealth scraping & search. Bypasses Cloudflare, DataDome & LinkedIn via Cyborg HITL approach.

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/joaovjo/linkedin-mcp-server-ts'

If you have feedback or need assistance with the MCP directory API, please join our Discord server