job-radar
Linkedin Posts Job Radar
Encuentra ofertas de empleo reales en LinkedIn sin el ruido
Pídele a tu asistente de IA que busque en LinkedIn. Linkedin Posts Job Radar extrae los resultados, descarta todo lo que no sea un empleador contratando en un mercado que te interese, y te ofrece un panel para clasificar lo que queda en Ok, Quizá y No me interesa.
Todo permanece en tu máquina. Sin cuentas, sin servidores, sin que ningún dato salga de tu portátil.

Por qué
Busca "Senior Data Scientist" en LinkedIn y obtienes ofertas abiertas mezcladas con gente anunciando que está disponible, anuncios de cursos, resúmenes de newsletters y el mismo repost de agencia de staffing veinte veces — la mayor parte en países en los que no puedes trabajar.
Linkedin Posts Job Radar examina cada publicación antes de guardarla, así que clasificas una lista corta en lugar de abrirte paso entre cientos:
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
Instalación
Necesitarás Node.js 18+ y un cliente MCP como Claude Code, Claude Desktop o Cursor. Chromium se descarga solo en el primer uso.
Lo más rápido: sin clonar
Apunta tu cliente directamente al repositorio — npm lo descarga y compila por ti.
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"]
}
}
}El primer arranque tarda un par de minutos mientras compila y descarga Chromium; los arranques posteriores son inmediatos.
Cambiar las reglas de filtrado requiere el código fuente, así que clona si quieres ajustar qué mercados están permitidos.
Clonar, para cambiar las reglas
git clone https://github.com/MaryemeBay/linkedin-posts-job-radar.git
cd linkedin-posts-job-radar
npm run setup
npm run buildRegístralo con la ruta absoluta a donde lo hayas clonado:
claude mcp add job-radar -- node /absolute/path/to/linkedin-posts-job-radar/build/main.jsPara Claude Desktop o Cursor usa el JSON de arriba, con "command": "node" y
"args": ["/ruta/absoluta/.../build/main.js"].
Como paquete
npm run bundle produce un archivo .mcpb que los clientes compatibles con paquetes MCP pueden
instalar directamente, sin necesidad de herramientas de Node en la máquina donde se instala.
Configura tus mercados
Abre src/intake/market-policy.ts y lista los
lugares donde aceptarías un trabajo de verdad:
export const ALLOWED_COUNTRIES = [
'France',
'United Kingdom',
'Remote (Europe)',
'Remote (Worldwide)',
]Solo necesario si has clonado. Ejecuta npm run build después de editar — cualquier cosa fuera
de esta lista nunca llega a tu base de datos.
Cómo usarlo
Habla con tu asistente en lenguaje natural:
"Inicia sesión en mi cuenta de LinkedIn" Se abre una ventana del navegador. Inicia sesión una vez — la sesión se guarda localmente, así que no te lo volverán a pedir.
"Busca en LinkedIn ofertas de Senior Data Scientist en Londres" Extrae los resultados e informa de lo que ha conservado y lo que ha descartado.
"Abre el panel" Abre
localhost:7391. Clasifica las publicaciones como Ok / Quizá / No me interesa.
"Muéstrame todo lo que marqué como Ok que mencione un salario" Filtra el panel desde la conversación.
"Elimina todo lo que marqué como No me interesa"
El panel
Clasifica una publicación y su barra lateral de acento toma ese color, así que una lista larga sigue siendo legible de un vistazo. Una tarjeta "No me interesa" se atenúa hasta que pasas el cursor por encima. Hacer clic en una clasificación que una publicación ya tiene la borra, así que un clic erróneo necesita un clic más en lugar de un cuarto botón.
Applied se registra por separado — el veredicto es lo que opinas de la oferta,
Applied es si has actuado sobre ella.
Cada publicación muestra el país y cualquier salario que mencione, ambos extraídos automáticamente del texto de la publicación.


Qué se descarta
Tres filtros, aplicados a medida que llegan las publicaciones:
Filtro | Rechaza |
Relevancia | Publicaciones sin indicios de una oferta abierta — comentarios, resúmenes, anuncios de cursos |
Autor | Publicaciones "Open to work" y reposts de agencias de staffing |
Mercado | Ofertas fuera de tus países permitidos |
Relevancia busca intención de contratación en sentido amplio, porque muchas ofertas reales
nunca dicen "hiring" — Lead Data Analyst opportunity at HelloFresh in London es
una oferta de empleo.
Autor detecta agencias de dos maneras: redacción como our client, on behalf of,
C2C o Outside IR35, y títulos como Recruitment Consultant o Executive
Recruiter. Los títulos que existen en ambos lados — "Recruiter" a secas, "Talent
Acquisition" — nunca rechazan por sí solos, y Corporate Recruiter se trata como
interno. El reclutador de un empleador es exactamente de quien quieres recibir noticias.
Mercado acepta una publicación que nombre cualquier país permitido. Mencionar uno no deseado no es descalificatorio — una oferta en París que menciona requisitos de visado para solicitantes de otros lugares sigue siendo una oferta en París. Las publicaciones sin ubicación detectable se conservan, ya que muchas ofertas reales no indican una.
¿Quieres contratos freelance?
umbrella,Outside IR35yC2Cse tratan como señales de agencia. Elimínalos deAGENCY_BODYensrc/intake/relevance.tspara dejar pasar el trabajo por contrato.
Detección de ubicación
Reconoce unos 105 países por nombre y por ciudad, en inglés, francés, alemán,
español y portugués, además de listas de códigos como Remote EU (CZ/EE/FI/PL/ES/SE).
Una línea de ubicación explícita gana por completo. Cuando una publicación dice 📍 Location: London, UK o Lieu : Paris, esa línea decide — así que una publicación encabezada con
📍 Islamabad, Pakistan que menciona Londres más abajo se clasifica correctamente como una oferta
en Islamabad, no en Londres.
Detección de salario
Cada cifra en una moneda se clasifica por período de pago y solo se conserva si el importe
tiene sentido para ese período. Eso es lo que distingue un salario real de un
$2,000 welcome bonus o vales de comida de €12.50/day, y lo que mantiene
$100/hour mientras rechaza un $100 a secas.
Gestiona $128,470 - $208,770, 96k€, £75k-£115k, 110000USD-135000USD,
60,4K GBP/yr (coma decimal francesa), £830/day y $7,000/month.
Tus datos
Qué | Dónde |
Publicaciones extraídas |
|
Sesión de LinkedIn |
|
Ambos viven fuera de este repositorio y nunca se confirman. No se envía nada a ningún sitio — el panel es un servidor local, y el único tráfico de red es Playwright hablando con LinkedIn como lo haría tu propio navegador.
Para borrarlo todo: rm -rf ~/.linkedin-mcp
Herramientas que tu asistente puede llamar
Herramienta | Qué hace |
| Iniciar sesión, comprobar la sesión, borrar las credenciales guardadas |
| Buscar y almacenar publicaciones, informando de lo que se descartó |
| Leer, contar o borrar — filtrar por palabra clave, mercado, salario, veredicto, applied |
| Cambiar los filtros del panel desde la conversación |
| Iniciar y detener el panel |
Comandos
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 vuelve a inferir cada publicación en lugar de solo los espacios en
blanco — ejecútalo después de editar un detector.
Para mover el panel fuera del puerto 7391:
JOB_RADAR_PORT=9090 npm run viewerCuando tu cliente MCP lanza el servidor, pon JOB_RADAR_PORT en el
bloque env de ese servidor para que open_dashboard use el mismo puerto.
Estructura del código
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 scriptsEl almacén es sql.js, que mantiene toda la base de datos en memoria y la escribe
de vuelta por completo. Con dos procesos ejecutándose — el servidor MCP y el panel —
cada uno serviría de otro modo una instantánea obsoleta y sobrescribiría las filas del otro
en su siguiente guardado.
store/connection.ts toma la huella del archivo por tamaño y fecha de modificación,
lo recarga cuando otro proceso ha escrito, y registra sus propios guardados para no
recargar innecesariamente. Eliminar esa comprobación pierde datos silenciosamente.
Atribución
Derivado de LinkedIn-Posts-Hunter-MCP-Server por Kevin Weitgenant, utilizado bajo la licencia ISC.
Este fork reorganiza el código en torno al pipeline de captación, añade los filtros de relevancia, agencia y mercado descritos arriba, añade la inferencia de país y salario, sustituye un indicador guardado por el veredicto de clasificación, renombra las herramientas MCP, reconstruye el panel y corrige la sobrescritura de la base de datos entre procesos.
Licencia ISC — consulta LICENSE, que incluye ambas líneas de copyright.
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