Skip to main content
Glama
TSS99
by TSS99

LinkedIn MCP

MCP-сервер, который позволяет ИИ-ассистенту искать вакансии на LinkedIn и читать профили LinkedIn, управляя реальным окном Chrome через протокол DevTools.

Он только для чтения. Здесь нет инструментов для подключения, сообщений, одобрений, публикаций или откликов — не как настройка, а потому что код для этого не существует. Это осознанная граница: LinkedIn относится к автоматическому написанию гораздо строже, чем к автоматическому чтению, и смешение этих двух вещей приводит к ограничению аккаунтов.

Инструменты

Инструмент

Что возвращает

linkedin_search_jobs

Список вакансий с названием, компанией, местоположением, типом рабочего места, зарплатой (если указана), давностью публикации и job_id. Фильтры: местоположение, давность публикации, уровень опыта, тип занятости, тип рабочего места, Easy Apply, порядок сортировки.

linkedin_get_job

Одна вакансия полностью — компания, местоположение, инсайты LinkedIn о вакансии и полное описание с развёрнутым блоком «See more».

linkedin_get_profile

Имя, заголовок, местоположение, текст «О себе», история опыта, образование и навыки.

linkedin_check_session

Проверяет, выполнен ли вход в сохранённой сессии браузера.

linkedin_close_session

Отключается от Chrome, оставляя окно и сессию нетронутыми.

Related MCP server: LinkedIn Sales & Navigator MCP Server

Установка

Требуется Python 3.12+, uv и Google Chrome.

git clone https://github.com/TSS99/linkedin-mcp.git
cd linkedin-mcp
uv sync

Войдите один раз. Это откроет окно Chrome и будет ждать, пока вы войдёте вручную — скрипт никогда не вводит учётные данные, потому что LinkedIn блокирует скриптовый ввод учётных данных:

uv run linkedin-mcp --login

Сессия сохраняется в ~/.linkedin-mcp/chrome-profile. Проверить её можно в любой момент с помощью uv run linkedin-mcp --check, очистить — с помощью uv run linkedin-mcp --logout.

Каким профилем Chrome он управляет

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

Если вы предпочитаете, чтобы он управлял вашим обычным Chrome, чтобы использовать уже существующую сессию LinkedIn и не открывать чужое окно, задайте:

LINKEDIN_MCP_PROFILE_DIR=system

или укажите любой каталог профиля явно. В конфигурации MCP-клиента это помещается в блок env:

{
  "mcpServers": {
    "linkedin": {
      "command": "uv",
      "args": ["--directory", "/path/to/linkedin-mcp", "run", "linkedin-mcp"],
      "env": { "LINKEDIN_MCP_PROFILE_DIR": "system" }
    }
  }
}

Прежде чем это сделать, поймите две вещи:

Вам всё равно придётся один раз перезапустить Chrome. --remote-debugging-port действует только при запуске; его нельзя включить для уже работающего процесса. Поэтому к Chrome, который открыт прямо сейчас, невозможно подключиться, что бы ни говорила настройка профиля. Полностью закройте его (Cmd+Q, а не просто закройте окно) и позвольте серверу запустить его, или запустите сами командой, которую выводит --login.

Порт отладки не ограничен LinkedIn. Всё, что может получить доступ к 127.0.0.1:9224, может управлять каждой вкладкой в этом Chrome и читать каждую сессию в нём — вашу почту, ваш банк, всё — не только LinkedIn. В изолированном профиле больше ничего нет. В вашем обычном профиле есть всё. Запускайте так только на доверенной машине и закрывайте отладочный Chrome, когда закончите.

--logout отказывается удалять профиль, который он не создавал, поэтому указание на ваш настоящий Chrome не может стереть состояние вашего браузера.

Настройка

Добавьте в конфигурацию MCP-клиента (см. mcp-config.example.json):

{
  "mcpServers": {
    "linkedin": {
      "command": "uv",
      "args": ["--directory", "/path/to/linkedin-mcp", "run", "linkedin-mcp"]
    }
  }
}

Для Claude Code: claude mcp add linkedin -- uv --directory /path/to/linkedin-mcp run linkedin-mcp

Как это работает и почему

CDP против реального профиля Chrome, а не запущенного браузера. Собственный Chromium от Playwright выдаёт себя десятками способов, которые проверяет LinkedIn. Подключение к реальному Chrome, в который вы вошли сами, сохраняет честность отпечатка и cookie. Сервер работает на отладочном порту 9224, поэтому он сосуществует с другими MCP-серверами, управляющими браузером, на портах 9222/9223.

Навигации замедлены. LinkedIn ограничивает частоту запросов, а не только объём, поэтому goto применяет минимальный интервал с джиттером. Долгий исследовательский прогон медленнее, чем мог бы быть, — намеренно.

Каждая строка в DOM LinkedIn встречается дважды — один раз видимая, один раз в visually-hidden span для программ чтения с экрана — поэтому сырой innerText читается как «Acme Corp\nAcme Corp». dedupe_lines схлопывает повторяющиеся строки; без этого каждое разобранное поле удваивается.

Селекторы — это упорядоченные списки запасных вариантов. Имена классов в LinkedIn обфусцированы и часто переименовываются. Где возможно, парсеры опираются на то, что пережило смену классов — атрибут data-occludable-job-id, стабильные якорные id div#experience — и в качестве запасного варианта разбирают порядок строк в тексте карточки, а не доверяют хуку на каждое поле.

Сломанный парсинг никогда не возвращает пустой результат. Каждый инструмент обёрнут так, что отсутствующий якорь возвращается как {"status": "error", "error_type": "stale_selector", ...} с указанием селектора и URL. LLM, получив [], с полной уверенностью сообщит «вакансий не найдено»; это позволяет отличить поломку инструмента от реального отсутствия результатов.

Тесты

uv run pytest

Тесты покрывают чистые парсеры — построение URL/фильтров, разбор карточек, разбор записей профиля, дедупликацию строк — на фикстурах в том виде, в каком DOM LinkedIn их реально выдаёт. Им не нужен браузер и сеть.

Когда что-то ломается

Это случится. LinkedIn постоянно меняет разметку, а скрапер — это предположение о чужом HTML. Ожидайте ошибок stale_selector; обычно исправление — это ещё одна запись в списке селекторов в tools/jobs.py или tools/profiles.py, плюс фикстура в tests/test_parsers.py.

Если вы получаете auth_required с URL checkpoint, LinkedIn требует человека: откройте окно Chrome, пройдите проверку и повторите попытку.

О условиях использования

Автоматический доступ противоречит Пользовательскому соглашению LinkedIn, независимо от того, насколько аккуратна реализация, и LinkedIn действительно ограничивает аккаунты за это. Это личный исследовательский инструмент; конструкция «только для чтения» и замедленные запросы снижают риск, но не устраняют его, и аккаунт, на который вы его направляете, несёт этот риск. Используйте своё суждение.

Лицензия

Apache-2.0

Install Server
A
license - permissive license
A
quality
C
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

  • F
    license
    A
    quality
    Not graded
    maintenance
    Enables AI assistants to interact with LinkedIn and LinkedIn Sales Navigator for searching profiles, managing leads, and handling messaging via cookie-based authentication. It supports professional networking tasks such as sending connection requests and retrieving account details through the Model Context Protocol.
    22
    1
  • A
    license
    A
    quality
    D
    maintenance
    Enables searching and scraping of LinkedIn for structured data on people, companies, and job listings. It allows AI clients to retrieve detailed profiles, experience, and activity sections using browser automation.
    7
    175
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI assistants to search, filter, and extract job listings from LinkedIn using an automated headless browser with semantic AI filtering and deduplication.
    15
    MIT

View all related MCP servers

Related MCP Connectors

  • Give AI agents the LinkedIn tools to find, qualify, engage, and follow up with prospects.

  • Live LinkedIn data for AI agents: profiles, companies, jobs, posts, email finding. No account risk.

  • Run LinkedIn outreach from your AI chat: find leads, launch campaigns, send, and reply.

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

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