Skip to main content
Glama

Linkedin Posts Job Radar

Находите реальные вакансии на LinkedIn без лишнего шума

MCP Server TypeScript Playwright React Express Vite Tailwind CSS SQLite License: ISC


Попросите вашего ИИ-ассистента поискать на LinkedIn. Linkedin Posts Job Radar собирает результаты, отбрасывает всё, что не является работодателем, нанимающим на рынке, который вам важен, и даёт вам панель управления, чтобы отсортировать оставшееся на Ok, Maybe и Not interested.

Всё остаётся на вашей машине. Никаких аккаунтов, никаких серверов, никакие данные не покидают ваш ноутбук.

Панель управления Linkedin Posts Job Radar, отфильтрованная по постам с указанием зарплаты


Зачем

Поищите на LinkedIn «Senior Data Scientist» — и вы получите открытые вакансии вперемешку с людьми, сообщающими о своей доступности, рекламой курсов, дайджестами рассылок и одними и теми же репостами кадровых агентств по двадцать раз — и большая часть этого в странах, где вы работать не можете.

Linkedin Posts Job Radar проверяет каждый пост до его сохранения, поэтому вы сортируете короткий список вместо того, чтобы продираться через сотни:

Harvest complete: 9 new posts added, 3 duplicates skipped,
12 rejected as outside allowed markets,
18 rejected as non-vacancy or agency posts

Related MCP server: LinkedIn-Posts-Hunter-MCP-Server

Установка

Вам понадобится Node.js 18+ и MCP-клиент, такой как Claude Code, Claude Desktop или Cursor. Chromium загрузится сам при первом использовании.

Самый быстрый способ: без клонирования

Направьте ваш клиент прямо на репозиторий — npm скачает и соберёт его за вас.

claude mcp add job-radar -- npx -y github:MaryemeBay/linkedin-posts-job-radar
{
  "mcpServers": {
    "job-radar": {
      "command": "npx",
      "args": ["-y", "github:MaryemeBay/linkedin-posts-job-radar"]
    }
  }
}
{
  "mcpServers": {
    "job-radar": {
      "command": "npx",
      "args": ["-y", "github:MaryemeBay/linkedin-posts-job-radar"]
    }
  }
}

Первый запуск занимает пару минут, пока идёт сборка и загрузка Chromium; последующие запуски мгновенные.

Изменение правил фильтрации требует исходников, поэтому клонируйте репозиторий, если хотите настроить, какие рынки разрешены.

Клонирование, чтобы изменить правила

git clone https://github.com/MaryemeBay/linkedin-posts-job-radar.git
cd linkedin-posts-job-radar
npm run setup
npm run build

Зарегистрируйте его с абсолютным путём к месту клонирования:

claude mcp add job-radar -- node /absolute/path/to/linkedin-posts-job-radar/build/main.js

Для Claude Desktop или Cursor используйте JSON выше, с "command": "node" и "args": ["/absolute/path/.../build/main.js"].

Как бандл

npm run bundle создаёт файл .mcpb, который клиенты, поддерживающие MCP-бандлы, могут установить напрямую, без необходимости в Node-инструментарии на устанавливающей машине.

Настройте свои рынки

Откройте src/intake/market-policy.ts и перечислите места, где вы реально готовы работать:

export const ALLOWED_COUNTRIES = [
  'France',
  'United Kingdom',
  'Remote (Europe)',
  'Remote (Worldwide)',
]

Нужно только если вы клонировали репозиторий. Запустите npm run build после правок — всё, что вне этого списка, никогда не попадёт в вашу базу данных.


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

Общайтесь с ассистентом на простом языке:

«Войди в мой аккаунт LinkedIn» Откроется окно браузера. Войдите один раз — сессия сохраняется локально, так что вас больше не спросят.

«Найди на LinkedIn вакансии Senior Data Scientist в Лондоне» Собирает результаты и сообщает, что сохранено, а что отфильтровано.

«Открой панель управления» Открывает localhost:7391. Оценивайте посты как Ok / Maybe / Not interested.

«Покажи всё, что я отметил Ok и где указана зарплата» Фильтрует панель управления прямо из диалога.

«Удали всё, что я отметил Not interested»

Панель управления

Оцените пост — и его цветная полоса по краю примет этот цвет, так что длинный список остаётся читаемым с одного взгляда. Карточка «Not interested» затемняется, пока вы не наведёте на неё курсор. Клик по оценке, которая уже стоит на посте, сбрасывает её — так что случайный клик исправляется ещё одним кликом, а не четвёртой кнопкой.

Applied отслеживается отдельно — оценка это ваше мнение о роли, Applied — предприняли ли вы действие.

Каждый пост показывает страну и любую указанную зарплату — обе извлекаются из текста поста автоматически.

Табличный вид

Тёмная тема


Что отбрасывается

Три фильтра, применяемые по мере поступления постов:

Фильтр

Отклоняет

Релевантность

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

Автор

Посты «Open to work» и репосты кадровых агентств

Рынок

Вакансии вне ваших разрешённых стран

Релевантность ищет намерение нанять в широком смысле, потому что множество реальных объявлений никогда не пишут «hiring» — Lead Data Analyst opportunity at HelloFresh in London — это пост о вакансии.

Автор ловит агентства двумя способами: формулировки вроде our client, on behalf of, C2C или Outside IR35, а также должности вроде Recruitment Consultant или Executive Recruiter. Должности, которые существуют в обоих лагерях — просто «Recruiter», «Talent Acquisition» — никогда не отклоняют пост сами по себе, а Corporate Recruiter считается внутренним. Собственный рекрутер работодателя — это именно тот, от кого вы хотите получать новости.

Рынок принимает пост, в котором названа любая разрешённая страна. Упоминание нежелательной страны не дисквалифицирует — парижская вакансия, упоминающая визовые правила для соискателей из других мест, остаётся парижской вакансией. Посты без определяемого местоположения сохраняются, поскольку множество реальных объявлений его не указывают.

Нужны контрактные роли? umbrella, Outside IR35 и C2C считаются признаками агентств. Удалите их из AGENCY_BODY в src/intake/relevance.ts, чтобы пропускать контрактную работу.

Определение местоположения

Распознаёт около 105 стран по названию и по городам, на английском, французском, немецком, испанском и португальском, плюс списки кодов вроде Remote EU (CZ/EE/FI/PL/ES/SE).

Явная строка с местоположением побеждает. Когда пост содержит 📍 Location: London, UK или Lieu : Paris, решает именно эта строка — так что пост с заголовком 📍 Islamabad, Pakistan, упоминающий Лондон ниже, корректно определяется как вакансия в Исламабаде, а не в Лондоне.

Определение зарплаты

Каждая сумма в валюте классифицируется по периоду выплаты и сохраняется, только если сумма имеет смысл для этого периода. Именно это отличает реальную зарплату от $2,000 welcome bonus или €12.50/day на обеденные ваучеры, и позволяет сохранить $100/hour, отбрасывая голые $100.

Обрабатывает $128,470 - $208,770, 96k€, £75k-£115k, 110000USD-135000USD, 60,4K GBP/yr (французская десятичная запятая), £830/day и $7,000/month.


Ваши данные

Что

Где

Собранные посты

~/.linkedin-mcp/resources/linkedin.db

Сессия LinkedIn

~/.linkedin-mcp/auth.json

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

Чтобы стереть всё: rm -rf ~/.linkedin-mcp


Инструменты, которые может вызывать ваш ассистент

Инструмент

Что делает

linkedin_session

Вход, проверка сессии, очистка сохранённых учётных данных

harvest_posts

Поиск и сохранение постов с отчётом о том, что было отфильтровано

vacancies

Чтение, подсчёт или удаление — фильтр по ключевому слову, рынку, зарплате, оценке, applied

dashboard_filters

Изменение фильтров панели управления из диалога

open_dashboard / close_dashboard

Запуск и остановка панели управления

Команды

npm run viewer      # dashboard on :7391, without going through your assistant
npm run rederive    # recompute country and pay for stored posts
npm run seed        # import posts from a JSON export
npm run build       # rebuild after changing any rule
npm run typecheck

npm run rederive -- --all заново выводит данные для каждого поста, а не только для пустых полей — запустите после правки детектора.

Чтобы перенести панель управления с порта 7391:

JOB_RADAR_PORT=9090 npm run viewer

Когда ваш MCP-клиент запускает сервер, поместите JOB_RADAR_PORT в блок env этого сервера, чтобы open_dashboard использовал тот же порт.


Структура кода

src/
  main.ts               MCP server: tool schemas and dispatch
  commands/             One module per tool
  linkedin/
    session/            Playwright login, credential storage
    harvest/            Search crawler, URL building, post parsing
  intake/               The screening pipeline
    ingest.ts             Applies every gate, then writes
    relevance.ts          Vacancy vs commentary vs agency
    market-policy.ts      Country allowlist  <- edit this
    location.ts           Country inference
    compensation.ts       Pay parsing
  store/                SQLite handle, schema, queries
  viewer/               Dashboard API and React app
  platform/             Paths, persisted filter state
scripts/                Maintenance scripts

Хранилище — это sql.js, который держит всю базу данных в памяти и записывает её целиком. При двух запущенных процессах — MCP-сервере и панели управления — каждый иначе обслуживал бы устаревший снимок и перезаписывал бы строки другого при следующем сохранении.

store/connection.ts снимает отпечаток файла по размеру и времени изменения, перезагружает, когда другой процесс записал данные, и фиксирует собственные сохранения, чтобы не перезагружаться без необходимости. Удаление этой проверки молча теряет данные.


Атрибуция

Производный от LinkedIn-Posts-Hunter-MCP-Server Кевина Вайтгенанта (Kevin Weitgenant), используется по лицензии ISC.

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

Лицензия ISC — см. LICENSE, где указаны обе строки копирайта.

A
license - permissive license
Not graded
quality - not tested
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
    Not graded
    quality
    D
    maintenance
    Helps users find suitable LinkedIn job opportunities by automatically scraping listings, analyzing compatibility with user profiles using AI, and sending custom match reports via email.
    1
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides tools for automating LinkedIn job post search and management. Job opportunities often appear in LinkedIn posts first, before they're posted on traditional job boards. By monitoring LinkedIn posts, you can discover opportunities earlier and get a competitive advantage in your job search.
    19
    6
    ISC
  • A
    license
    Not graded
    quality
    B
    maintenance
    An MCP server that finds recent job postings based on your LinkedIn profile, scores each against your resume, and logs the results — all without logging into or scraping LinkedIn.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Searches LinkedIn, Indeed, USAJobs, and Google Jobs from the command line, deduplicates across sources, and optionally finds hiring manager emails; also runs as an MCP server for AI agents.
    MIT

View all related MCP servers

Related MCP Connectors

  • Semantic search over 3.5M+ live US job postings pulled straight from company ATSes. Read-only.

  • Unified jobs search over official feeds + ATS boards (USAJOBS, Adzuna, Muse, Greenhouse, Lever...)

  • Search AI-native jobs, inspect application forms, and fetch free interview-prep resources.

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/MaryemeBay/linkedin-posts-job-radar'

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