Skip to main content
Glama

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:sqlite integrado)

  • 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 — /etc/machine-id es legible por cualquier usuario, así que cualquier proceso local puede derivar la misma clave

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:mcp

En 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 -DryRun

Windows 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 dashboard

mcp: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 -NonInteractive

Usa -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

data/linkedin.sqlite3

Copias de trabajo importadas y artefactos generados

artifacts/

Credenciales de LinkedIn cifradas

Texto cifrado en SQLite más la clave maestra sellada en secrets/ — DPAPI en Windows, sellada con llavero en macOS, derivada de la máquina en Linux

Copias de seguridad

backups/

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.js

Para 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 (ENABLE <source_id> es necesario para habilitar), npm run evidence:add -- ..., o el panel de control/CLI

Cambiar la configuración no secreta

Herramienta MCP linkedin_settings_set

Almacenar tokens de acceso de LinkedIn

npm run control -- lane configure read write --client-id <id> (entrada enmascarada)

Conceder, denegar o modificar una aprobación de publicación

Indica al agente conectado tu decisión y confirma su comando vinculado para linkedin_approval_decide, o usa el panel de control o la CLI de control

Habilitar la publicación real

linkedin_feature_control, panel de control → Funciones, o npm run control -- feature enable live_publishing --confirm, tras verificar el carril de escritura

Publicar en la cuenta

linkedin_publish_execute con PUBLISH <approval_id> después de la concesión; en esta versión solo se permiten posts de texto

Eliminar solo los datos de portabilidad de LinkedIn

linkedin_purge_run en modo purge_dma, o npm run control -- purge dma --confirm "DELETE LINKEDIN PORTABILITY DATA"; prune_dma / --before <ISO> descarta el historial más antiguo y conserva el perfil actual

Purgar permanentemente todos los datos locales

Un linkedin_purge_run confirmado, el panel de control, o npm run control -- purge all --confirm "DELETE ALL LOCAL DATA"

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 --confirm

La 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:

  1. 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.

  2. Deja que el agente la importe, verifique la integridad de los bytes almacenados, inspeccione los artefactos extraídos y proponga afirmaciones acotadas con citas.

  3. Revisa las afirmaciones exactas. Las afirmaciones no conflictivas se verifican solo después de una confirmación humana explícita.

  4. 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

%LOCALAPPDATA%\linkedin-mcp

macOS

~/Library/Application Support/linkedin-mcp (o $XDG_DATA_HOME/linkedin-mcp si está definida)

Linux

$XDG_DATA_HOME/linkedin-mcp o, si no, ~/.local/share/linkedin-mcp

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

linkedin-mcp-server/

Motor principal: sinopsis de datos, recursos y terminales

linkedin-dashboard/

Soporte visual de loopback opcional, revisión humana y ventana exacta de la herramienta MCP

packages/domain/

Evidencia, perfil, borradores, aprobaciones, publicación, auditoría y retención

packages/db/

Driver SQLite, migraciones, control de concurrencia optimista y almacenamiento de artefactos

packages/importers/

ZIP, CSV, PDF, DOCX con rutas seguras, escaneo de repositorios y redacción de datos sensibles

packages/linkedin/

Adaptadores de LinkedIn OIDC, DMA y publicación que fallan en modo cerrado

packages/shared/

JSON canónico, identificadores y contratos de error

scripts/

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:visual

Compila 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

docs/architecture.md

Dos superficies, un único motor; las costuras que no resultan evidentes

docs/compatibility.md

Plataformas compatibles, entorno de ejecución, clientes MCP y brecha de verificación conocida

docs/known-limitations.md

Lo que no hace, y qué límites son deliberados

docs/privacy-and-local-data.md

Qué se almacena, qué sale de la máquina y cómo se elimina

docs/threat-model.md

Activos, límites de confianza y dónde termina la protección

docs/releases.md

Versionado, actualización y por qué no se admiten versiones anteriores

docs/linkedin-app-setup.md

Creación de las dos aplicaciones de desarrollador de LinkedIn

docs/dashboard-design.md

Sistema de diseño del panel de control

docs/dashboard-manual-checks.md

Lista de comprobación manual de accesibilidad y viewport

SECURITY.md

Cómo informar de una vulnerabilidad; objetivos fuera de alcance

CONTRIBUTING.md

Cómo obtener un build verde; las reglas que no son negociables

SUPPORT.md

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.

A
license - permissive license
Not graded
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 Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Local-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
  • A
    license
    Not graded
    quality
    C
    maintenance
    A personal-use remote MCP server that lets you post to LinkedIn, queue/schedule drafts, and pull your own post analytics from Claude.
    24
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Local-first MCP server using LinkedIn's official OAuth and REST APIs to connect a member account, read profile, and publish text posts.
    4
    177
    MIT

View all related MCP servers

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.

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/victoryotzev/linkedin-mcp'

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