job-radar
Linkedin Posts Job Radar
Echte Stellenangebote auf LinkedIn finden – ohne das Rauschen
Bitte deinen KI-Assistenten, LinkedIn zu durchsuchen. Linkedin Posts Job Radar erfasst die Ergebnisse, verwirft alles, was kein Arbeitgeber ist, der in einem Markt einstellt, der dich interessiert, und gibt dir ein Dashboard, um das Übriggebliebene in Ok, Vielleicht und Nicht interessiert zu sortieren.
Alles bleibt auf deinem Rechner. Keine Konten, keine Server, keine Daten verlassen deinen Laptop.

Warum
Suche auf LinkedIn nach „Senior Data Scientist" und du bekommst offene Stellen vermischt mit Leuten, die ihre Verfügbarkeit ankündigen, Kursanzeigen, Newsletter-Zusammenfassungen und denselben Personalvermittlungs-Repost zwanzigmal – das meiste davon in Ländern, in denen du nicht arbeiten kannst.
Linkedin Posts Job Radar prüft jeden Beitrag bevor er gespeichert wird, sodass du eine kurze Liste sichtest, statt dich durch Hunderte zu wühlen:
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
Installation
Du brauchst Node.js 18+ und einen MCP-Client wie Claude Code, Claude Desktop oder Cursor. Chromium lädt sich bei der ersten Verwendung selbst herunter.
Am schnellsten: ohne Klonen
Richte deinen Client direkt auf das Repo – npm holt und baut es für dich.
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"]
}
}
}Der erste Start dauert ein paar Minuten, während gebaut und Chromium geladen wird; spätere Starts sind sofort da.
Wenn du die Filterregeln ändern willst, brauchst du den Quellcode – klone also, wenn du festlegen möchtest, welche Märkte erlaubt sind.
Klonen, um die Regeln zu ändern
git clone https://github.com/MaryemeBay/linkedin-posts-job-radar.git
cd linkedin-posts-job-radar
npm run setup
npm run buildRegistriere es mit dem absoluten Pfad zu deinem Klon:
claude mcp add job-radar -- node /absolute/path/to/linkedin-posts-job-radar/build/main.jsFür Claude Desktop oder Cursor verwende das JSON oben, mit "command": "node"
und "args": ["/absoluter/pfad/.../build/main.js"].
Als Bundle
npm run bundle erzeugt eine .mcpb-Datei, die Clients mit MCP-Bundle-Unterstützung
direkt installieren können – ohne Node-Werkzeuge auf dem Zielrechner.
Deine Märkte festlegen
Öffne src/intake/market-policy.ts und liste die
Orte auf, an denen du tatsächlich einen Job annehmen würdest:
export const ALLOWED_COUNTRIES = [
'France',
'United Kingdom',
'Remote (Europe)',
'Remote (Worldwide)',
]Nur nötig, wenn du geklont hast. Führe nach dem Bearbeiten npm run build aus –
alles außerhalb dieser Liste erreicht deine Datenbank nie.
Verwendung
Sprich mit deinem Assistenten in normaler Sprache:
„Melde mich bei meinem LinkedIn-Konto an" Ein Browserfenster öffnet sich. Melde dich einmal an – die Sitzung wird lokal gespeichert, sodass du nicht erneut gefragt wirst.
„Suche auf LinkedIn nach Senior Data Scientist-Rollen in London" Erfasst die Ergebnisse und berichtet, was behalten und was herausgefiltert wurde.
„Öffne das Dashboard" Öffnet
localhost:7391. Bewerte Beiträge mit Ok / Vielleicht / Nicht interessiert.
„Zeig mir alles, was ich mit Ok markiert habe und das ein Gehalt nennt" Filtert das Dashboard aus dem Gespräch heraus.
„Lösche alles, was ich mit Nicht interessiert markiert habe"
Das Dashboard
Bewerte einen Beitrag und seine farbige Seitenleiste nimmt diese Farbe an, damit eine lange Liste auf einen Blick lesbar bleibt. Eine „Nicht interessiert"-Karte wird abgedunkelt, bis du mit der Maus darüberfährst. Ein Klick auf eine Bewertung, die ein Beitrag bereits hat, entfernt sie – ein Fehlklick braucht also einen weiteren Klick statt eines vierten Buttons.
Applied wird separat erfasst – die Bewertung ist deine Meinung zur Rolle,
Applied ob du aktiv geworden bist.
Jeder Beitrag zeigt das Land und eine eventuelle Bezahlung, beides automatisch aus dem Beitragstext extrahiert.


Was verworfen wird
Drei Filter, angewendet sobald Beiträge eintreffen:
Filter | Verwirft |
Relevanz | Beiträge ohne Anzeichen einer offenen Stelle – Kommentare, Zusammenfassungen, Kursanzeigen |
Autor | „Open to work"-Beiträge und Reposts von Personalvermittlungen |
Markt | Rollen außerhalb deiner erlaubten Länder |
Relevanz sucht breit nach Einstellungsabsicht, weil viele echte Anzeigen nie
„hiring" schreiben – Lead Data Analyst opportunity at HelloFresh in London ist
eine Stellenanzeige.
Autor erkennt Vermittlungen auf zwei Wegen: Formulierungen wie our client,
on behalf of, C2C oder Outside IR35, sowie Titel wie Recruitment Consultant
oder Executive Recruiter. Titel, die auf beiden Seiten existieren – schlicht
„Recruiter", „Talent Acquisition" – führen nie allein zur Ablehnung, und
Corporate Recruiter wird als intern behandelt. Der eigene Recruiter eines
Arbeitgebers ist genau der, von dem du hören willst.
Markt akzeptiert einen Beitrag, der ein erlaubtes Land nennt. Die Erwähnung eines unerwünschten Landes ist nicht disqualifizierend – eine Pariser Rolle, die Visabestimmungen für Bewerber anderswo erwähnt, ist immer noch eine Pariser Rolle. Beiträge ohne erkennbaren Ort werden behalten, da viele echte Anzeigen keinen nennen.
Freelance-/Vertragsrollen gewünscht?
umbrella,Outside IR35undC2Cwerden als Vermittlungssignale behandelt. Entferne sie ausAGENCY_BODYinsrc/intake/relevance.ts, um Vertragsarbeit durchzulassen.
Ortserkennung
Erkennt rund 105 Länder nach Name und Stadt, auf Englisch, Französisch, Deutsch,
Spanisch und Portugiesisch, plus Ländercode-Listen wie Remote EU (CZ/EE/FI/PL/ES/SE).
Eine explizite Ortszeile gewinnt eindeutig. Wenn ein Beitrag 📍 Location: London, UK oder Lieu : Paris sagt, entscheidet diese Zeile – ein Beitrag mit
📍 Islamabad, Pakistan, der weiter unten London erwähnt, ist also korrekt eine
Islamabad-Rolle, keine Londoner.
Gehaltserkennung
Jeder Währungsbetrag wird nach Zahlungszeitraum klassifiziert und nur behalten,
wenn der Betrag für diesen Zeitraum sinnvoll ist. So unterscheidet sich ein
echtes Gehalt von einem $2,000 welcome bonus oder €12.50/day Essensgutscheinen,
und so bleibt $100/hour erhalten, während ein nacktes $100 abgelehnt wird.
Behandelt $128,470 - $208,770, 96k€, £75k-£115k, 110000USD-135000USD,
60,4K GBP/yr (französisches Dezimalkomma), £830/day und $7,000/month.
Deine Daten
Was | Wo |
Erfasste Beiträge |
|
LinkedIn-Sitzung |
|
Beides liegt außerhalb dieses Repos und wird nie eingecheckt. Es wird nichts irgendwohin gesendet – das Dashboard ist ein lokaler Server, und der einzige Netzwerkverkehr ist Playwright, das wie dein eigener Browser mit LinkedIn spricht.
Um alles zu löschen: rm -rf ~/.linkedin-mcp
Werkzeuge, die dein Assistent aufrufen kann
Werkzeug | Was es tut |
| Anmelden, Sitzung prüfen, gespeicherte Zugangsdaten löschen |
| Suchen und Beiträge speichern, mit Bericht über Herausgefiltertes |
| Lesen, zählen oder löschen – filtern nach Stichwort, Markt, Gehalt, Bewertung, Applied |
| Dashboard-Filter aus dem Gespräch heraus ändern |
| Dashboard starten und stoppen |
Befehle
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 leitet jeden Beitrag neu ab statt nur die Lücken –
führe es nach dem Bearbeiten eines Erkenners aus.
Um das Dashboard von Port 7391 zu verschieben:
JOB_RADAR_PORT=9090 npm run viewerWenn dein MCP-Client den Server startet, setze JOB_RADAR_PORT in den
env-Block dieses Servers, damit open_dashboard denselben Port verwendet.
Code-Struktur
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 scriptsDer Speicher ist sql.js, das die gesamte Datenbank im Speicher hält und sie
komplett zurückschreibt. Bei zwei laufenden Prozessen – dem MCP-Server und dem
Dashboard – würde jeder sonst einen veralteten Schnappschuss bedienen und beim
nächsten Speichern die Zeilen des anderen überschreiben.
store/connection.ts erstellt einen Fingerabdruck der Datei anhand von Größe
und Änderungszeitpunkt, lädt neu, wenn ein anderer Prozess geschrieben hat, und
protokolliert seine eigenen Speicherungen, um nicht unnötig neu zu laden.
Das Entfernen dieser Prüfung verliert stillschweigend Daten.
Namensnennung
Abgeleitet von LinkedIn-Posts-Hunter-MCP-Server von Kevin Weitgenant, verwendet unter der ISC-Lizenz.
Dieser Fork reorganisiert die Codebasis um die Erfassungspipeline, fügt die oben genannten Relevanz-, Vermittlungs- und Marktfilter hinzu, ergänzt Länder- und Gehaltserkennung, ersetzt ein gespeichertes Flag durch die Sichtungsbewertung, benennt die MCP-Werkzeuge um, baut das Dashboard neu und behebt das prozessübergreifende Überschreiben der Datenbank.
Lizenziert unter ISC – siehe LICENSE, das beide Copyright-Zeilen enthält.
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