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

Зачем
Поищите на 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 postsRelated 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 |
|
Оба файла находятся вне этого репозитория и никогда не коммитятся. Никуда ничего не отправляется — панель управления это локальный сервер, и единственный сетевой трафик — это Playwright, общающийся с LinkedIn так же, как это делал бы ваш собственный браузер.
Чтобы стереть всё: rm -rf ~/.linkedin-mcp
Инструменты, которые может вызывать ваш ассистент
Инструмент | Что делает |
| Вход, проверка сессии, очистка сохранённых учётных данных |
| Поиск и сохранение постов с отчётом о том, что было отфильтровано |
| Чтение, подсчёт или удаление — фильтр по ключевому слову, рынку, зарплате, оценке, applied |
| Изменение фильтров панели управления из диалога |
| Запуск и остановка панели управления |
Команды
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 typechecknpm 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, где указаны обе строки копирайта.
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
- FlicenseNot gradedqualityDmaintenanceHelps 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
- AlicenseNot gradedqualityDmaintenanceProvides 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.196ISC
- AlicenseNot gradedqualityBmaintenanceAn 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
- AlicenseNot gradedqualityCmaintenanceSearches 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
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.
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/MaryemeBay/linkedin-posts-job-radar'
If you have feedback or need assistance with the MCP directory API, please join our Discord server