jobfinder
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-hereSpeichere 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/activateaus, 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-mcpErsetze /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 |
|
Windows |
|
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 | Seite | Wo du es bekommst |
| Adzuna (weltweit) | |
| Reed (UK) | |
| Jooble (weltweit) | |
| Careerjet (weltweit) |
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 | Anbieter | Wo du es bekommst | Hinweise |
| SerpApi | Kostenloses Monatskontingent, danach kostenpflichtig | |
| 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-hereSetze 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 NigeriaWo Schlüssel abgelegt werden
Eine dieser Optionen, je nachdem, was dir passt:
Eine Datei, die du selbst benennst, über
JOBFINDER_ENV=/path/to/your.env.envin dem Ordner, aus dem du den Befehl ausführst~/.jobfinder/.env– eine gute Wahl, wenn du einen Schlüsselsatz für jedes Projekt haben möchtest.envim 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 |
| Nur Anzeigen, die in den letzten 7 Tagen veröffentlicht wurden (Standard: 30) |
| Alles verwerfen, dessen veröffentlichtes Gehalt darunter liegt |
| Auch Anzeigen verwerfen, die gar kein Gehalt angeben |
| Ein schnellerer, oberflächlicherer Durchlauf – weniger Detailabrufe und weniger API-Aufrufe |
| Nur Regeln. Keine API-Aufrufe, keine Kosten |
| Mit gebündelten Beispieldaten ausführen – gut zum Ausprobieren |
| Die Tabelle nach Abschluss nicht öffnen |
| Die Berichte woanders schreiben |
| Wo du arbeiten möchtest. Wird aus deinem Lebenslauf gelesen, wenn nicht angegeben |
| Ein langsamerer, gründlicherer Durchlauf |
| Die erneute Prüfung überspringen, ob jede Anzeige noch offen ist |
| Dieselbe Wahl wie |
| Den Lauf auf benannte Konnektoren beschränken – siehe |
| Nur Startups, Scale-ups und mittelgroße Firmen |
| Rollen behalten, die auf Märkte beschränkt sind, die normalerweise unter deiner Untergrenze zahlen |
| Nie anhalten, um nach einem fehlenden Schlüssel zu fragen; diese Plattformen überspringen |
| 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 failedcheck 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-llmDas 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.
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
- AlicenseNot gradedqualityFmaintenanceEnables 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.34MIT
- AlicenseNot gradedqualityAmaintenanceEnables job search and scraping across multiple job boards (LinkedIn, Indeed, Glassdoor, etc.) with advanced filtering, directly from Claude Desktop or other MCP clients.5MIT
- FlicenseAqualityDmaintenanceTransforms 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
- AlicenseAqualityBmaintenanceA 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.10791MIT
Related MCP Connectors
AI job search MCP — fact-checked jobs, application tracker, alerts. ChatGPT, Claude, Cursor.
AI job search for Claude, ChatGPT, Cursor. 170K+ jobs, 3,800+ companies. OAuth or stdio.
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/MajidAli2006/jobfinder'
If you have feedback or need assistance with the MCP directory API, please join our Discord server