Skip to main content
Glama
SRP-alohamora

Job Matcher MCP

Job Matcher MCP

🎯 Сервер MCP (Model Context Protocol) для поиска работы и настройки резюме с использованием ИИ

Автоматизируйте поиск работы и настраивайте резюме под каждую роль менее чем за минуту. Работает на основе API вакансий и Claude LLM.


📋 Содержание


Related MCP server: job-search

🚀 Быстрый старт

Цель: Запустить сервер с тестовыми данными за 5 минут (ключи API не нужны).

1. Клонируйте репозиторий

cd job-matcher-mcp

2. Установите зависимости

pip install -r requirements.txt

3. Запустите с тестовыми данными

export USE_MOCK_DATA=true
python mcp_server.py

Ожидаемый вывод:

=== 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...",
...
}

✅ Успешно! Ваш MCP сервер работает. Теперь добавим настоящие ключи API.


✨ Возможности

Функция

Статус

Описание

Поиск работы

✅ MVP

Поиск тысяч вакансий через Adzuna API

Настройка резюме

✅ MVP

Адаптация резюме с помощью ИИ на базе Claude

Сопоставление навыков

✅ MVP

Определение совпадающих/отсутствующих навыков

Оптимизация для ATS

✅ MVP

Автоматическое внедрение ключевых слов для ATS

Режим тестовых данных

✅ MVP

Тестирование без ключей API

Поддержка нескольких API

🔜 v1.2

Добавление Indeed, LinkedIn, AngelList

Генерация сопроводительных писем

🔜 v1.2

Автоматическая генерация сопроводительных писем

Отслеживание заявок

🔜 v2.0

Отслеживание заявок и собеседований


🔧 Установка

Предварительные требования

  • Python 3.10 или выше

  • pip (менеджер пакетов Python)

  • Git

Шаг 1: Клонируйте репозиторий

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

Шаг 2: Создайте виртуальное окружение (рекомендуется)

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

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

Шаг 3: Установите зависимости

pip install -r requirements.txt

⚙️ Конфигурация

1. Получите ключи API

Adzuna API (Бесплатно)

  1. Перейдите на https://developer.adzuna.com/

  2. Создайте аккаунт

  3. Создайте приложение, чтобы получить App ID и App Key

  4. Бесплатный тариф: ~100 запросов/день

Anthropic Claude API (Платный, $0.50-5/месяц)

  1. Перейдите на https://console.anthropic.com/

  2. Создайте аккаунт

  3. Сгенерируйте API key

  4. Цены: ~$0.003 за 1K входных токенов, $0.015 за 1K выходных токенов

2. Создайте файл .env

cp .env.example .env

3. Добавьте свои ключи API в .env

ADZUNA_APP_ID=your_actual_app_id
ADZUNA_APP_KEY=your_actual_app_key
ANTHROPIC_API_KEY=sk-ant-your_actual_api_key
USE_MOCK_DATA=false
LOG_LEVEL=INFO

4. Загрузите переменные окружения

# 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 }
}

💻 Использование

Запустите сервер

python mcp_server.py

Протестируйте с помощью curl (пример)

# Поиск вакансий
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
}'

# Настройка резюме
curl -X POST http://localhost:8000/tools/customize_resume \
-H "Content-Type: application/json" \
-d '{
"base_resume": "...",
"job_description": "...",
"template": "modern"
}'

Пример на Python

from mcp_server import JobMatcherMCPServer

server = JobMatcherMCPServer()

# Поиск вакансий
jobs = server.search_jobs(
    role="Product Manager",
    location="San Francisco, CA",
    experience_years=5,
    max_results=10
)
print(jobs)

# Настройка резюме
resume = server.customize_resume(
    base_resume="Your resume text here...",
    job_description="Job description here...",
    template="modern"
)
print(resume)

🛠️ Справочник инструментов MCP

Инструмент 1: search_jobs

Поиск вакансий по критериям.

Схема ввода

{
"role": "Product Manager",              // Required: Job title
"location": "San Francisco, CA",        // Required: Geographic location
"experience_years": 5,                  // Required: Years of experience
"max_results": 10,                      // Optional: Limit results (default: 10)
"use_mock_data": false                  // Optional: Use mock data (default: false)
}

Схема вывода

{
"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": "We are looking for..."
}
],
"total_found": 123,
"search_time_ms": 1234,
"error": null
}

Пример

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

Инструмент 2: customize_resume

Настройка резюме под конкретную вакансию с помощью ИИ.

Схема ввода

{
"base_resume": "# Jane Doe...",                     // Required: Your resume text
"job_description": "We are looking for...",         // Required: Job posting
"template": "modern",                               // Optional: modern|classic|minimal
"use_mock_data": false                              // Optional: Use mock data
}

Схема вывода

{
"success": true,
"customized_resume": "# Jane Doe...",
"match_analysis": {
"skills_match_percentage": 82,
"matched_skills": ["Product Management", "Leadership"],
"missing_skills": ["Machine Learning", "Cloud"],
"suggestions": ["Add ML experience if applicable"],
"keywords_added": ["Data-driven", "Cross-functional"]
},
"generation_time_ms": 2345,
"error": null
}

Пример

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

🏗️ Архитектура

┌─────────────────────────────────────────────────────┐ │ User/AI Agent (Chat, Script, API Client) │ └────────────────┬────────────────────────────────────┘ │ MCP Protocol ┌────────────────▼────────────────────────────────────┐ │ Job Matcher MCP Server │ │ ┌──────────────────────────────────────────────┐ │ │ │ Tool: search_jobs() │ │ │ │ - Query Adzuna API │ │ │ │ - Parse & structure results │ │ │ └──────────────────────────────────────────────┘ │ │ ┌──────────────────────────────────────────────┐ │ │ │ Tool: customize_resume() │ │ │ │ - Send to Claude API │ │ │ │ - Parse & return customized resume │ │ │ └──────────────────────────────────────────────┘ │ │ ┌──────────────────────────────────────────────┐ │ │ │ External APIs │ │ │ │ - Adzuna Job Search API │ │ │ │ - Anthropic Claude API │ │ │ └──────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────┘


🔍 Устранение неполадок

Проблема: ModuleNotFoundError: No module named 'anthropic'

Решение: Установите зависимости

pip install -r requirements.txt

Проблема: API request failed: Unauthorized

Решение: Проверьте ключи API в файле .env

# Проверьте, установлены ли ключи
echo $ADZUNA_APP_ID
echo $ANTHROPIC_API_KEY

Проблема: No jobs found

Решение: Попробуйте другую должность/местоположение или увеличьте max_results

# Попробуйте более широкий поиск
jobs = server.search_jobs(
    role="Manager",  # Более общий термин
    location="New York, NY",
    experience_years=5,
    max_results=50
)

Проблема: Claude API response too slow

Решение: Используйте тестовые данные для тестирования

resume = server.customize_resume(
    base_resume="...",
    job_description="...",
    use_mock_data=True  # Пропустить вызов API
)

Проблема: Rate limit exceeded

Решение: Бесплатный тариф Adzuna имеет ограничения. Внедрите кэширование:

# Сохраняйте результаты поиска вакансий
cached_jobs = {}
key = f"{role}*{location}*{experience_years}"
if key not in cached_jobs:
    cached_jobs[key] = server.search_jobs(...)

🚢 Развертывание

Развертывание на Vercel

# 1. Создайте аккаунт Vercel на https://vercel.com
# 2. Установите Vercel CLI
npm install -g vercel
# 3. Разверните
vercel
# 4. Добавьте переменные окружения в панели Vercel
# Settings → Environment Variables

Развертывание на Railway

# 1. Создайте аккаунт Railway на https://railway.app
# 2. Подключите ваш Git-репозиторий
# 3. Добавьте переменные окружения в панели Railway

📊 Метрики производительности (Цель)

Операция

Целевое время

Фактическое

Поиск вакансий

<5 секунд

~2-3с

Настройка резюме

<10 секунд

~3-5с

Тестовый поиск вакансий

<100мс

~50мс

Тестовая настройка резюме

<500мс

~200мс


📚 Ссылки на API


📝 Лицензия

Лицензия MIT - подробности в файле LICENSE


👨‍💼 Автор

Создано для технических продакт-менеджеров, находящихся в поиске работы.

Версия: 1.0.0 Последнее обновление: 2026-08-17 Статус: MVP Ready

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.
    26 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
    19 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