Job Search MCP
Job-Suchmaschine
Schnelle, zuverlässige Jobsuche über 5 große Pharmaunternehmen.
Durchsuchen Sie die Karriere-Websites von Amgen, Bayer, GSK, Novartis und Pfizer direkt nach Jobs. Extrahieren Sie Stellenbezeichnungen, Beschreibungen, Anforderungen und Bewerbungslinks sofort.
Demo: https://[your-vercel-app].vercel.app/
Funktionen
✅ Gleichzeitige Suche in 5 Unternehmen
✅ Extraktion detaillierter Jobinformationen (Titel, Beschreibung, Anforderungen, Ablaufdatum)
✅ Verfolgung fehlgeschlagener Extraktionen mit Fehlercodes (404s, Timeouts usw.)
✅ CSV-Berichte mit Ergebnissen generieren
✅ Keine externen Abhängigkeiten, schnelles regex-basiertes Parsing
✅ TypeScript + strenge Typsicherheit
✅ Umfassende Fehlerbehandlung und -klassifizierung
✅ Ratenbegrenzte API (5 Suchen/Tag/IP)
Related MCP server: trackly-cli
Technologie-Stack
Frontend: React + TypeScript + Tailwind CSS
Backend: Next.js + Node.js
Parsing: Regex-basierte HTML-Extraktion (keine schweren Abhängigkeiten)
Laufzeit: Node.js (v18+)
Sprache: TypeScript 5.3+
Build: TypeScript Compiler (tsc)
Bereitstellung: Vercel (empfohlen) oder AWS Lambda
Schnellstart
Demo ausprobieren
Besuchen Sie: https://[your-vercel-app].vercel.app/
Sie werden zur Jobsuch-Oberfläche weitergeleitet. Geben Sie eine Stellenbezeichnung ein, wählen Sie Unternehmen aus und durchsuchen Sie die Ergebnisse sofort.
Lokale Entwicklung
# Install dependencies
npm install
# Build TypeScript
npm run build
# Run a test
node dist/test/test-manager-jobs.js
# Start development server (requires Next.js setup)
npm run devProduktionsbereitstellung
# Deploy to Vercel (recommended)
npm install -g vercel
vercel
# Or deploy to AWS
# See docs/DEPLOYMENT.md for AWS Lambda setupProjektarchitektur
User searches for jobs → Demo page (/app/demo/page.tsx)
↓
React UI Component
- Search input
- Company multi-select
- Sortable results tables
↓
REST API (/api/search-jobs)
↓
┌───────────────┬────────────────┬────────────────┐
│ │ │ │
Amgen Bayer GSK Novartis Pfizer
(Workday) (Eightfold AI) (Workday) (Drupal) (Workday)
│ │ │ │
└───────────────┴────────────────┴────────────────┘
↓
Search Executor (src/search-executor.ts)
- Fetches job URLs from each site
- Parses HTML for job listings
↓
Extractor Registry (src/extractors/)
- Extracts job details from each URL
- Company-specific parsers
- Error tracking & classification
↓
Extraction Helpers (src/extraction-helpers.ts)
- CSV report generation
- Error aggregation
↓
REST API Response (JSON)
↓
Demo Page displays results
- Success table: Jobs with details
- Error table: Failed extractions
- Download CSV buttonsKonfiguration
src/config.json ist die maßgebliche Quelle für die Unternehmen, die das Projekt unterstützt.
Beispiel:
{
"projectname": "Job Search MCP",
"sites": [
{
"name": "Amgen",
"search_url": "https://amgen.wd1.myworkdayjobs.com/Careers?q=Engineer"
},
{
"name": "Pfizer",
"search_url": "..."
}
]
}Beim Hinzufügen eines neuen Unternehmens müssen nur der Firmenname und eine nutzbare Such-URL angegeben werden.
Site-Definitionen
Jedes Unternehmen wird durch eine separate Datei unter sites/ repräsentiert.
Zum Beispiel:
sites/amgen.jsonDie Struktur muss test/sample.json entsprechen.
Eine Site-Definition enthält:
Firmenname
Karriere-URL
Such-URL
Unterstützte Suchparameter
Parameterbezeichnungen
Parametertypen
Verfügbare Parameterwerte
Die Parameterstruktur ist bewusst als Array und nicht als feste JSON-Schlüssel angelegt, da verschiedene Karriere-Websites unterschiedliche Suchparameter bereitstellen.
Zum Beispiel kann eine Website Folgendes bereitstellen:
location
country
jobTypewährend eine andere Folgendes bereitstellt:
location
timeType
LocationCountry
jobFamilyGroup
workerSubTypeDer MCP darf nicht davon ausgehen, dass jedes Unternehmen dieselben Parameter unterstützt.
Job-Extraktoren
Das Projekt enthält sitespezifische Job-Extraktoren, die einzelne Stellenausschreibungs-URLs parsen und detaillierte Informationen extrahieren.
Extrahierte Daten
Jeder Extraktor ruft ab:
Stellenbezeichnung – Positionsname
Stellenbeschreibung – Vollständige Stellenbeschreibung/Aufgaben (ohne Kopf- und Fußzeilen)
Eignung – Anforderungen, Qualifikationen und Fähigkeiten
Ablaufdatum – Bewerbungsschluss (Format JJJJ-MM-TT, leer wenn nicht verfügbar)
Bewerbungslink – Direkte URL zur Bewerbung (kann von der Stellenausschreibungs-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);
}Testen
Das Projekt enthält eine umfassende Testsuite zur Validierung der Such- und Extraktionsfunktionalität.
Übersicht der Testsuite
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 – Konfigurationsladetest
Testet, ob die Unternehmenskonfigurationen korrekt aus src/config.json geladen werden.
node dist/test/test-config.jsZweck: Validiert die Konfigurationsstruktur und die Unternehmenserkennung Ausgabe: Listet verfügbare Unternehmen und deren Such-URLs auf
2. test-search.ts – Jobsuchtest
Testet die Suchfunktionalität über alle Unternehmen.
node dist/test/test-search.jsZweck: Verifiziert, dass Suchen gültige Job-URLs zurückgeben Ausgabe: Suchergebnisse für „Manager“-Jobs von jedem Unternehmen Hinweis: Erfordert Internetverbindung zu den tatsächlichen Karriere-Websites
3. test-extractors.ts – Job-Extraktionstest
Testet, ob die Extraktion von Jobdetails für die Job-URLs jedes Unternehmens funktioniert.
node dist/test/test-extractors.jsZweck: Validiert die Extraktion von Stellenbezeichnung, Beschreibung und Eignung Ausgabe: Extraktionserfolgsrate und Felddetails Hinweis: Erfordert echte Job-URLs aus der Ausgabe von test-search.ts
4. test-manager-jobs.ts – End-to-End-Integrationstest
Vollständiger Pipeline-Test: sucht nach Jobs → extrahiert Details → generiert Berichte
node dist/test/test-manager-jobs.jsZweck: Vollständiger Integrationstest mit Fehlerverfolgung und CSV-Berichtsgenerierung Ausgabe:
test/manager-jobs-success.csv– Erfolgreich extrahierte Jobdatentest/manager-jobs-errors.csv– Extraktionsfehler (404s, Timeouts usw.)Konsolenzusammenfassung mit Erfolgsrate und Fehleraufschlüsselung
Alle Tests ausführen
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
Generierte CSV-Berichte werden im Ordner test/ gespeichert:
manager-jobs-success.csv– Erfolgreiche Job-Extraktionenmanager-jobs-errors.csv– Fehlgeschlagene Extraktionsversuche mit FehlercodesBeispiel-HTML-Dateien zum Debuggen
Diese Dateien werden während Testläufen generiert und können bedenkenlos gelöscht werden. Sie sind in .gitignore.
test/sample.json
test/sample.json definiert die erwartete Struktur für einzelne Unternehmensdateien.
Es ist ein Schema-by-Example/Schema-Vorlage und keine Unternehmensregistrierung.
Das aktuelle Beispiel verwendet Parameter wie location, timeType, LocationCountry, jobFamilyGroup und workerSubType.
BUILD.md
BUILD.md enthält Anweisungen für den KI-/Entwicklungsprozess, der den MCP aus den Unternehmenskonfigurationen erstellt.
Der Build-Prozess sollte:
src/config.jsonlesen.Jedes in
sitesaufgeführte Unternehmen verarbeiten.Die bereitgestellte Such-URL besuchen/analysieren.
Die tatsächliche Karriere-/Suchstruktur des Unternehmens ermitteln.
Die verfügbaren Suchparameter und deren Werte ermitteln.
Die entsprechende Datei
sites/<company>.jsongenerieren oder aktualisieren.Sicherstellen, dass die generierte Datei der in
test/sample.jsondefinierten Struktur folgt.Die gemeinsame MCP-Implementierung erstellen/aktualisieren.
Validieren, dass alle konfigurierten Sites durchsucht werden können.
UPDATE.md
Siehe ai/UPDATE.md für Anweisungen zum Neuaufbau des Projekts, wenn eine neue Version erstellt wird.
Wenn sich src/config.json ändert, muss die KI alle Unternehmensdefinitionen neu erstellen, nicht nur neu hinzugefügte Unternehmen.
Dies ist beabsichtigt.
Bestehende Karriere-Websites können Folgendes ändern:
Such-URLs
Abfrageparameter
Filternamen
Filterwerte
Karriere-Website-Struktur
ATS-Implementierung
Daher sollte jede Version die vorhandenen sites/*.json-Dateien gegen die aktuellen Live-Karriere-Websites erneut prüfen.
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
Laufzeit: Node.js Sprache: TypeScript MCP SDK: Offizielles Model Context Protocol TypeScript SDK Konfiguration: JSON
Designprinzip
Das Projekt trennt sitespezifisches Wissen von gemeinsamer 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 sollte keine fest codierten Annahmen über Parameter wie location, remote, full_time oder job_type enthalten.
Ein Parameter existiert für ein Unternehmen nur dann, wenn die Karriere-Website des Unternehmens ihn tatsächlich unterstützt oder die für die Konfiguration erforderlichen Informationen bereitstellt.
Ziel
Das Ziel ist die Erstellung eines wiederverwendbaren Jobsuch-MCP, bei dem das Hinzufügen von Unternehmen hauptsächlich darin besteht, deren Such-URLs zu config.json hinzuzufügen, sodass der KI-Build-Prozess die sitespezifischen Konfigurationen automatisch ermitteln und pflegen kann.
This server cannot be deployed
Maintenance
Related MCP Connectors
Public MCP server for discovering open jobs. Search, filter, and get application links.
GetJobzi MCP server for job search, application tracking, and career forecasting.
JobsPipe — data pipeline of every job posting on the web. Search live, normalized job postings from 30+ ATS feeds and job boards for AI agents via MCP.
AI job search MCP — fact-checked jobs, application tracker, alerts. ChatGPT, Claude, Cursor.
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.258 npm3MIT- AlicenseCqualityCmaintenanceAn 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.8342 npm1AGPL 3.0
- AlicenseNot gradedqualityDmaintenanceA 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