Skip to main content
Glama
SRP-alohamora

Job Matcher MCP

Job Matcher MCP

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

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


📋 Содержание


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

Цель: Запустить сервер с тестовыми данными за 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

-
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