Skip to main content
Glama
SRP-alohamora

Job Matcher MCP

Job Matcher MCP

🎯 KI-gestützter MCP-Server (Model Context Protocol) für die Jobsuche und Lebenslauf-Anpassung

Automatisieren Sie Ihre Jobsuche und passen Sie Ihren Lebenslauf in unter einer Minute an jede Stelle an. Angetrieben durch Job-APIs und Claude LLM.


📋 Inhaltsverzeichnis


Related MCP server: job-search

🚀 Schnellstart

Ziel: Den Server mit Mock-Daten in 5 Minuten zum Laufen bringen (keine API-Schlüssel nötig).

1. Repository klonen

\

cd job-matcher-mcp

2. Abhängigkeiten installieren

\

pip install -r requirements.txt

3. Mit Mock-Daten ausführen

\

export USE_MOCK_DATA=true
python mcp_server.py

Erwartete Ausgabe:

=== Testing search_jobs ===
{
"success": true,
"job_listings": [
{
"id": "mock_1",
"title": "Senior Product Manager",
"company": "TechCorp Inc",
"location": "San Francisco, CA",
...
}
],
...
}

=== Testing customize_resume ===
{
"success": true,
"customized_resume": "# John Doe...",
...
}

✅ Erfolg! Ihr MCP-Server funktioniert. Jetzt fügen wir echte API-Schlüssel hinzu.


✨ Funktionen

Funktion

Status

Beschreibung

Jobsuche

✅ MVP

Abfrage tausender Stellenanzeigen über Adzuna API

Lebenslauf-Anpassung

✅ MVP

KI-gestützte Lebenslauf-Optimierung mit Claude

Skill-Matching

✅ MVP

Identifikation passender/fehlender Fähigkeiten

ATS-Optimierung

✅ MVP

Automatische Keyword-Injektion für ATS

Mock-Daten-Modus

✅ MVP

Testen ohne API-Schlüssel

Multi-API-Unterstützung

🔜 v1.2

Hinzufügen von Indeed, LinkedIn, AngelList

Anschreiben-Generierung

🔜 v1.2

Automatische Erstellung von Anschreiben

Bewerbungs-Tracking

🔜 v2.0

Verfolgung von Bewerbungen und Vorstellungsgesprächen


🔧 Installation

Voraussetzungen

  • Python 3.10 oder höher

  • pip (Python-Paketmanager)

  • Git

Schritt 1: Repository klonen

\

git clone https://github.com/yourusername/job-matcher-mcp.git
cd job-matcher-mcp

Schritt 2: Virtuelle Umgebung erstellen (empfohlen)

\

# macOS/Linux
python3 -m venv venv
source venv/bin/activate

# Windows
python -m venv venv
.\venv\Scripts\Activate.ps1

Schritt 3: Abhängigkeiten installieren

\

pip install -r requirements.txt

⚙️ Konfiguration

1. API-Schlüssel besorgen

Adzuna API (Kostenlos)

  1. Gehen Sie zu https://developer.adzuna.com/

  2. Erstellen Sie ein Konto

  3. Erstellen Sie eine App, um App ID und App Key zu erhalten

  4. Kostenloser Tarif: ~100 Anfragen/Tag

Anthropic Claude API (Bezahlt, .50-5/Monat)

  1. Gehen Sie zu https://console.anthropic.com/

  2. Erstellen Sie ein Konto

  3. Generieren Sie einen API-Schlüssel

  4. Preise: ~.003 pro 1.000 Eingabe-Tokens, .015 pro 1.000 Ausgabe-Tokens

2. .env-Datei erstellen

\

cp .env.example .env

3. Fügen Sie Ihre API-Schlüssel in .env hinzu

\

ADZUNA_APP_ID=ihre_tatsaechliche_app_id
ADZUNA_APP_KEY=ihr_tatsaechlicher_app_key
ANTHROPIC_API_KEY=sk-ant-ihr_tatsaechlicher_api_key
USE_MOCK_DATA=false
LOG_LEVEL=INFO

4. Umgebungsvariablen laden

\

# macOS/Linux
export $(grep -v '^#' .env | xargs)

# Windows PowerShell
Get-Content .env | ForEach-Object {
    $name, $value = $_.Split('=')
    if ($name) { Set-Item -Path env:\$name -Value $value }
}

💻 Nutzung

Server starten

\

python mcp_server.py

Mit curl testen (Beispiel)

\

# Nach Jobs suchen
curl -X POST http://localhost:8000/tools/search_jobs \
-H "Content-Type: application/json" \
-d '{
"role": "Product Manager",
"location": "San Francisco, CA",
"experience_years": 5,
"max_results": 10
}'

# Lebenslauf anpassen
curl -X POST http://localhost:8000/tools/customize_resume \
-H "Content-Type: application/json" \
-d '{
"base_resume": "...",
"job_description": "...",
"template": "modern"
}'

Python-Beispiel

\

from mcp_server import JobMatcherMCPServer

server = JobMatcherMCPServer()

# Jobs suchen
jobs = server.search_jobs(
role="Product Manager",
location="San Francisco, CA",
experience_years=5,
max_results=10
)
print(jobs)

# Lebenslauf anpassen
resume = server.customize_resume(
base_resume="Ihr Lebenslauftext hier...",
job_description="Stellenbeschreibung hier...",
template="modern"
)
print(resume)

🛠️ MCP-Tools-Referenz

Tool 1: search_jobs

Suche nach Stellenanzeigen basierend auf Kriterien.

Eingabeschema

\

{
"role": "Product Manager",              // Erforderlich: Jobtitel
"location": "San Francisco, CA",        // Erforderlich: Geografischer Standort
"experience_years": 5,                  // Erforderlich: Berufserfahrung in Jahren
"max_results": 10,                      // Optional: Ergebnislimit (Standard: 10)
"use_mock_data": false                  // Optional: Mock-Daten verwenden (Standard: false)
}

Ausgabeschema

\

{
"success": true,
"job_listings": [
{
"id": "12345",
"title": "Senior Product Manager",
"company": "TechCorp",
"location": "San Francisco, CA",
"link": "https://...",
"salary_min": 120000,
"salary_max": 160000,
"posted_date": "2026-08-17T10:00:00Z",
"description_snippet": "Wir suchen..."
}
],
"total_found": 123,
"search_time_ms": 1234,
"error": null
}

Beispiel

\

jobs = server.search_jobs(
role="Product Manager",
location="Remote",
experience_years=3,
max_results=5
)

Tool 2: customize_resume

Lebenslauf mit KI für eine bestimmte Stelle anpassen.

Eingabeschema

\

{
"base_resume": "# Jane Doe...",                     // Erforderlich: Ihr Lebenslauftext
"job_description": "Wir suchen...",         // Erforderlich: Stellenausschreibung
"template": "modern",                               // Optional: modern|classic|minimal
"use_mock_data": false                              // Optional: Mock-Daten verwenden
}

Ausgabeschema

\

{
"success": true,
"customized_resume": "# Jane Doe...",
"match_analysis": {
"skills_match_percentage": 82,
"matched_skills": ["Produktmanagement", "Führung"],".$&!"missing_skills": ["Maschinelles Lernen", "Cloud"],
"suggestions": ["Fügen Sie ML-Erfahrung hinzu, falls zutreffend"],
"keywords_added": ["Datengetrieben", "übergeriflich"]
},
"eneration_time_ms": 2345,
"error": null
}

d

Beispiel

\

customized = server.customize_resume(
base_resume=open("resume.txt").read(),
job_description=open("job_posting.txt").read(),
template="modern"\)```
d

***

## 🏗️ Architektur

┌─────────────────────────────────────────────────────┐ │ Benutzer/KI-Agent (Chat, Skript, API-Client) │ └────────────────┬────────────────────────────────────┘ der MCP-Protokoll ┌────────────────▼────────────────────────────────────┐ │ Job Matcher MCP Server │ │ ┌──────────────────────────────────────────────┐ │ │ │ Tool: search_jobs() │ ││ │ - Abfrage der Adzuna API ││ │ - Parsen & strukturieren der Ergebnisse ││ └──────────────────────────────────────────────┘ │ │ ┌──────────────────────────────────────────────┐ ││ │ Tool: customize_resume() │ ││ │ - an Claude senden │ ││ │ - Parsen & Rückgaben des angepassten Lebenslaufs ││ └──────────────────────────────────────────────┘ │ │ ┌──────────────────────────────────────────────┐ ││ │ Externe APIs │ ││ │ - Adzuna Job Search API │ ││ │ - Anthropic Claude API │ ││ └──────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────┘


***

## 🔍 Fehlerbehebung

### Problem: `ModuleNotFoundError: No module named 'anthropic'` n**Lösung:** Ahängigkeiten installieren
\`bash
pip install -r requirements.txt

d

Problem: API request failed: Unauthorized n**Lösung:**Üerprüfen Sie Ihre API-Schlüssel in .env

`bash #Üerprüfen, ob Schlüssel gesetzt sind echo $ADZUNA_APP_ID echo $ANTHROPIC_API_KEY

d
### Problem: `No jobs found` n**Lösung:** Proieren Sie eine andere Rolle/einen anderen Standort oder erhöhen Sie max_results
\`python
# Breitere Suche versuchen
jobs = server.search_jobs(
role="Manger",  # Allgemeinerer Begriff
location="New York, NY",
experience_years=5,
max_results=50
)

Problem: Claude API response too slow nLösung: Verwenden Sie Mock-Daten zum Testen

`python resume = server.customize_resume( base_resume="...", job_description="...", use_mock_data=True # API-Aufruf überspringen )

d
### Problem: `Rate limit exceeded` n**Lösung:** Der kostenlose Adzuna-Tarif hat Limits. Implementieren Sie Caching:
\`python
# Suchergebnisse zwischenspeichern
cached_jobs = {}
key = f"{role}_{location}_{experience_years}"
if key not in cacked_jobs:
    cacked_jobs[key] = server.search_jobs(...)

d


d## 🚢 Deployment

Auf Vercel deployen

`bash

1. Vercel-Konto unter https://vercel.com erstellen

2. Vercel CLI installieren

npm install -g vercel

3. Deployen

vercel

4. Umgebungsvariablen im Vercel-Dashboard hinzufügen

Settings → Environment Variables

d
### Auf Railway deployen
\`bash
# 1. Railwy-Konto unter https://railway.app erstellen
# 2. Git-Repository verbinden
# 3. Umgebungsvariablen im Railwy-Dashoard hinzufügen

d


d## 📊 Leistungsmetriken (Ziel)

Operation

Zielzeit

Tastsächlich

Jobsuche

<5 Sekunden

~2-3s

Lebeslauf-Anpassung

<10 Sekunden

~3-5s

Mock-Jobsuche

<100ms

~50ms

Mock-Lebenslauf-Anpassung

<500ms

~200ms


d## 📚 API-Refrenzen


d## 📝 Lizenz

MIT Lizenz – siehe LIZENSE-Datei für Details


d## 👨‍💼 Autor

Erstellt für Technologie-Produktmanager im Jobübergang.

Version: 1.0.0 nLetzte Aktualisierung: 2026-08-17 nStatus: MVP bereit

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A job-search MCP server that ranks roles, drafts cover letters, and rehearses Q&A answers using a candidate profile, with live listings from five public sources.
    53 npm
    MIT
  • A
    license
    C
    quality
    C
    maintenance
    An 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.
    83
    12 npm
    1
    AGPL 3.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    An MCP server that exposes job-search and application-management capabilities to compatible AI clients, enabling discovery of vacancies, drafting of tailored application materials, and coordinated human-approved submissions.
    MIT