linkedin-pilot, servidor MCP para LinkedIn
Servidor MCP y CLI en TypeScript que permite a un asistente de IA actualizar un perfil, interactuar y postular a ofertas con la sesión real del usuario, con confirmación explícita antes de cada acción visible para terceros.
Ficha del proyecto
- Rol
- Autor y mantenedor
- Periodo
- sept de 2026 a hoy
- Enlaces públicos
- Código en GitHub(se abre en otra pestaña)
35+
herramientas MCP documentadas para perfil, interacciones y postulacionesFuente: README del repositorio, octubre de 2026
El problema
La API oficial de LinkedIn no permite escribir en el perfil ni postular a ofertas, porque el acceso real exige un programa de socios y ni siquiera los socios pueden editar la experiencia. Quería que un asistente de IA hiciera ese trabajo con mi propia sesión, sin guardar mi contraseña y sin acciones sorpresa.
Mi rol
- Diseñé la separación entre lectura y escritura y el motor de formularios.
- Implementé el servidor MCP, la CLI y el banco de respuestas reutilizables.
- Lo publiqué con documentación de instalación, diagnóstico y una salida de emergencia para terminar a mano cualquier flujo.
Restricciones
- No hay API oficial para escribir, así que la única vía es la interfaz real.
- La interfaz cambia de estructura y de clases CSS sin aviso, y se sirve en el idioma de la cuenta.
- Ninguna acción visible para otras personas puede ocurrir sin confirmación explícita.
- El inicio de sesión no se automatiza, porque dispara bloqueos y obligaría a guardar la contraseña.
Decisiones
- 01
Leer por la API interna y escribir por la interfaz
La API interna que usa la propia página devuelve el perfil y las ofertas estructurados en una sola llamada, con la sesión del mismo navegador. Para escribir no hay endpoint, así que se usa la interfaz, y si una vía falla se cae a la otra.
Descartado
- Raspar el HTML tanto para leer como para escribir
- 02
Campos identificados por su etiqueta visible
El motor de formularios lee el nombre accesible de cada control y lo empareja con un glosario bilingüe, así resiste los cambios de HTML y funciona con la cuenta en español o en inglés.
Descartado
- Selectores por clases CSS
- 03
Un solo motor para el perfil y las postulaciones
Editar una sección del perfil y completar una solicitud son el mismo problema, un formulario con campos. Una sola pieza resuelve ambos y una sección nueva queda soportada sin tocar código.
Descartado
- Un flujo escrito a mano para cada formulario
- 04
Simulación por defecto y confirmación explícita
Las acciones visibles para otras personas exigen confirmación, y las postulaciones corren primero en modo simulación para revisar las preguntas pendientes antes de enviar.
Descartado
- Ejecutar directamente lo que pida el asistente
Arquitectura
Clientes
- Asistente de IACualquier cliente MCP
- CLILos mismos comandos desde la terminal
Servidor
- Servidor MCPMás de 35 herramientas con confirmación
- Motor de formulariosEtiquetas visibles y glosario bilingüe
- Banco de respuestasRespuestas reutilizables
Navegador
- Navegador persistentePlaywright con la sesión del usuario
LinkedIn
- API internaLectura de perfil y ofertas
- Interfaz webEscritura en perfil y solicitudes
Cómo se mueven los datos
- Asistente de IAhaciaServidor MCPLlamadas a herramientas
- CLIhaciaServidor MCPMismo núcleo
- Servidor MCPhaciaNavegador persistenteLecturas y acciones
- Servidor MCPhaciaMotor de formulariosEscrituras
- Banco de respuestashaciaMotor de formulariosRespuestas guardadas
- Navegador persistentehaciaAPI internaLectura con la sesión del navegador
- Motor de formularioshaciaInterfaz webLlena y envía formularios
Resultados
- Un asistente puede actualizar el perfil completo, interactuar con otras personas y completar solicitudes con la sesión real del usuario.
- Unas herramientas de navegador directas permiten terminar a mano cualquier flujo que falle, sin editar el proyecto.
- El código es público, con documentación de instalación y diagnóstico.
Qué haría distinto
- Pondría límites diarios conservadores y pausas entre acciones desde el primer día, porque las plataformas detectan patrones de automatización aunque la sesión sea real.
- Agregaría pruebas con páginas reales guardadas para detectar los cambios de la interfaz antes de que fallen en uso.
Tecnologías
- TypeScript
- Node.js
- Model Context Protocol
- Playwright
- REST APIs