Skip to main content
Glama
job-search-mcp
by ananta888

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 fetch

Tests 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 mypy

Verwendung

Der MCP-Server ist über den installierten Einstiegspunkt verfügbar:

export ALLOW_EXTERNAL_PORTALS=1
.venv/bin/job-search-mcp

OpenCode verwendet denselben Einstieg über .opencode/opencode.json. Nach der Installation genügt daher:

export ALLOW_EXTERNAL_PORTALS=1
opencode

Das 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 Berichte

Mehr 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 tools
analysiere_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

    C2.5/5.0

    Scored across 13 tools

    Disambiguation2/5

    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.

    Naming Consistency2/5

    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.

    Tool Count4/5

    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.

    Completeness3/5

    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

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      B
      quality
      C
      maintenance
      A 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.
      1
      1
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      Unified 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
    • A
      license
      A
      quality
      D
      maintenance
      MCP 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.
      4
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      MCP server that aggregates job listings from Remotive and Arbeitnow, with local SQLite caching, application tracking, and saved searches.
      67 npm
      MIT