Skip to main content
Glama
HH MCP Server

HH MCP Server

by iraguzov

HH MCP Server

MCP-сервер для автоматизации работы с hh.ru через браузерную автоматизацию (Playwright).

Возможности

  • Поиск вакансий — по ключевым словам, городу, зарплате, опыту, графику (удалёнка/офис/гибрид)

  • Просмотр деталей вакансий — полное описание, требования, стек, условия

  • Управление резюме — просмотр списка и содержимого своих резюме

  • Отклики на вакансии — с сопроводительным письмом и ответами на вопросы работодателя

  • Отслеживание откликов — статусы всех отправленных откликов

  • Информация о работодателях — карточка компании

Related MCP server: HeadHunter API MCP Server

Требования

  • Python 3.12+

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

Установка

cd hh-mcp-server
uv sync
uv run playwright install chromium

Авторизация

Перед первым использованием нужно авторизоваться на hh.ru:

uv run hh-mcp-server --login

Откроется браузер — войдите в свой аккаунт hh.ru. Сессия сохранится в ~/.hh-mcp/profile/state.json.

Запуск

Как MCP-сервер (stdio, для Claude Code)

uv run hh-mcp-server

С видимым браузером (для отладки)

uv run hh-mcp-server --no-headless

HTTP-транспорт

uv run hh-mcp-server --transport streamable-http --port 8766

Настройка в Claude Code

Добавьте в .claude/settings.json:

{
  "mcpServers": {
    "hh": {
      "command": "/path/to/uv",
      "args": ["run", "--directory", "/path/to/hh-mcp-server", "hh-mcp-server"]
    }
  }
}

MCP-инструменты

Инструмент

Описание

search_vacancies

Поиск вакансий по ключевым словам (keywords, area, salary, experience, schedule)

get_recommended_vacancies

Подходящие вакансии для резюме (алгоритм hh.ru, до 1000 вакансий)

get_vacancy_details

Детали вакансии по ID

get_my_resumes

Список резюме пользователя

get_resume

Полное содержимое резюме

apply_to_vacancy

Отклик на вакансию (с письмом и ответами на вопросы)

get_responses

Статусы откликов

get_employer_info

Информация о компании

close_session

Закрытие браузера и сохранение сессии

Рекомендованные вакансии

Инструмент get_recommended_vacancies использует алгоритм hh.ru для подбора вакансий на основе резюме (аналог страницы "Подходящие вакансии"):

get_recommended_vacancies(
    resume_id="0fe69243ff063cb4720039ed1f574b71676a55",
    max_pages=50  # до 1000 вакансий (20 на страницу)
)

Это значительно точнее, чем keyword search — hh.ru анализирует опыт, навыки и должность из резюме.

Отклик на вакансию (двухшаговый flow)

Некоторые вакансии имеют обязательные вопросы от работодателя:

  1. Первый вызов без question_answers — возвращает список вопросов

  2. Второй вызов с question_answers — отправляет отклик

# Шаг 1: получить вопросы
apply_to_vacancy(vacancy_id="12345")
# → {"status": "questions_required", "questions": [...]}

# Шаг 2: отправить с ответами
apply_to_vacancy(
    vacancy_id="12345",
    resume_id="abc123",
    cover_letter="Текст письма",
    question_answers={"task_123_text": "Ответ на вопрос"}
)

Структура проекта

hh_mcp_server/
├── cli_main.py       # CLI точка входа (--login, --no-headless, --transport)
├── server.py         # FastMCP сервер, регистрация инструментов
├── constants.py      # URL, пути, маппинги (города, графики, опыт)
├── exceptions.py     # Кастомные исключения
├── drivers/
│   └── browser.py    # Playwright: контекст, страница, сохранение сессии
├── tools/
│   ├── vacancy.py    # Инструменты поиска и просмотра вакансий
│   ├── apply.py      # Инструмент отклика на вакансию
│   ├── resume.py     # Инструменты работы с резюме
│   ├── employer.py   # Информация о работодателе
│   └── responses.py  # Отслеживание откликов
├── scraping/
│   ├── selectors.py  # CSS-селекторы для парсинга hh.ru
│   ├── extractor.py  # Утилиты извлечения данных со страниц
│   ├── apply.py      # Логика отклика (cookies, вопросы, письмо, submit)
│   └── resume.py     # Парсинг страниц резюме
└── utils/
    └── auth.py       # Авторизация (login flow, проверка сессии)

Логирование

uv run hh-mcp-server --log-level DEBUG

Уровни: DEBUG, INFO, WARNING (по умолчанию), ERROR.

Available Tools

9 tools
apply_to_vacancyApply to VacancyA

Apply to a vacancy on hh.ru.

Two-pass flow for vacancies with questions:

  1. First call without question_answers -> returns questions list

  2. Second call with question_answers filled -> submits application

Args: vacancy_id: hh.ru vacancy ID resume_id: Resume ID to use (from get_my_resumes) cover_letter: Cover letter text question_answers: Dict mapping question label to answer text

Inputs: vacancy_id (required), resume_id, cover_letter, question_answers. Returns: object

close_sessionClose SessionA

Close the browser session and save state.

Inputs: no named parameters. Returns: object

get_employer_infoGet Employer InfoB

Get company/employer information.

Args: employer_id: hh.ru employer ID

Inputs: employer_id (required). Returns: object

get_my_resumesGet My ResumesA

Get list of user's resumes on hh.ru.

Inputs: no named parameters. Returns: result

get_responsesGet My ResponsesA

Get list of user's job applications/responses on hh.ru.

Inputs: no named parameters. Returns: object

get_resumeGet ResumeA

Get full resume content.

Args: resume_id: Resume ID (from get_my_resumes)

Inputs: resume_id (required). Returns: object

get_vacancy_detailsGet Vacancy DetailsA

Get full details of a specific vacancy.

Args: vacancy_id: hh.ru vacancy ID (e.g., "12345678")

Inputs: vacancy_id (required). Returns: object

search_vacanciesSearch VacanciesA

Search for vacancies on hh.ru.

Args: keywords: Search keywords (e.g., "QA Automation Engineer") area: Location filter (e.g., "москва", "россия") salary_from: Minimum salary salary_to: Maximum salary experience: Experience level (no_experience, 1-3, 3-6, 6+) schedule: Work schedule (remote, office, hybrid, flexible, shift) max_pages: Maximum pages to load (1-10, default 3)

Inputs: keywords (required), area, schedule, max_pages, +3 more. Returns: object

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.8/5.0

    Scored across 9 tools

    Disambiguation5/5

    Each tool has a clearly distinct purpose: searching vacancies, getting details, applying, managing resumes, employer info, and responses. No overlap or ambiguity.

    Naming Consistency5/5

    All tool names follow a consistent verb_noun pattern using snake_case (e.g., search_vacancies, get_resume, apply_to_vacancy). No mixing of styles.

    Tool Count5/5

    9 tools are well-scoped for a job application platform, covering all core operations without being excessive or too sparse.

    Completeness4/5

    The tool set covers the essential job search and application workflow. Minor gaps like resume creation/editing are absent but can be handled externally.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables AI assistants to search job vacancies, manage resumes, and apply to jobs on HeadHunter (hh.ru), Russia's largest job search platform. Includes OAuth 2.0 integration for secure job applications and an automated vacancy hunter agent with intelligent matching.
      37
      MIT
    • A
      license
      Not graded
      quality
      F
      maintenance
      Enables AI assistants to access and manage HeadHunter job platform data, including vacancies, resumes, negotiations, and employer settings via 167+ tools.
      124 npm
      5
      MIT
    • F
      license
      Not graded
      quality
      D
      maintenance
      Enables searching for jobs in Russia and remote positions from AI assistants using multiple job platforms (hh.ru, Trudvsem, SuperJob, and remote job aggregators).
      1
      -
    • A
      license
      A
      quality
      B
      maintenance
      Enables searching and retrieving job vacancies, resumes, employers, and salary statistics from the hh.ru API (Russia/CIS) via 19 tools, with optional token access for resume search.
      19
      115 npm
      10
      MIT