job-search-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@job-search-mcp What backend jobs are available in Berlin?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Job Search MCP
Installierbarer MCP-Server für eine regelkonforme Mehrportal-Jobsuche mit OpenCode. Er verbindet die öffentliche StepStone-Suche mit den offiziellen APIs beziehungsweise Feeds von Arbeitnow, Remotive und We Work Remotely. Weitere Portale werden mit transparentem Zugangsstatus katalogisiert, ohne gesperrte Dienste zu scrapen.
Funktionen
kombinierte Mehrportal-Suche mit isolierten Quellenausfällen
öffentliche Suche ohne unnötigen Login
sichtbarer Camoufox-Browser für optionale Konto-Funktionen und 2FA
deterministisches Matching gegen ein JSON-Jobprofil
Markdown-Berichte mit Original-Links
Portal-Allowlist und verschlüsselte lokale Credentials
OpenCode-Konfiguration und stdio-MCP-CLI
Related MCP server: RecruitData
Installation
python3 -m venv .venv
.venv/bin/python -m pip install -e ".[dev]"
.venv/bin/python -m camoufox fetchTests und Qualitätsprüfungen:
.venv/bin/python -m unittest discover -s tests -t .
.venv/bin/python -m ruff check .
.venv/bin/python -m ruff format --check .
.venv/bin/python -m mypyVerwendung
Der MCP-Server ist über den installierten Einstiegspunkt verfügbar:
export ALLOW_EXTERNAL_PORTALS=1
.venv/bin/job-search-mcpOpenCode verwendet denselben Einstieg über .opencode/opencode.json. Nach der
Installation genügt daher:
export ALLOW_EXTERNAL_PORTALS=1
opencodeDas zentrale Werkzeug lautet:
mehrportal_suche(query="backend", ort="nürnberg")Ohne portal_ids werden StepStone, Arbeitnow, Remotive und We Work Remotely
abgefragt. Ein Fehler einer Quelle verwirft die übrigen Ergebnisse nicht.
Repository-Struktur
src/job_search_mcp/
├── domain/ # Jobmodelle und reine Matching-Regeln
├── application/ # Such-, Bewertungs- und Berichtsabläufe
├── infrastructure/ # Browser, Feeds, Credentials und Konfiguration
├── interfaces/ # MCP-Server, CLI und lokale Demo-API
└── resources/ # Profile, Portalkatalog und JSON-Schemas
tests/ # Unit-, Vertrags- und Integrationstests
examples/ # einzeln ausführbare Lernbeispiele
scripts/ # Repository-Hilfsskripte
docs/ # Architektur, Portale und ausführlicher Leitfaden
todos/ # versionierte Planung und Umsetzungsevidenz
reports/ # lokal erzeugte BerichteMehr Details stehen im Leitfaden, in der Architekturbeschreibung und in der Portalübersicht. UML- und BPMN-Sichten liegen unter architecture/.
Sicherheitsgrenzen
Externe Läufe benötigen
ALLOW_EXTERNAL_PORTALS=1.Indeed bleibt ohne eigene Autorisierung gesperrt.
LinkedIn wird nur mit ausdrücklicher Crawling-Erlaubnis automatisiert.
Instaffo bleibt ein interaktiver Matching-Workflow.
Captchas, 2FA und Bot-Schutz werden nicht umgangen.
Credentials und Browserzustände liegen außerhalb des Repositories im lokalen State-Verzeichnis.
Lizenz
Dieses Projekt steht unter der BSD-3-Clause-Lizenz. Abhängigkeiten und übernommene Fremdkomponenten behalten ihre jeweiligen Lizenzen.
Available Tools
13 toolsanalysiere_echtes_portalC
Fuehrt den aelteren echten Browserpfad ausserhalb des MCP-Eventloops aus.
Inputs: query (required), portal_name (required), allow_external. Returns: object
anmeldedaten_entfernenB
Loescht hinterlegte Anmeldedaten eines Portals.
Inputs: portal_id (required). Returns: object
anmeldedaten_hinterlegenB
Hinterlegt Anmeldedaten verschluesselt (Fernet). Klartext wird nie geloggt.
Inputs: passwort (required), portal_id (required), benutzername (required). Returns: object
bewerte_angeboteB
Bewertet Angebote gegen das Profil und liefert sortierte Matches.
Inputs: angebote, profil_pfad. Returns: object
browser_statusB
Zeigt verfuegbare Browser-Treiber und den Sitzungsstatus der Portale.
Inputs: portal_id. Returns: object
erstelle_berichtB
Bewertet Angebote und schreibt den Markdown-Bericht; liefert den Pfad.
Inputs: quellen, angebote, profil_pfad, bericht_pfad. Returns: result
lade_profilB
Liest und validiert das vorgegebene Jobsuchprofil (JSON + JSON-Schema).
Inputs: profil_pfad. Returns: object
liste_portaleB
Listet aktive Adapter und weitere Portale mit transparentem Zugangsstatus.
Inputs: no named parameters. Returns: result
mehrportal_sucheC
Durchsucht aktive Browser- und Feed-Quellen in einem Worker-Thread.
Inputs: ort, query, portal_ids, profil_pfad. Returns: object
portal_loginB
Oeffnet den Portalbrowser sichtbar fuer den Nutzer und speichert den Login.
Inputs: portal_id (required), auto, sichtbar. Returns: object
portal_rechercheD
Recherchiert, bewertet und schreibt einen Bericht ausserhalb des MCP-Loops.
Inputs: portal_id (required), ort, profil_pfad, bericht_pfad, +1 more. Returns: object
portal_sitzung_loeschenB
Loescht die gespeicherte Sitzung eines Portals (Logout auf Client-Seite).
Inputs: portal_id (required). Returns: object
portal_sucheC
Sucht headless nach Stellen; Login wird nur bei Portalpflicht verwendet.
Inputs: portal_id (required), ort, query, engine, +1 more. Returns: object
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 13 tools
The search/research cluster is confusing: portal_suche, mehrportal_suche, portal_recherche, and analysiere_echtes_portal have overlapping purposes, and erstelle_bericht overlaps with portal_recherche in report generation. An agent would struggle to distinguish when to use each.
Tool names mix verb-first (lade_profil, liste_portale) and noun-first (anmeldedaten_hinterlegen, portal_sitzung_loeschen) patterns, with some tools using English terms (portal_login) and inconsistent verb placement. There is no predictable naming convention.
13 tools is within a reasonable range for a job search MCP, but several tools appear redundant (multiple search/report variants), suggesting the count could be trimmed without losing core functionality.
Core workflows like credential storage, login, search, evaluation, and report writing are covered, but there are gaps such as no profile update capability and no clear way to list raw offers separate from evaluation. The presence of a legacy tool (analysiere_echtes_portal) indicates incomplete refactoring.
Maintenance
Related MCP Connectors
Public MCP server for discovering open jobs. Search, filter, and get application links.
Unified 15-tool SEO, SERP, clean Markdown & GEO (LLM citation Share-of-Voice) MCP server.
Remote job search as MCP tools: jobs, companies, categories, salaries. Links to original postings.
Hosted Web Crawler MCP server for Claude, ChatGPT and Cursor, with each action switched per account.
Related MCP Servers
- AlicenseBqualityCmaintenanceA fast, secure, and LLM-friendly Model Context Protocol (MCP) server that scrapes job listings from major platforms (LinkedIn, Indeed, Google) and converts them into structured Markdown format.11MIT
- AlicenseNot gradedqualityDmaintenanceUnified job search MCP server that aggregates live listings from multiple job boards with deduplication, enabling AI agents to find and filter jobs by keyword and location.MIT
- AlicenseAqualityDmaintenanceMCP server that scours job openings from public, ToS-clean sources (Greenhouse, Lever, Ashby, HN, RemoteOK, Adzuna, USAJobs) and provides tools for job search, company listings, and salary context.4MIT
- AlicenseNot gradedqualityCmaintenanceMCP server that aggregates job listings from Remotive and Arbeitnow, with local SQLite caching, application tracking, and saved searches.67 npmMIT