LinkedIn Evidence MCP
LinkedIn Evidence MCP
Una herramienta independiente, construida por la comunidad. No está afiliada a, respaldada por, ni patrocinada por LinkedIn Corporation o Microsoft. "LinkedIn" es una marca comercial de LinkedIn Corporation, utilizada aquí únicamente para describir el servicio con el que este software interoperá.
Un espacio de trabajo local-first de LinkedIn con un motor compartido y dos formas sincronizadas de usarlo:
el servidor MCP stdio, que es el motor de flujo de trabajo principal para evidencia, perfil, redacción, analítica y mantenimiento;
un panel de control loopback opcional, que es la superficie de soporte visual y revisión humana sobre las mismas herramientas y datos.
La aplicación mantiene su propia base de datos SQLite y almacén de artefactos en este ordenador. No contiene un LLM, un servicio alojado, un programador, scraping, automatización de navegador, reutilización de cookies ni participación automatizada.
Nada aquí se actualiza con un temporizador. Los datos de LinkedIn se obtienen solo cuando tú o un agente invocan una herramienta que lo hace. Esa es una decisión de producto sobre previsibilidad, no una restricción impuesta por los términos de LinkedIn — ver lectura del perfil de LinkedIn más reciente.
Para qué sirve
La aplicación convierte evidencia que tú controlas—CVs, documentos, repositorios, exportaciones de LinkedIn e historial importado manualmente—en:
un libro de contabilidad de afirmaciones verificado;
un perfil canónico respaldado por evidencia;
parches exactos de cambios de perfil para copiar/pegar manualmente;
borradores de publicaciones de LinkedIn con validación determinista;
pilares de contenido, oportunidades y un calendario de planificación;
aprobaciones de publicación y un historial de auditoría de solo añadido;
copias de seguridad locales, exportaciones y controles de retención.
Las funciones externas de LinkedIn son opcionales. Permanecen no disponibles hasta que la credencial correspondiente de la aplicación de desarrollador se almacene, se verifique contra LinkedIn y se habilite explícitamente donde sea necesario. El resto del producto funciona sin esas credenciales.
Related MCP server: linkedin-mcp
Requisitos
Windows 10 o posterior, Linux o macOS. Las tres plataformas son compatibles y las tres ejecutan la suite de pruebas completa en cada push.
Node.js 24 o posterior (la base de datos usa el
node:sqliteintegrado)npm
La importación de evidencia acepta la forma de ruta absoluta propia de cada plataforma: rutas con letra de unidad en Windows, rutas con raíz / en Linux y macOS. Las reglas difieren genuinamente — Windows también rechaza rutas UNC, flujos de datos alternativos y nombres de dispositivos reservados, mientras que las reglas POSIX rechazan bytes NUL incrustados y la raíz // ambigua — porque las formas peligrosas difieren, no porque se confíe más en una plataforma.
La bóveda de credenciales también difiere, y las diferencias merecen conocerse antes de confiar en ella. Las tres ofrecen la misma garantía práctica — un hogar de datos copiado a otra máquina o a otra cuenta no puede abrirse — pero no son igual de sólidas:
Plataforma | Cómo se sella la clave maestra | |
macOS | Una clave aleatoria en el llavero de inicio de sesión, custodiada por el SO tras una lista de control de acceso | la más sólida |
Windows | DPAPI, vinculada a tu cuenta de Windows | |
Linux | Derivada del id de la máquina anfitriona y de tu id de usuario, nunca escrita | la más débil — |
Ninguna de ellas defiende contra software que se ejecuta como tú, lo que SECURITY.md siempre ha enumerado como fuera de alcance. La clasificación importa solo si un atacante local está en tu modelo de amenazas; si es así, prefiere macOS o Windows, o no almacenes credenciales de LinkedIn en absoluto — todo lo demás funciona sin ellas.
El asistente de configuración interactivo es solo para Windows, porque es PowerShell. En
Linux y macOS configuras tu cliente MCP a mano, que es un bloque JSON
— ver configuración del servidor MCP. npm run setup:mcp
imprime exactamente ese bloque, con el hogar de datos correcto para tu plataforma, en lugar
de fallar.
El carril de lectura opcional de LinkedIn tiene un segundo límite separado: LinkedIn emite tokens de Portabilidad de Datos de Miembros solo a miembros ubicados en el Espacio Económico Europeo o Suiza. Todo lo que no toca LinkedIn funciona independientemente.
Inicio rápido
Desde la raíz del repositorio:
npm run setup:mcpEn Windows esto ejecuta el asistente interactivo descrito abajo. En Linux
y macOS el asistente no aplica — es PowerShell y escribe rutas de cliente de Windows —
así que npm run setup:mcp en su lugar imprime el único bloque JSON que añades
a tu cliente MCP a mano, con el hogar de datos correcto para tu plataforma, y el
resto de esta sección (los comandos de PowerShell) es solo para Windows. Ejemplos
por cliente están en configuración del servidor MCP; la
versión corta es Usar el MCP sin el panel de control
abajo, que es idéntica en todas las plataformas.
Ver primero qué haría (Windows):
powershell -NoProfile -ExecutionPolicy Bypass -File .\setup-mcp.ps1 -All -NonInteractive -DryRunWindows se niega a ejecutar un .ps1 sin firmar bajo su política de ejecución
Restricted predeterminada, así que un .\setup-mcp.ps1 desnudo falla antes de hacer
nada. -ExecutionPolicy Bypass se aplica a esa única invocación y no cambia nada en
la máquina — que es también exactamente lo que hace npm run setup:mcp. Lee el
script primero si prefieres no fiarte de eso; -DryRun imprime cada archivo
que tocaría sin abrir ninguno de ellos para escritura.
El asistente edita archivos de configuración que pertenecen a otras aplicaciones, así que
merece la pena saber cuáles antes de dejar que se ejecute. Dependiendo de los clientes
que selecciones puede escribir en ~/.codex/config.toml, ~/.claude.json,
%APPDATA%\Claude\claude_desktop_config.json, %APPDATA%\Code\User\mcp.json,
~/.copilot/mcp-config.json, ~/.cursor/mcp.json y
~/.gemini/config/mcp_config.json. A menos que pases -NoPersistUserEnvironment
también guarda LINKEDIN_MCP_HOME como una variable de entorno de ámbito de usuario.
Cada archivo que toca se respalda primero con una copia con marca de tiempo, solo se
reemplaza la entrada linkedin, un archivo que no es JSON estricto se rechaza en lugar
de reescribirse, y un fallo restaura el original.
El asistente interactivo comprueba Node.js, instala dependencias cuando es necesario, compila el servidor MCP, pregunta qué clientes de IA configurar y apunta cada selección a un hogar de datos compartido. Admite Codex, Claude Code, Claude Desktop, VS Code/Copilot Chat, GitHub Copilot CLI, Cursor y Google Antigravity. Las configuraciones JSON existentes se fusionan y respaldan; solo se reemplaza la entrada MCP linkedin.
Reinicia los clientes configurados, luego elige una o ambas superficies:
# MCP server: normally started automatically by your AI client
npm run mcp:start
# Optional human review dashboard
npm run dashboardmcp:start habla JSON-RPC sobre stdin/stdout y por lo tanto parece que espera cuando se ejecuta en un terminal ordinario. Eso es esperado. Configura un cliente MCP para lanzarlo en su lugar; ver configuración del servidor MCP.
El panel de control imprime una URL de un solo uso para http://127.0.0.1:4780. Ver uso del panel de control.
Para configuración repetible o desatendida:
powershell -NoProfile -ExecutionPolicy Bypass -File .\setup-mcp.ps1 -Clients Codex,Cursor,VSCode -NonInteractive
powershell -NoProfile -ExecutionPolicy Bypass -File .\setup-mcp.ps1 -All -NonInteractiveUsa -DataHome "C:\absolute\path" para elegir un hogar compartido diferente. El asistente guarda esa ruta absoluta como el LINKEDIN_MCP_HOME del usuario actual; abre un nuevo terminal antes de iniciar el panel de control para que herede un valor personalizado recién guardado. Pasa -NoPersistUserEnvironment si solo quieres que se cambien las entradas de cliente seleccionadas. El asistente nunca pide ni escribe credenciales de LinkedIn.
Estado compartido entre MCP y panel de control
El panel de control y cada proceso MCP configurado abren el mismo hogar de aplicación local. Puedes trabajar en el panel de control, cerrarlo, continuar a través de un agente de IA y volver más tarde sin importar o reconciliar nada manualmente.
Todas las rutas abajo están bajo el hogar de datos (ver Ubicación de datos).
Estado compartido | Dónde vive |
Evidencia, afirmaciones, estado del perfil, decisiones, borradores, revisiones, aprobaciones, historial de publicación, eventos de auditoría, ajustes y progreso |
|
Copias de trabajo importadas y artefactos generados |
|
Credenciales de LinkedIn cifradas | Texto cifrado en SQLite más la clave maestra sellada en |
Copias de seguridad |
|
El modo WAL de SQLite y los reintentos de escritura limitados permiten que el panel de control y los clientes MCP se ejecuten al mismo tiempo. El panel de control refresca la pantalla actual cuando recupera el foco y periódicamente mientras está visible, así que los cambios del lado del agente aparecen sin reiniciarlo.
Esto es sincronización local en una sola cuenta de usuario, no sincronización en la nube o entre máquinas. Los secretos siguen siendo utilizables por ambos procesos pero nunca se copian en la configuración del cliente de IA, se devuelven a un modelo, se exportan, se registran o se incluyen en copias de seguridad.
Usar el MCP sin el panel de control
El panel de control y el servidor MCP son procesos separados. No necesitas iniciar el panel de control antes de conectar Codex, Claude, Copilot, Cursor, Antigravity, VS Code u otro host MCP stdio.
Después de compilar, configura el cliente para lanzar el punto de entrada compilado con una
ruta absoluta (barras invertidas en Windows, / en Linux y macOS):
node <absolute-path-to-repo>/linkedin-mcp-server/dist/index.jsPara añadir e importar la primera fuente de evidencia desde un terminal operado por humanos — la ruta es un ejemplo, usa tu propia ruta absoluta en la forma que tu plataforma acepta:
npm run evidence:add -- "C:\path\to\cv.pdf" document personal_doc "Current CV"
# Linux / macOS: npm run evidence:add -- "/home/you/cv.pdf" document personal_doc "Current CV"Ese comando registra, habilita e importa explícitamente la fuente sin abrir el panel de control. Los tipos de fuente son repo, document, folder, linkedin_export y manual; los niveles de confianza son personal_doc, own_repo y local_clone_reference.
Puedes entonces pedir al agente conectado que:
Use the LinkedIn MCP capability-status tool, then list my evidence sources and candidate claims.El MCP impulsa el flujo de trabajo normal. El panel de control incluye pantallas de revisión especializadas más Sistema → Todas las herramientas MCP, que expone el mismo registro de herramientas validado—no hay una copia de la lógica de negocio solo para el panel de control. La entrada de secretos es la única operación intencionalmente no disponible a través del chat. Otras operaciones consecuentes requieren una confirmación explícita vinculada a la acción:
Acción | Opción sin panel de control | |
Registrar, habilitar e importar evidencia | MCP ( | |
Cambiar la configuración no secreta | Herramienta MCP | |
Almacenar tokens de acceso de LinkedIn |
| |
Conceder, denegar o modificar una aprobación de publicación | Indica al agente conectado tu decisión y confirma su comando vinculado para | |
Habilitar la publicación real |
| |
Publicar en la cuenta |
| |
Eliminar solo los datos de portabilidad de LinkedIn |
| |
Purgar permanentemente todos los datos locales | Un |
Ejecuta npm run control sin argumentos para ver un menú interactivo. La CLI es también la superficie de entrada de secretos sin panel de control; los tokens de acceso aparecen enmascarados y nunca entran en las cargas útiles de MCP.
Controles de funciones compartidas
Ocho grupos de funciones se guardan en la base de datos SQLite compartida y son aplicados tanto por los manejadores MCP como por las rutas del panel de control: evidence, profile, content, publication_workflow, analytics, linkedin_sync, maintenance, configuration y live_publishing. Los ocho primeros están habilitados por defecto. Solo live_publishing está deshabilitado por defecto.
Consulta las descripciones y los valores actuales con linkedin_feature_control, Sistema → Funciones, o:
npm run control -- feature list
npm run control -- feature disable analytics --confirm
npm run control -- feature enable analytics --confirmLa política de funciones es independiente de la preparación de las credenciales o de la API de LinkedIn. Por tanto, habilitar live_publishing sigue requiriendo un carril de escritura verificado, y cada publicación real sigue requiriendo una aprobación concedida y vinculada a la revisión, además del comando de publicación exacto.
Flujo de trabajo de evidencia y decisiones
El flujo previsto es MCP-first:
Registra una ruta de evidencia con MCP y confirma explícitamente
ENABLE <source_id>a través del agente, el panel de control o la CLI de control.Deja que el agente la importe, verifique la integridad de los bytes almacenados, inspeccione los artefactos extraídos y proponga afirmaciones acotadas con citas.
Revisa las afirmaciones exactas. Las afirmaciones no conflictivas se verifican solo después de una confirmación humana explícita.
Escala conflictos, redacción ambigua y exageraciones para revisión humana. Resuélvelos mediante la conversación con MCP o el panel de control; ambos hacen servir los mismos servicios de afirmaciones y conflictos.
Las afirmaciones constituyen un historial inmutable. «Modify» crea una redacción corregida como una afirmación nueva y, después, rechaza o fusiona la anterior. De este modo, las decisiones previas siguen siendo auditables en lugar de reescribir la evidencia en silencio.
Ubicación de los datos
La ubicación por defecto es, en cada plataforma, la que corresponde a su propia convención:
Plataforma | Ubicación predeterminada |
Windows |
|
macOS |
|
Linux |
|
Define LINKEDIN_MCP_HOME como un directorio absoluto para usar otra ubicación o un corpus de pruebas aislado; anula el valor predeterminada en todas las plataformas. Las rutas relativas se rechazan porque, de otro modo, distintos directorios de trabajo del cliente podrían generar bases de datos separadas. En Windows, una ruta relativa a la unidad como \linkedin-data se rechaza por el mismo motivo, ya que se resuelve contra la unidad en la que se está ejecutando el proceso. El asistente de configuración define el mismo valor absoluto en todos los entornos.
No sitúes la ubicación de trabajo en OneDrive, Dropbox, Google Drive, iCloud Drive ni en ninguna otra carpeta de sincronización. SQLite usa un database activo formato WAL que no debe copiarse mientras está abierto. Usa en su lugar el comando propio de respaldo integrado.
Mapa del repositorio
Ruta | Responsabilidad |
Motor principal: sinopsis de datos, recursos y terminales | |
Soporte visual de loopback opcional, revisión humana y ventana exacta de la herramienta MCP | |
| Evidencia, perfil, borradores, aprobaciones, publicación, auditoría y retención |
| Driver SQLite, migraciones, control de concurrencia optimista y almacenamiento de artefactos |
| ZIP, CSV, PDF, DOCX con rutas seguras, escaneo de repositorios y redacción de datos sensibles |
| Adaptadores de LinkedIn OIDC, DMA y publicación que fallan en modo cerrado |
| JSON canónico, identificadores y contratos de error |
| Comandos de incorporación, mantenimiento y evaluación operados manualmente |
Modelo de seguridad
Solo las afirmaciones verificadas pueden respaldar textos de perfil público o borradores.
El contenido importado se trata siempre como datos no confiables, nunca como instrucciones.
MCP solo puede conceder, denegar o modificar una solicitud de publicación después de que el usuario confirme explícitamente el comando de aprobación exacto; las concesiones quedan vinculadas a hash de revisión.
La aprobación está vinculada a una revisión exacta de borrador y se consume antes de publicar.
Un resultado de red incierto pasa a
ambiguous; no se reintenta nunca automáticamente.El registro de auditoría está encadenado por hash; una cadena rota bloquea aprobaciones y publicaciones.
Las importaciones copian el contenido al almacén de artefactos y nunca modifican los originales.
Los secretos se excluyen de las cargas útiles de MCP, los logs, las exportaciones y las copias de seguridad.
Desarrollo y verificación
npm ci
npm run typecheck
npm run build
npm test
npm run inspect:list
npm run test:visualCompila antes de ejecutar las pruebas. La suite de comprobación de protocolo ejecuta el servidor stdio compilado, por lo que npm test necesita que exista linkedin-mcp-server/dist/index.js. Basta con seguir los pasos en el orden anterior; no hay una configuración adicional.
inspect:list inicia el servidor stdio compilado a través de MCP Inspector y solicita su catálogo de herramientas. Las pruebas visuales requieren un navegador de Playwright instalado.
Para la configuración opcional de una aplicación de LinkedIn para desarrolladores, consulte docs/linkedin-app-setup.md.
Documentación
Documento | Qué cubre |
Dos superficies, un único motor; las costuras que no resultan evidentes | |
Plataformas compatibles, entorno de ejecución, clientes MCP y brecha de verificación conocida | |
Lo que no hace, y qué límites son deliberados | |
Qué se almacena, qué sale de la máquina y cómo se elimina | |
Activos, límites de confianza y dónde termina la protección | |
Versionado, actualización y por qué no se admiten versiones anteriores | |
Creación de las dos aplicaciones de desarrollador de LinkedIn | |
Sistema de diseño del panel de control | |
Lista de comprobación manual de accesibilidad y viewport | |
Cómo informar de una vulnerabilidad; objetivos fuera de alcance | |
Cómo obtener un build verde; las reglas que no son negociables | |
Dónde preguntar y qué queda fuera de alcance |
Licencia
MIT — consulta LICENSE. Las licencias de dependencias de terceros se enumeran en THIRD-PARTY-NOTICES.md; el texto sobre marcas comerciales y afiliación está en NOTICE.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceLocal-first MCP server for research on AI-assisted browsing of a user-owned professional-network account (e.g., LinkedIn), providing read-focused tools such as profile, company, search, and feed reads.MIT
- AlicenseNot gradedqualityCmaintenanceA personal-use remote MCP server that lets you post to LinkedIn, queue/schedule drafts, and pull your own post analytics from Claude.24MIT
- AlicenseAqualityCmaintenanceA local-first MCP server for auditing, drafting, and planning updates to your personal LinkedIn profile safely, without automation or scraping.10MIT
- AlicenseAqualityBmaintenanceLocal-first MCP server using LinkedIn's official OAuth and REST APIs to connect a member account, read profile, and publish text posts.4177MIT
Related MCP Connectors
Managed LinkedIn MCP server for AI agents: search, connect, message and enrich on accounts you own.
Private-by-default, local-first memory/context/task orchestrator for MCP apps and agents.
Search, label and export your LinkedIn saved posts, then draft, schedule and publish from them.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/victoryotzev/linkedin-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server