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


🚀 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

-
license - not tested
-
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 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/SRP-alohamora/JobMatcherMCP'

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