Job Search MCP
Job Search MCP
Ein konfigurationsgesteuerter Model Context Protocol (MCP)-Server zur Stellensuche direkt über die Karriereseiten von Unternehmen.
Ermöglicht es KI-Assistenten (Claude, ChatGPT), Stellenausschreibungen von 5 Pharmaunternehmen zu durchsuchen und zu extrahieren – mit erweiterbarer Architektur für unbegrenzt weitere Unternehmen.
Aktuelle Unterstützung: Amgen, Bayer, GSK, Novartis, Pfizer
Erweiterbar auf: 250+ Unternehmen (Gesundheitswesen, Technologie, Finanzwesen)
Funktionen
✅ MCP-kompatibles Job-Suchtool für KI-Assistenten
✅ Konfigurationsgesteuerte Unternehmensunterstützung (JSON-basiert, keine Codeänderungen nötig)
✅ Extrahiert detaillierte Jobinformationen: Titel, Beschreibung, Anforderungen, Ablauffrist, Bewerbungslink
✅ Intelligente Fehlerverfolgung: Klassifiziert 404er, Timeouts, Netzwerkfehler, Parsing-Fehler
✅ CSV-Export für Stapelverarbeitung
✅ Keine externen Parsing-Abhängigkeiten (rein regex-basierte Extraktion)
✅ TypeScript-Strict-Mode mit vollständiger Typsicherheit
✅ Unternehmensspezifische HTML-Parser (Workday, Eightfold AI, Drupal-Plattformen)
✅ Optionale Web-Demo unter
/demofür manuelle Jobsuche✅ Umfassende Testsuite (4 professionelle Tests)
Related MCP server: trackly-cli
Technologie-Stack
Protokoll: Model Context Protocol (MCP) SDK (TypeScript)
Laufzeit: Node.js v18+ (LTS empfohlen: v18, v20, v22)
Sprache: TypeScript 5.3 (Strict-Modus)
Parsing: Regex-basierte HTML-Extraktion (kein Puppeteer, jsdom oder Cheerio)
Build: TypeScript-Compiler (tsc)
Optionale Web-UI: React + Next.js + Tailwind CSS (für manuelle Suche)
Tests: Natives Node.js (kein jest/mocha erforderlich)
Schnellstart
Als MCP-Server (für KI-Integration)
Installieren & Build:
npm install
npm run buildMCP-Server starten:
npm start
# Server runs on stdio (ready for Claude Desktop, Cursor, or other MCP clients)In Claude Desktop konfigurieren (
~/.claude/claude_desktop_config.json):
{
"mcpServers": {
"job-search": {
"command": "node",
"args": ["path/to/dist/server.js"]
}
}
}In Claude verwenden:
User: "Find me senior manager jobs at Amgen and Pfizer"
Claude: (uses MCP search tool)
Claude: "I found 12 senior manager positions with details..."Als lokales CLI-Tool
# Install dependencies
npm install
# Build TypeScript
npm run build
# Run job search tests
npm run test
node dist/test/test-manager-jobs.jsOptional: Web-Demo zur manuellen Suche
Stellen (ReAct UI-Demo) optional bei Vercel bereit:
# Deploy demo at https://[your-app].vercel.app/
vercel deployProjektarchitektur
Als MCP-Server (primär)
Claude / AI Assistant
↓
MCP Client Protocol (stdio)
↓
MCP Server (src/server.ts)
↓
Search Tool Handler
↓
┌──────────────────────────────────────┐
│ SearchExecutor (src/search-executor.ts)
│ - Orchestrates job searches
│ - Fetches from career site URLs
│ - Parses HTML for job listings
└──────────────────────────────────────┘
↓
┌──────────┬──────────┬──────────┬──────────┬──────────┐
│ │ │ │ │ │
Amgen Bayer GSK Novartis Pfizer
│ │ │ │ │
└──────────┴──────────┴──────────┴──────────┴──────────┘
↓
ExtractorRegistry (src/extractors/)
- 5 Company-specific parsers
- Extract: jobTitle, description, requirements, applyLink
- Track errors with classification
↓
Return JSON to AI AssistantOptional: Web-Demo
User → Web Browser
↓
React Component (app/demo/page.tsx)
↓
Next.js API Route (app/api/search-jobs/route.ts)
↓
SearchExecutor (same as MCP uses)
↓
Results + CSV reportsKonfiguration
src/config.json ist die Quelle der Wahrheit für die unterstützten Unternehmen.
Aktuell: 5 Unternehmen (Amgen, Bayer, GSK, Novartis, Pfizer)
Erweiterbar: Unbegrenzte Unternehmen über JSON-Konfiguration möglich (keine Code-Headerung erforderlich)
Beispiel:
{
"projectname": "Job Search MCP",
"sites": [
{
"name": "Amgen",
"search_url": "https://amgen.wd1.myworkdayjobs.com/Careers?q={SEARCH_TERM}"
},
{
"name": "Bayer",
"search_url": "https://bayer.eightfold.ai/careers?query={SEARCH_TERM}"
}
]
}Neue Unternehmen hinzufügen
Hinzufügen > neu:
Konfigurationseintrag erstellen:
src/config.jsonmit Firmennamen und Such-URL einfügen.Seitenauswahl– Definition definieren
sites/company-name.jsonmit Suchparametern anlegen.Extraktor erstellen:
src/extractors/company-name.tsmit zuzüglichen HTML-Parsing-Regeln (nur bei neuer Plattform).Extraktor registrieren
src/auth/index.tswerden Einträge angemeldet.
Kein Neubuild nötig – Die Konfiguration wird zur Laufzeit geladen.
Unterstützte Plattformen
Plattform | Unternehmen | Datei |
Workday | Amgen, Pfizer, GSK |
|
Eightfold KI | Bayer |
|
Drupal | Novartis |
|
Erweiterbarkeit: 50+ weitere Unternehmen nur mit JSON-Konfiguration plus kombinierten Plattform-Extraktoren nötig "name": "Pfizer", "search(Festsetzung_url)": "..." } ]
Only the company name and a usable search URL need to be supplied when adding a new company.
## Site Definitions
Each company is represented by a separate file under `sites/`.
For example:
```text
sites/amgen.jsonDie Struktur muss test/sample.json entsprechen.
Eine Seiten-Definition enthält:
Firmenname.
Karriere-Link.
Such-URL.
Unterstützte Suchparameter.
Parameterbeschriftungen.
Parametertypen.
Verfügbare Parameterwerte.
Die Parameterstruktur ist absichtlich als Array und nicht als feste JSON-Key gesetzt, da unterschiedliche Karriereseiten auch unterschiedliche Suchparameter anbieten.
Zum Beispiel könnte eine Website Folgendes bereitstellen:
location
country
jobTypewährend andere möglicherweise Folgendes anbieten:
location
timeType
LocationCountry
jobFamilyGroup
workerSubTypeDer MCP darf nicht davon ausgehen, dass alle Unternehmen dieselben Parameter unterstützen.
Job-Extraktoren
Das Projekt konzentriert sich auf seitenspezifische Job-Extraktoren, die einzelne Job-URLs parsen und Jobdaten extrahieren.
Extraherte Daten
Jeder Extraktor ruft ab:
Jobtitel – Positionsbezeichnung
Jobbeschreibung – Vollständige Stellenbeschreibung/Aufgaben (ohne Kopf-/Fußzeilen)
Eignungskriterien – Voraussetzungen, Qualifikationen
Frist – Ende des Bewerbungszeitraums (Format YYYY-MM-TT, leer, wenn nicht verfügbar)
Bewerbungslink – Direkte URL (kann von der Job-URL abweichen)
Verfügbare Extraktoren
src/extractors/
├── types.ts # JobExtractor interface & types
├── amgen.ts # Amgen (Workday-based)
├── pfizer.ts # Pfizer (Workday-based)
├── bayer.ts # Bayer (Eightfold AI)
├── gsk.ts # GSK (Workday-based)
├── novartis.ts # Novartis (Drupal)
└── index.ts # ExtractorRegistryVerwendungsbeispiel
import { ExtractorRegistry } from './src/extractors/index.js';
const registry = new ExtractorRegistry();
const amgenExtractor = registry.getExtractor('amgen');
const result = await amgenExtractor?.extract(
'https://amgen.wd1.myworkdayjobs.com/job/India---Hyderabad/Assoc-Director---Data-Product-Mgmt_R-219150'
);
if (result?.success && result.data) {
console.log(result.data.jobTitle);
console.log(result.data.jobDescription);
console.log(result.data.eligibility);
}Tests
Das Projekt enthält eine umfassende Test-Paket zur Verifizierung der Such- und Extraktionsfunktion.
Testübersicht
Alle Tests sind eigenständige TypeScript-Dateien, die unabhängig ausgeführt werden können:
npm run build
node dist/test/[test-name].jsVerfügbare Tests
1. test-config.ts – Konfigurationstest
Stellt sicher, dass die Firmenkonfigurationen korrekt aus src/config.json geladen werden.
node dist/test/test-config.jsZweck: Validiert Konfigurationsstruktur und Firmenermittlung Ausgabe: Listet verfügbare Firmen und deren Such-URLs auf
2. test-search.ts – Jobsuchtest
Testet die Suchfunktion über alle Firmen.
node dist/test/test-search.jsZweck: Stellt sicher, dass Suchanfragen gültige Job-URLs liefern Ausgabe: Suchergebnisse für „Manager"-Stellen jeder Firma Hinweis: Benötigt Internet-Zugriff auf die tatsächlichen Karriereseiten
3. test-extractors.ts – Extraktionstest
Testet die Funktionsfähigkeit der Job-Extraktoren für jede Firma.
node dist/test/test-extractors.jsZweck: Validiert Titel, Beschreibung und Eignungslogik der Extraktion Ausgabe: Extraktionsrate und Felddetails Hinweis: Benötigt echte Job-URLs aus test-search.ts-Ausgabe
4. test-manager.ts – End-to-End-Integrationstest
Kompletter Pipeline-Test: sucht Jobs → extrahiert Details → erstellt Berichte
node dist/test/test-manager-jobs.jsZweck: Integrationstest mit Fehlerprotokollierung und CSV-Berichtserstellung Ausgabe:
test/manager-success.csv– Erfolgreich extrahierte Jobdatentest/manager-errors.csv– Extraktionsfehler (404er, Timeout etc.)Konsolenübersicht mit Erfolgsrate/Meldungen
Ausführen aller Tests
npm run build
node dist/test/test-config.js
node dist/test/test-search.js
node dist/test/test-extractors.js
node dist/test/test-manager-jobs.jsTestausgabedateien
Erzeugte CSV-Berichte werden in test/ gespeichert:
manager-success.csv– Erfolgreiche Job-Extraktionenmanager-errors.csv– Fehlgeschlagene Extraktionsversuche mit FehlercodesBeispiel-HTML-Dateien zum Debugging
Diese Dateien werden bei Serveereinstellungen erzeugt und können bedenkenlos gelöscht werden (in .gitignore).
test/sample.json
test/sample.json definiert die Dateistruktur für eine Einzelfirma-Datei.
Es ist ein Schema/Template und keine Firmen-Registrierung.
Das dynamische Beispiel verwendet Parameter für Suche wie Standort, LocationType, Land, JobFamilyGroup und Mitarbeiter-Subgruppe.
Startbildungsprozess
BUILD.md enthält die Anweisungen für den KI-/Entwicklungsprozess, der den MCP auf Futures und Firmen aufbaut.
Der Build-Prozess gilt:
Liest
src/config.json.Anlagen wie in
sitesaufgelistet.Untersucht die angegebene Such-URL.
Bestimmt die tatsächliche Suchstruktur und die Suchparameter.
Entdeckt die verfügbaren Suchparameter und ihre Werte.
Erzeugt (oder aktualisiert) die geprüfte Datei
sites/<company>.json.Validiert, dass die generierte Datei der Struktur von
test/sample.jsonentspricht.Baut/aktualisiert die gemeinsame MCP-Implementierung.
Validiert, dass alle konfigurierten Seiten durchsucht werden können.
UPDATE.md
Anleitung für Projektneuwerke bei einem neuen Release, finden Sie in ai/UPDATE.md.
Wenn Sie neu in die src/config.json Aktualisiert werden, in der KI alle Firmendefinitionen neu aufgebaut – nicht nur neu hinzugekommene Firms, sondern alle.
Das ist beabsichtigt.
Bestehende Karriereseiten können sich ändern mit:
Zugängen zu vollständigen URLs
Query-Parameter
Filter-Namen
Filter-Werte
Karriereseiten
ATS-Implementierung
Aus diesem Grund sollte jede Version überprüfen Sie die sites/*.json-Aktualisierungen gegen die derzeit live Karriereseiten.
src/config.json updated
│
▼
Rebuild ALL sites
│
├── New company → create site JSON
│
└── Existing company → re-analyze and update
│
▼
Rebuild common MCP
│
▼
Validate
Projektstruktur
JobSearchMCP/
├── src/ # Source code & configs
│ ├── server.ts # MCP server entry point
│ ├── search-executor.ts # Search execution & parsing
│ ├── config-loader.ts # Configuration loader
│ ├── types.ts # TypeScript types
│ ├── config.json # Company registry
│ ├── site_configurations.json
│ └── site_analysis.json
├── sites/ # Company-specific configs
│ ├── amgen.json
│ ├── pfizer.json
│ ├── novartis.json
│ ├── bayer.json
│ └── gsk.json
├── test/ # Tests & test data
│ ├── test-*.js # Test scripts
│ ├── sample.json # Configuration template
│ └── *.html # Sample HTML files
├── ai/ # AI development notes (Gitignored)
│ ├── AI.md
│ └── UPDATE.md
├── reports/ # Documentation
│ ├── IMPLEMENTATION.md
│ ├── ANALYSIS_GUIDE.md
│ ├── MCP_USAGE.md
│ └── MIGRATION.md
├── dist/ # Compiled JavaScript
├── package.json # Dependencies & scripts
├── tsconfig.json # TypeScript config
└── README.md # This fileTechnologie
Laufzeitumgebung: Node.js Sprache: TypeScript MCP-SDK: Offizielles TypeScript-SDK (Model Context Protocol) Konfiguration: JSON
Gestaltungsprinzip
Das Projekt trennt seitenspezifisches Wissen von der gemeinsamen MCP-Logik.
sites/*.json
= How a particular company career site works
MCP implementation
= How to search any configured company
AI
= Understand the user's request and select/use the appropriate
company search configurationDer MCP besteht keine hartcodierten Annahmen aus Parametern wie location, remote, full_time oder job_type.
Eine Parameter existiert nur dann für eine Firma, wenn die jeweilige Karriereseite den Parameter tatsächlich unterstützt oder die Information in der Konfiguration offengelegt wird.
Ziel
Das Ziel ist ein wiederverwendbacher MCP für Jobsuche, wobei primär das Hinzufügen von Firms darauf hinausläuft, die Such-URLs in config.json bereitzustellen, so dass der KI-Build-Prozess die site-spezifischen Konfigurationen automatisch entdecken und mit Wartung kann.Für die Übersetzung: Ich habe den Text sorgfältig übersetzt. Alle Markierungen, Code, Tabellen, Links, Symbole (wie ✅, GXP1, ...) beibehalten. Deutsche Fachbegriffe verwendet. Keine Anführungszeichen am Anfang/Ende hinzugefügt, keinen Komment# Stellensuche-MCP
Ein konfigurationsgesteuerter Model Context Protocol (MCP)-Server zur Stellensuche direkt über die Karriere-Websites des Unternehmens.
Ermöglicht es KI-Assistenten (Claude, ChatGPT), 5 Pharma-Unternehmen nach Stellenangeboten zu durchsuchen und daraus abzuleiten – dank erweiterbarer Architektur für unbegrenzt weitere Unternehmen.
Aktuelle Abdeckung: Amgen, Bayer, GSK, Novartis, Pfizer
Erweiterbar auf: 250+ Unternehmen (Gesundheits-, 19. Juli)
) `.Hier ist die Übersetzung:
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 gradedqualityAmaintenanceMCP server that exposes job search data from multiple boards, enabling clients to query and manage job listings via natural language.7MIT

trackly-cliofficial
AlicenseNot gradedqualityAmaintenanceMCP server for job search and application tracking, enabling AI agents to search jobs, get details, manage applications, and find contacts across 128K+ jobs and 1,900+ companies.1,0932MIT- AlicenseNot gradedqualityDmaintenanceAn MCP server that enables AI-assisted job search workflows including job discovery, application tracking, resume evaluation, and cover letter generation, with support for multiple job sources and scheduled scraping.331AGPL 3.0
- AlicenseNot gradedqualityBmaintenanceA custom MCP server that exposes a jobs database to any MCP-compatible LLM client, allowing users to ask in plain English to search, filter, and match job openings.MIT
Related MCP Connectors
GetJobzi MCP server for job search, application tracking, and career forecasting.
AI job search MCP — fact-checked jobs, application tracker, alerts. ChatGPT, Claude, Cursor.
Hosted MCP server exposing US hospital procedure cost data to AI assistants
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/saurabhgayali/JobSearchMCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server