Skip to main content
Glama

LinkedIn Evidence MCP

Независимый инструмент, созданный сообществом. Не аффилирован с LinkedIn Corporation или Microsoft, не одобрен и не спонсируется ими. «LinkedIn» — товарный знак LinkedIn Corporation, используемый здесь только для описания сервиса, с которым взаимодействует это программное обеспечение.

Локальное рабочее пространство LinkedIn с одним общим движком и двумя синхронизированными способами его использования:

  • stdio MCP-сервер — основной рабочий движок для доказательств, профиля, черновиков, аналитики и обслуживания;

  • опциональная loopback-панель — визуальная поддержка и поверхность для проверки человеком поверх тех же инструментов и данных.

Приложение хранит собственную базу данных SQLite и хранилище артефактов на этом компьютере. Оно не содержит LLM, размещённого сервиса, планировщика, скрапинга, автоматизации браузера, повторного использования cookie или автоматизированного взаимодействия.

Ничто здесь не обновляется по таймеру. Данные LinkedIn извлекаются только тогда, когда вы или агент вызываете инструмент, который это делает. Это продуктовое решение о предсказуемости, а не ограничение, наложенное условиями LinkedIn — см. чтение последнего профиля LinkedIn.

Для чего это предназначено

Приложение превращает доказательства, которыми вы управляете — резюме, документы, репозитории, экспорт LinkedIn и вручную импортированную историю — в:

  • проверяемый реестр утверждений;

  • канонический профиль, подкреплённый доказательствами;

  • точные патчи изменений профиля для ручного копирования/вставки;

  • черновики постов LinkedIn с детерминированной валидацией;

  • контентные столпы, возможности и календарь планирования;

  • одобрения публикаций и журнал аудита с защитой от перезаписи;

  • локальные резервные копии, экспорт и контроль хранения.

Внешние функции LinkedIn опциональны. Они остаются недоступными, пока соответствующие учётные данные приложения-разработчика не сохранены, не проверены через LinkedIn и явно не включены там, где это требуется. Остальная часть продукта работает без этих учётных данных.

Related MCP server: linkedin-mcp

Требования

  • Windows 10 или новее, Linux или macOS. Все три поддерживаются, и все три запускают полный набор тестов при каждом push.

  • Node.js 24 или новее (база данных использует встроенный node:sqlite)

  • npm

Импорт доказательств принимает форму абсолютных путей, характерную для каждой платформы: пути с буквой диска в Windows, пути с корнем / в Linux и macOS. Правила действительно различаются — Windows также отклоняет UNC-пути, альтернативные потоки данных и зарезервированные имена устройств, тогда как правила POSIX отклоняют встроенные NUL-байты и неоднозначный корень // — потому что опасные формы различаются, а не потому что одной платформе доверяют больше.

Хранилище учётных данных тоже различается, и эти различия стоит знать, прежде чем полагаться на него. Все три дают одинаковую практическую гарантию — домашний каталог данных, скопированный на другую машину или в другую учётную запись, не может быть открыт — но они не одинаково сильны:

Платформа

Как запечатан главный ключ

macOS

Случайный ключ в связке ключей входа, удерживаемый ОС за списком контроля доступа

самый сильный

Windows

DPAPI, привязанный к вашей учётной записи Windows

Linux

Производный от идентификатора хост-машины и вашего идентификатора пользователя, никогда не записывается

самый слабый — /etc/machine-id доступен для чтения всем, поэтому любой локальный процесс может вывести тот же ключ

Ни один из них не защищает от программного обеспечения, работающего от вашего имени, что SECURITY.md всегда указывал как выходящее за рамки. Ранжирование имеет значение только в том случае, если локальный злоумышленник входит в вашу модель угроз; если да, предпочитайте macOS или Windows, либо вообще не храните учётные данные LinkedIn — всё остальное работает без них.

Интерактивный помощник по настройке доступен только в Windows, потому что это PowerShell. В Linux и macOS вы настраиваете MCP-клиент вручную, что представляет собой один JSON-блок — см. настройка MCP-сервера. npm run setup:mcp печатает именно этот блок с правильным домашним каталогом данных для вашей платформы, а не завершается ошибкой.

Опциональный канал чтения LinkedIn имеет второй, отдельный предел: LinkedIn выдаёт токены Member Data Portability только участникам, находящимся в Европейской экономической зоне или Швейцарии. Всё, что не касается LinkedIn, работает независимо от этого.

Быстрый старт

Из корня репозитория:

npm run setup:mcp

В Windows это запускает интерактивный помощник, описанный ниже. В Linux и macOS помощник не применяется — это PowerShell, и он записывает пути клиентов Windows — поэтому npm run setup:mcp вместо этого печатает один JSON-блок, который вы добавляете в свой MCP-клиент вручную, с правильным домашним каталогом данных для вашей платформы, а остальная часть этого раздела (команды PowerShell) предназначена только для Windows. Примеры для каждого клиента приведены в настройке MCP-сервера; краткая версия — Использование MCP без панели ниже, которая идентична на всех платформах.

Сначала посмотрите, что он сделает (Windows):

powershell -NoProfile -ExecutionPolicy Bypass -File .\setup-mcp.ps1 -All -NonInteractive -DryRun

Windows отказывается запускать неподписанный .ps1 при политике выполнения Restricted по умолчанию, поэтому голый .\setup-mcp.ps1 завершается ошибкой, ничего не сделав. -ExecutionPolicy Bypass применяется только к этому одному вызову и ничего не меняет на машине — что также ровно то, что делает npm run setup:mcp. Прочитайте скрипт сначала, если не хотите принимать это на веру; -DryRun печатает каждый файл, которого он коснётся, не открывая ни один из них для записи.

Помощник редактирует файлы конфигурации, принадлежащие другим приложениям, поэтому стоит знать, какие именно, прежде чем позволить ему запуститься. В зависимости от выбранных клиентов он может записывать в ~/.codex/config.toml, ~/.claude.json, %APPDATA%\Claude\claude_desktop_config.json, %APPDATA%\Code\User\mcp.json, ~/.copilot/mcp-config.json, ~/.cursor/mcp.json и ~/.gemini/config/mcp_config.json. Если вы не передадите -NoPersistUserEnvironment, он также сохраняет LINKEDIN_MCP_HOME как переменную окружения на уровне пользователя.

Каждый файл, которого он касается, сначала резервируется копией с меткой времени, заменяется только запись linkedin, файл, не являющийся строгим JSON, отклоняется, а не переписывается, а при сбое восстанавливается оригинал.

Интерактивный помощник проверяет Node.js, устанавливает зависимости при необходимости, собирает MCP-сервер, спрашивает, какие AI-клиенты настроить, и указывает каждый выбор на один общий домашний каталог данных. Он поддерживает Codex, Claude Code, Claude Desktop, VS Code/Copilot Chat, GitHub Copilot CLI, Cursor и Google Antigravity. Существующие JSON-конфигурации объединяются и резервируются; заменяется только запись MCP linkedin.

Перезапустите настроенные клиенты, затем выберите одну или обе поверхности:

# MCP server: normally started automatically by your AI client
npm run mcp:start

# Optional human review dashboard
npm run dashboard

mcp:start общается через JSON-RPC по stdin/stdout и поэтому выглядит ожидающим при запуске в обычном терминале. Это ожидаемо. Настройте MCP-клиент на его запуск; см. настройку MCP-сервера.

Панель печатает одноразовый URL для http://127.0.0.1:4780. См. использование панели.

Для повторяемой или автоматической настройки:

powershell -NoProfile -ExecutionPolicy Bypass -File .\setup-mcp.ps1 -Clients Codex,Cursor,VSCode -NonInteractive
powershell -NoProfile -ExecutionPolicy Bypass -File .\setup-mcp.ps1 -All -NonInteractive

Используйте -DataHome "C:\absolute\path", чтобы выбрать другой общий домашний каталог. Помощник сохраняет этот абсолютный путь как LINKEDIN_MCP_HOME текущего пользователя; откройте новый терминал перед запуском панели, чтобы она унаследовала только что сохранённое пользовательское значение. Передайте -NoPersistUserEnvironment, если вы хотите изменить только записи выбранных клиентов. Помощник никогда не запрашивает и не записывает учётные данные LinkedIn.

Общее состояние между MCP и панелью

Панель и каждый настроенный MCP-процесс открывают один и тот же локальный домашний каталог приложения. Вы можете работать в панели, закрыть её, продолжить через AI-агента и вернуться позже без ручного импорта или сверки чего-либо.

Все пути ниже находятся в домашнем каталоге данных (см. Расположение данных).

Общее состояние

Где оно хранится

Доказательства, утверждения, состояние профиля, решения, черновики, ревизии, одобрения, история публикаций, события аудита, настройки и прогресс

data/linkedin.sqlite3

Импортированные рабочие копии и сгенерированные артефакты

artifacts/

Зашифрованные учётные данные LinkedIn

Шифротекст в SQLite плюс запечатанный главный ключ в secrets/ — DPAPI в Windows, запечатанный связкой ключей в macOS, производный от машины в Linux

Резервные копии

backups/

Режим WAL в SQLite и ограниченные повторные попытки записи позволяют панели и MCP-клиентам работать одновременно. Панель обновляет текущий экран при возврате фокуса и периодически, пока видима, поэтому изменения на стороне агента появляются без её перезапуска.

Это локальная синхронизация в рамках одной учётной записи пользователя, а не облачная или межмашинная синхронизация. Секреты остаются доступными обоим процессам, но никогда не копируются в конфигурацию AI-клиента, не возвращаются модели, не экспортируются, не регистрируются и не включаются в резервные копии.

Использование MCP без панели

Панель и MCP-сервер — это отдельные процессы. Вам не нужно запускать панель перед подключением Codex, Claude, Copilot, Cursor, Antigravity, VS Code или другого stdio MCP-хоста.

После сборки настройте клиент на запуск скомпилированной точки входа с абсолютным путём (обратные слэши в Windows, / в Linux и macOS):

node <absolute-path-to-repo>/linkedin-mcp-server/dist/index.js

Чтобы добавить и импортировать первый источник доказательств из терминала, управляемого человеком — путь является примером, используйте свой собственный абсолютный путь в форме, которую принимает ваша платформа:

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"

Эта команда явно регистрирует, включает и импортирует источник без открытия панели. Виды источников: repo, document, folder, linkedin_export и manual; уровни доверия: personal_doc, own_repo и local_clone_reference.

Затем вы можете попросить подключённого агента:

Use the LinkedIn MCP capability-status tool, then list my evidence sources and candidate claims.

MCP управляет обычным рабочим процессом. Панель включает специально созданные экраны проверки, а также System → All MCP tools, который предоставляет точно такой же проверенный реестр инструментов — не существует копии бизнес-логики только для панели. Ввод секретов — единственная операция, намеренно недоступная через чат. Другие важные операции требуют явного подтверждения, привязанного к действию:

Действие

Вариант без дашборда

Регистрировать, включать и импортировать доказательства

MCP (ENABLE <source_id> требуется для включения), npm run evidence:add -- ... или дашборд/CLI

Изменять несекретные настройки

MCP-инструмент linkedin_settings_set

Хранить токены доступа LinkedIn

`npm run control -- lane configure read ` write --client-id ` (ввод маскируется)

Выдавать, отклонять или пересматривать разрешение на публикацию

Сообщите подключённому агенту ваше решение и подтвердите связанную с ним команду для linkedin_approval_decide, либо используйте дашборд/control CLI

Включить реальную публикацию

linkedin_feature_control, раздел «Функции» дашборда или npm run control -- feature enable live_publishing --confirm, после проверки канала записи

Опубликовать в аккаунте

linkedin_publish_execute с командой PUBLISH <approval_id> после выдачи разрешения; в этой версии — только текстовые посты

Удалять только данные переносимости LinkedIn

linkedin_purge_run в режиме purge_dma, или npm run control -- purge dma --confirm "DELETE LINKEDIN PORTABILITY DATA"; prune_dma / --before <ISO> удаляет более старую историю и сохраняет текущий профиль

Полностью удалить все локальные данные

Подтверждённый linkedin_purge_run, дашборд или npm run control -- purge all --confirm "DELETE ALL LOCAL DATA"

Запуск npm run control без аргументов открывает интерактивное меню. CLI также является поверхностью для ввода секретов без дашборда; токены доступа маскируются и никогда не попадают в данные MCP.

Общие элементы управления функциями

Девять групп функций хранятся в общей базе данных SQLite и применяются и MCP-обработчиками, и маршрутами дашборда: evidence, profile, content, publication_workflow, analytics, linkedin_sync, maintenance, configuration и live_publishing. Первые восемь по умолчанию включены. Только live_publishing по умолчанию выключена.

Просмотреть описания и текущие значения можно через linkedin_feature_control, Система → Функции или:

npm run control -- feature list
npm run control -- feature disable analytics --confirm
npm run control -- feature enable analytics --confirm

Политика функций отделена от готовности учётных данных и API LinkedIn. Поэтому включение live_publishing по-прежнему требует проверенного канала записи, а каждая реальная публикация — выданного разрешения, привязанного к конкретной ревизии, и точной команды публикации.

Порядок работы с доказательствами и решения

Предполагаемый порядок работы — в первую очередь MCP:

  1. Зарегистрируйте источник evidence в MCP, затем явно подтвердите ENABLE <source_id> через агента, дашборд или control CLI.

  2. Позвольте агенту импортировать его, проверить целостность сохранённых байтов, извлечь артефакты и предложить узкие утверждения с цитатами.

  3. Проверьте точные формулировки. Непротиеположные утверждения становятся подтверждёнными только после явного подтверждения человеком.

  4. Конфликты, неоднозначные формулировки и преувеличения выносите на рассмотрение человека. Решайте их через диалог с MCP или через дашборд — оба варианта вызывают одни и те же сервисы утверждений и конфликтов.

Утверждения — неизменяемая история. «Изменить» создаёт исправленную формулировку как новое утверждение, после чего старое утверждение отклоняется или объединяется. Так прежние решения остаются доступными для аудита, а не тихо перезаписываются.

Расположение данных

По умолчанию домашний каталог определяется соглашениями каждой платформы:

Платформа

Домашний каталог

Windows

%LOCALAPPDATA%\linkedin-mcp

macOS

~/Library/Application Support/linkedin-mcp (или $XDG_DATA_HOME/linkedin-mcp, если задан)

Linux

$XDG_DATA_HOME/linkedin-mcp, иначе ~/.local/share/linkedin-mcp

Укажите LINKEDIN_MCP_HOME абсолятный каталог, чтобы использовать другой home или изолированный тестовый корпус; эта переменная переопределяет значение по умолчанию на всех платформах. Относительные пути отклоняются: иначе в разных рабочих каталогах клиентов могли бы создаваться отдельные базы данных — и на Windows путь относительно пода диска, например \linkedin-data, отклоняется по той же причине, поскольку он разрешается относительно диска, на котором работает. Мастер настройки задаёт одним и то же абсолютное значение везде.

Не помещайте рабочий home в OneDrive, Dropbox, Google Drive, iCloud Drive или другую синхронизируемую папку. SQLite использует «живую» WAL-базу, которую нельзя копировать в открытом состоянии. Вместо этого используйте вст секторнtocommand резервного копирования.

Карта репозитория

Путь

Ответственность

linkedin-mcp-server/

Основной движок: 44 инструмента MCP, 5 ресурсов, 5 рабочих промптов, stdio-транспорт

linkedin-dashboard/

Необязательная визуальная поддержка через подоси двухконтурной сети, ручная проверка и консоль точных MCP-инструментов

packages/domain/

Доказательства, профиль, черновики, разрешения, публикация, аудит, политика хранения

packages/db/

SQLite-драйвер, миграции, оптимистическая конкурентность, хранение артефактов

packages/importers/

ZIP, CSV, PDF, DOCX с безопасной обработкой путей, сканирование репозиториев, редактирование данных при выгрузке

packages/linkedin/

Адаптеры LinkedIn OIDC, DMA и публикаций с закрытым состоянием при сбое

packages/shared/

Канонический JSON, идентификаторы и контракты ошибок

scripts/

Команды онбординга, обслуживания и проверки, выполняемые человеком

Модель безопасности

  • Только подтверждённые утверждения могут лежать в основе публичного текста профиля или черновиков.

  • Импортированный контент всегда рассматривается как ненадёжные данные, никогда — как инструкции.

  • MCP может выдать, отклонить или пересмотреть запрос публикации только после того, как пользователь явно подтвердит точную команду одобрения; выданные одобрения привязаны к думлю ревизии.

  • Разрешение привязано к одной конкретной ревизии черновика и списывается при публикации.

  • Неопределённый сетевой результат помечается как ambiguous; он никогда не повторяется автоматически.

  • Журнал аудита построен по хэш-цепочке; разорванная цепочка блокирует разрешения и публикации.

  • Импортируемые материалы копируются в хранилище артефактов и никогда ни изменяются исходники.

  • Секреты исключаются из MCP-данных, журналов, отвечают экспорту и резервных копий.

Разработка и проверка

npm ci
npm run typecheck
npm run build
npm test
npm run inspect:list
npm run test:visual

Сначала сборка, затем тест. Набор проверок протокольной целостности запускает скомпилированный stdio-сервер, поэтому для npm test требуется наличие linkedin-mcp-server/dist/index.js index`. Выполните приведённые выше шаги по порядку — отдельная настройка не нужна.

inspect:list запускает скомпилированный stdio-сервер через MCP Inspector и запрашивает его каталог инструментов. Визуальные тесты требуют установки браузеров Playwright.

По опциональной настройке приложения LinkedIn для разработчика см. docs/linkedin-app-setup.md.

Документация

Документ

Что описывает

docs/architecture.md

Две поверхности, один движок; швы, которые неочевидны

docs/compatibility.md

Поддерживаемые платформы, среда выполнения, MCP-клиенты и известный пробел в верификации

docs/known-limitations.md

Что эта система не делает и какие ограничения выбраны напланизационно

docs/privacy-and-local-data.md

Что хранится, что покидает компьютер и как это удалить

docs/threat-model.md

Активы, границы доверия и где защита заканчивается

docs/releases.md

Управление версиями, обновление и почему откататься нельзя

docs/linkedin-app-setup.md

Создание двух LinkedIn-приложений разработчика

docs/known-limitations.md

Чего эта система не делает и какие ограничения намеренны

docs/threat-model.md

Активы, границы доверия и где защита заканчивается

docs/dashboard-design.md

Дизайн-система дашборда

docs/dashboard-manual-checks.md

Ручной чеклист доступности и визуальных размеров

SECURITY.md

Как сообщить об уязกวา; некортуальные цели

CONTRIBUTING.md

Как получить зелёнуюсяборку; правила, которые не обсуждаются

SUPPORT.md

Куда обращаться и что вне рамок поддержки

Лицензия

MIT — см. LICENSE. Здесь вставать лицензии сторонних зависимостей указаны в THIRD-PARTY-NOTICES.md; сведения о товарных знаках и ссылках между агенциями находятся в 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