Skip to main content
Glama
MajidAli2006

jobfinder

by MajidAli2006

Job Finder

Findet Jobs für jeden Beruf, in jedem Land – aus einem Satz oder aus deinem Lebenslauf – und sortiert sie nach deiner realistischen Chance, in die engere Auswahl zu kommen.

jobfinder daily --query "electrician jobs in Dubai"

Du erhältst eine Tabelle auf deinem Desktop, die besten zuerst. Sie öffnet sich, wenn der Lauf abgeschlossen ist.

Alles läuft auf deinem Rechner. Dein Lebenslauf verlässt ihn nie, außer als Text, der unter deinem eigenen Schlüssel an die API von Anthropic gesendet wird, und deine Suchbegriffe gehen an die von dir aktivierten Jobbörsen – genau so, als würdest du sie direkt auf diesen Seiten eingeben.


Schnellstart

Vier Schritte. Dauert etwa fünf Minuten.

1. Installieren

git clone https://github.com/MajidAli2006/jobfinder.git
cd jobfinder
python3 -m venv .venv
.venv/bin/pip install -e ".[all]"

2. Einen API-Schlüssel besorgen

Gehe zu console.anthropic.com/settings/keys, melde dich an, klicke auf Create Key und kopiere ihn. Er beginnt mit sk-ant-.

Dies ist der einzige Schlüssel, den das Tool tatsächlich benötigt.

3. Lege den Schlüssel in einer Datei namens .env ab

cp .env.example .env

Öffne .env in einem beliebigen Texteditor und füge deinen Schlüssel nach dem = ein, ohne Anführungszeichen und ohne Leerzeichen:

ANTHROPIC_API_KEY=sk-ant-your-key-here

Speichere es. .env ist git-ignoriert, daher wird dein Schlüssel nie eingecheckt.

4. Prüfe, ob es funktioniert hat, und suche dann

.venv/bin/jobfinder setup
.venv/bin/jobfinder daily --query "warehouse jobs in Leeds"

Tipp: Führe einmal source .venv/bin/activate aus, und du kannst das Präfix .venv/bin/ für den Rest deiner Terminal-Sitzung weglassen.


Related MCP server: JobSpy MCP Server

Nutzung über Claude (MCP)

Dieses Tool ist auch ein MCP-Server, du kannst Claude also einfach bitten, für dich zu suchen.

Claude Code – ein Befehl:

claude mcp add --scope user jobfinder -- /full/path/to/jobFinder/.venv/bin/jobfinder-mcp

Ersetze /full/path/to/jobFinder durch den Ort, an dem du es geklont hast. Führe pwd im Ordner aus, um ihn zu erhalten.

Claude Desktop – öffne claude_desktop_config.json und füge hinzu:

{
  "mcpServers": {
    "jobfinder": {
      "command": "/full/path/to/jobFinder/.venv/bin/jobfinder-mcp"
    }
  }
}

Die Konfigurationsdatei befindet sich unter:

Plattform

Pfad

macOS

~/Library/Application Support/Claude/claude_desktop_config.json

Windows

%APPDATA%\Claude\claude_desktop_config.json

Starte Claude Desktop danach neu. Cursor und Windsurf verwenden dasselbe command-Format in ihren eigenen MCP-Einstellungen.

Dann frag einfach:

„Finde mir Remote-React-Vertragsarbeit in Europa"

Vier Tools sind verfügbar: check_setup (bestätigt, dass die Schlüssel funktionieren), preview_search (zeigt, wie eine Anfrage verstanden wurde, bevor du etwas ausgibst), find_jobs (der vollständige Lauf – dauert ein paar Minuten und schreibt die Tabelle) und list_platforms (welche Jobseiten ein Land bedienen).


API-Schlüssel – was du brauchst und was nicht

Ohne jegliche Schlüssel durchsucht das Tool weiterhin die öffentlichen Einträge von LinkedIn, Karriereportale von Arbeitgebern (Greenhouse, Lever, Ashby, Workable und andere), zehn Remote-Jobbörsen, Hacker News „Who is hiring" und jedes regionale Board, das standardmäßiges Job-Markup veröffentlicht.

Mit dem Anthropic-Schlüssel (Schritt 2 oben) versteht es auch Freitextanfragen, liest deinen Lebenslauf und bewertet Eignung und Passung. Ohne ihn kannst du weiterhin suchen, musst aber in candidate.local.json angeben, wonach gesucht werden soll, statt in einem Satz – siehe Fehlerbehebung.

Alles unten ist optional. Jeder fügt weitere Jobseiten hinzu. Überspringe einen davon, und das Tool meldet diese Quelle einfach als ungenutzt – es schlägt nie fehl.

Kostenlose Schlüssel, Self-Service

Registriere dich, kopiere den Schlüssel und füge ihn in .env ein.

Zu .env hinzufügen

Seite

Wo du es bekommst

ADZUNA_APP_ID and ADZUNA_APP_KEY

Adzuna (weltweit)

developer.adzuna.com

REED_API_KEY

Reed (UK)

reed.co.uk/developers

JOOBLE_API_KEY

Jooble (weltweit)

jooble.org/api/about

CAREERJET_API_KEY

Careerjet (weltweit)

careerjet.com/partners/api

Indeed, Glassdoor, Bayt, Naukri und die anderen erreichen

Diese Seiten – plus Rozee und foundit – blockieren direkte Anfragen mit einem CAPTCHA, aber alle veröffentlichen absichtlich in Googles Job-Index. Der Weg führt also über Googles Index, und mehrere Anbieter verkaufen lizenzierten Zugang dazu.

Sie liefern alle dieselben Einträge, weil es alles Googles Daten sind. Die Wahl betrifft Preis und kostenloses Kontingent, nicht die Abdeckung. Wähle, was dir gefällt, und trage den Schlüssel genau wie die anderen in .env ein – das Tool verwendet den, den es findet:

Zu .env hinzufügen

Anbieter

Wo du es bekommst

Hinweise

SERPAPI_KEY

SerpApi

serpapi.com

Kostenloses Monatskontingent, danach kostenpflichtig

SEARCHAPI_KEY

SearchApi.io

searchapi.io

Gleiche Daten, kostenloses Kontingent, dann kostenpflichtig

Verwende die Variable, die zu dem Ort passt, an dem du dich angemeldet hast. Die beiden sind nicht austauschbar: Ein SearchApi.io-Schlüssel in SERPAPI_KEY wird mit 401 Invalid API key abgelehnt. SerpApi-Schlüssel sind 64 Hexadezimalzeichen; die von SearchApi.io sind kürzer. Wenn du eine Ablehnung erhältst, prüfe, welche Seite den Schlüssel ausgestellt hat. Führe jobfinder sources aus, und es wird dir sagen, welchen Anbieter es verwendet.

SERPAPI_KEY=your-key-here

Setze nur einen. Wenn beide vorhanden sind, wird der zuerst konfigurierte Anbieter verwendet, und keiner ist erforderlich – ohne sie läuft das Tool weiterhin, überspringt diese Seiten einfach und erwähnt das in der Zusammenfassung des Laufs.

Wenn die wichtigste Jobbörse deines Landes nicht in der obigen kostenlosen Liste steht, ist dies der Schlüssel, den es sich lohnt zu haben: Er erreicht diese Seiten in jedem Land. Die Abdeckung variiert je nach Land und Formulierung der Suche – Googles Index hat viel für „software engineer" in Pakistan und „full stack developer" in den VAE, und für manche andere Kombinationen gar nichts. Ein leeres Ergebnis wird als solches gemeldet, nicht als defekter Schlüssel.

Genehmigung erforderlich

INDEED_PUBLISHER_ID, ZIPRECRUITER_API_KEY, SEEK_API_KEY, STEPSTONE_API_KEY, BAYT_API_KEY, NAUKRI_API_KEY, ROZEE_API_KEY – das sind Partnerprogramme, die dich zuerst genehmigen müssen. Die meisten Menschen brauchen sie nicht; der SerpApi-Schlüssel erreicht dieselben Einträge.

Um genau zu sehen, welche Plattformen dein Land bedienen und welche Schlüssel sie benötigen:

jobfinder setup --region Nigeria

Wo Schlüssel abgelegt werden

Eine dieser Optionen, je nachdem, was dir passt:

  1. Eine Datei, die du selbst benennst, über JOBFINDER_ENV=/path/to/your.env

  2. .env in dem Ordner, aus dem du den Befehl ausführst

  3. ~/.jobfinder/.env – eine gute Wahl, wenn du einen Schlüsselsatz für jedes Projekt haben möchtest

  4. .env im Projektordner

Alle werden gelesen und kombiniert. Für einen Schlüssel, der in mehr als einer Datei gesetzt ist, gewinnt der weiter oben in dieser Liste; ein Schlüssel, den nur die untere Datei hat, wird trotzdem übernommen. Du kannst also gemeinsame Schlüssel in ~/.jobfinder/.env und projektspezifische in der .env des Projekts aufbewahren.

Echte Umgebungsvariablen schlagen jede Datei, also gewinnt export ADZUNA_APP_ID=.... Beachte, dass das Gegenteil nicht gilt: Das Entfernen einer Variable in deiner Shell blendet einen Schlüssel, den eine .env-Datei ebenfalls definiert, nicht aus. Das Format ist ein KEY=value pro Zeile, ohne Anführungszeichen:

ANTHROPIC_API_KEY=sk-ant-...
ADZUNA_APP_ID=12345678
ADZUNA_APP_KEY=abcdef...

Tägliche Nutzung

Sag, was du willst, in einfachen Worten. Keine Filter zu konfigurieren:

jobfinder daily --query "plumber jobs in Lagos"
jobfinder daily --query "remote React contract, Europe"
jobfinder daily --query "part time warehouse work near Leeds"
jobfinder daily --query "graduate marketing internship, London"

Oder gib ihm deinen Lebenslauf und lass es herausfinden, was du tust:

jobfinder daily --cv ~/cv.pdf
jobfinder daily --cv ~/cv.pdf --query "only remote, minimum £45k"

Der Lebenslauf wird auf deinem Rechner gelesen. Nur der Text wird an Anthropic gesendet, um dein Suchprofil zu erstellen und zu bewerten, wie gut jede Anzeige passt.

Nützliche Flags:

Flag

Was es tut

--days 7

Nur Anzeigen, die in den letzten 7 Tagen veröffentlicht wurden (Standard: 30)

--min-salary 60000

Alles verwerfen, dessen veröffentlichtes Gehalt darunter liegt

--require-salary

Auch Anzeigen verwerfen, die gar kein Gehalt angeben

--quick

Ein schnellerer, oberflächlicherer Durchlauf – weniger Detailabrufe und weniger API-Aufrufe

--no-llm

Nur Regeln. Keine API-Aufrufe, keine Kosten

--offline

Mit gebündelten Beispieldaten ausführen – gut zum Ausprobieren

--no-open

Die Tabelle nach Abschluss nicht öffnen

--output-dir PATH

Die Berichte woanders schreiben

--region "USA, UK"

Wo du arbeiten möchtest. Wird aus deinem Lebenslauf gelesen, wenn nicht angegeben

--deep

Ein langsamerer, gründlicherer Durchlauf

--no-verify

Die erneute Prüfung überspringen, ob jede Anzeige noch offen ist

--tier quick|normal|deep

Dieselbe Wahl wie --quick/--deep, direkt benannt

--sources a,b

Den Lauf auf benannte Konnektoren beschränken – siehe jobfinder sources

--small-only

Nur Startups, Scale-ups und mittelgroße Firmen

--allow-low-rate-markets

Rollen behalten, die auf Märkte beschränkt sind, die normalerweise unter deiner Untergrenze zahlen

--no-prompt

Nie anhalten, um nach einem fehlenden Schlüssel zu fragen; diese Plattformen überspringen

-v, --verbose / -q, --quiet

Jeden Schritt anzeigen oder nur Warnungen und Fehler. Verfügbar bei jedem Befehl

Jedes Flag oben funktioniert für jedes Land. --region akzeptiert ein Land, eine Stadt, einen einheimischen Namen oder eine Liste – "uae", "Deutschland", "Lagos", "USA, UK" werden alle aufgelöst.

Zu --min-salary: Eine Anzeige, die kein Gehalt angibt, wird behalten und mit „Gehalt nicht veröffentlicht" markiert, da nicht nachgewiesen werden kann, dass sie unter deiner Untergrenze liegt. Füge --require-salary hinzu, wenn du diese gar nicht sehen möchtest. Wenn deine Anfrage selbst eine Zahl nennt – --query "electrician jobs, minimum $60k" – werden Anzeigen ohne veröffentlichtes Gehalt stattdessen in das Blatt „Prospects" verschoben.


Was du bekommst

Eine Tabelle in ~/Desktop/job finder/ mit dreizehn Blättern: Quick Apply (nur das Wesentliche), Hot Leads, All Qualified Jobs, dann aufgeteilt nach Vollzeit, Teilzeit, Vertrag, Freelance, Startups und Partnerschaften, plus Prospects (Eignung unklar – nachfragen lohnt sich), Long Shots (qualifiziert, aber geringe Antwortchance), Companies & Contacts und eine Search Summary, die zeigt, was gefiltert wurde und warum.

Dieselben Daten werden daneben als .csv, .json und eine durchsuchbare .html-Seite geschrieben.

Match % ist eine Schätzung der Chance, in die engere Auswahl zu kommen, nicht eine Überschneidung von Schlüsselwörtern. Deine Lebenslauf-Passung setzt die Obergrenze; von dort aus bewegt sich die Schätzung je nachdem, was die Anzeige über den Wettbewerb verrät. Jede Zeile zeigt ihre eigene Berechnung in der Spalte „Why this rank":

fit 87 × 1.05 = 91 — applicant count not published (-4%) · posted in the
last 24 hours (+3%) · scoped to United Kingdom, smaller pool (+6%) ·
applying straight into the employer's own system (+5%)

So rangiert ein perfekter Treffer hinter 200 Bewerbern unter einem guten Treffer, den noch niemand gefunden hat – die ehrliche Antwort darauf, wohin deine Zeit fließt.


Andere Befehle

jobfinder setup                 # which keys are set, which are missing
jobfinder setup --region India  # what serves a particular country
jobfinder sources               # every connector and its status
jobfinder sources --test        # live-check every configured key
jobfinder status                # what previous runs found
jobfinder platforms --region Kenya
jobfinder platforms --region Kenya --trade "solar installer"
jobfinder check --title "..." --description "..."   # why one advert passed or failed

check akzeptiert auch --company, --location und --url, mit denen es den Arbeitgeber, die Eignung und die Bewerbungsweise beurteilen kann, statt nur den Wortlaut.

Um eine Suche zu deiner Standard-Suche zu machen, sodass ein nacktes jobfinder daily sie ausführt, erstelle candidate.local.json im Projektordner:

{
  "home_country": "Nigeria",
  "default_search": {
    "label": "Electrical",
    "query": "electrician jobs in Lagos",
    "core_terms": ["electrician", "electrical"]
  }
}

Es ist git-ignoriert. Ohne sie fragt ein nacktes jobfinder daily nach dem Suchziel, statt zu raten.


Fehlerbehebung

„Ich weiß nicht, nach welcher Art von Arbeit ich suchen soll" – gib ihm ein --query oder ein --cv. Es erfindet keine Suche für dich.

„Eine benutzerdefinierte Suche benötigt die Claude-Urteilsebene" – ein Freitext---query muss zuerst vom Modell gelesen werden, bevor gesucht werden kann, daher wird ANTHROPIC_API_KEY benötigt. Der Lauf stoppt mit Exit-Code 1 und schreibt keinen Bericht. Setze entweder den Schlüssel oder gib die Suche selbst in candidate.local.json an, wie unten gezeigt.

Keine Jobs gefunden — Erweitern Sie das Zeitfenster mit --days 30, prüfen Sie, dass Ihr Land ausgeschrieben ist, und führen Sie jobfinder setup --region <your country> aus, um zu sehen, ob die für Sie zuständigen Websites einen Schlüssel benötigen, den Sie noch nicht gesetzt haben.

"ANTHROPIC_API_KEY is not set" — Die Datei .env ist nicht dort, wo das Tool sie sucht, oder der Schlüssel ist in Anführungszeichen gesetzt. Führen Sie jobfinder setup aus, um zu sehen, was gefunden wurde. Denken Sie daran, dass die Datei .env heißen muss und nicht env oder .env.txt.

Auf Windows passiert nichts — Installieren Sie mit pip install -e ".[all]" anstatt direkt aus dem Quellcode zu starten; Windows benötigt das gebündelte tzdata-Paket.

Möchten Sie die Funktion sehen, bevor Sie Schlüssel eingerichtet haben? Eine Freitext---query benötigt den Anthropic-Schlüssel, weil jemand Ihren Satz lesen und in eine Suche umwandeln muss. Um ganz ohne Schlüssel zu arbeiten, geben Sie die Suche direkt an — fügen Sie dies in candidate.local.json im Projektordner ein:

{
  "default_search": {
    "label": "Warehouse",
    "query": "warehouse operative",
    "core_terms": ["warehouse", "forklift"]
  }
}

Führen Sie dann die gebündelten Beispielanzeigen aus:

jobfinder daily --offline --no-llm

Das erstellt eine vollständige Tabelle, ohne etwas anderes zu kontaktieren.


Entwicklung

.venv/bin/pip install -e ".[all,dev]"
.venv/bin/python -m pytest tests/ -q      # 661 tests, fully offline
.venv/bin/ruff check job_agent/ tests/

Die Tests benötigen keine Schlüssel und keinen Internetzugriff.


Datenschutz

Ihre CV-Datei bleibt auf Ihrem Gerät — sie wird lokal gelesen, und nur der extrahierte Text wird an die API von Anthropic gesendet, unter Ihrem eigenen Schlüssel, um Ihr Suchprofil zu erstellen und die Eignung zu bewerten. Anzeigentext wird für denselben Zweck an dieselbe API gesendet und nirgendwo sonst hinterlegt.

Ihre Suchbegriffe werden an die von Ihnen aktiven Jobbörsen gesendet, denn so funktioniert die Suche — die gleichen Wörter, die Sie auch auf diesen Websites eintippen würden. Ohne gesetzte Schlüssel bedeutet das: die öffentliche LinkedIn-Suche und die offenen Jobbörsen. Führen Sie jobfinder sources aus, um genau zu sehen, welche aktiv sind.

Keine Daten werden an den Autor dieses Tools gesendet, und es gibt kein Telemetrie. API-Schlüssel werden aus gelesen, die git-ignoriert wird, und aus Protokollen und Fehlermeldungen entfernt — eine fehlgeschlagene Anfrage, die einen Schlüssel in ihrer URL trägt, wirdunbereinigt, bevor sie ausgegeben wird.

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • A
    license
    Not graded
    quality
    F
    maintenance
    Enables users to search for jobs, prefill applications using AI, and automate submissions across major platforms like Lever and Ashby directly from Claude or Cursor. It provides a full suite of tools for managing job queues, profile data, and resumes within a chat interface.
    34
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables job search and scraping across multiple job boards (LinkedIn, Indeed, Glassdoor, etc.) with advanced filtering, directly from Claude Desktop or other MCP clients.
    5
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    Transforms Claude into an AI job-hunting assistant that searches remote job boards, scores roles against your CV, generates tailored cover letters, and logs everything to a Notion tracker.
    11
  • A
    license
    A
    quality
    B
    maintenance
    A personal job-search assistant for Claude Desktop that searches real job boards, scores each job 0–100 for fit, and displays a ranked board for fast triage.
    10
    79
    1
    MIT

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

Latest Blog Posts

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/MajidAli2006/jobfinder'

If you have feedback or need assistance with the MCP directory API, please join our Discord server