hh-mcp: работодательский API hh.ru и hh.kz
hh-mcp
MCP-сервер для работодательской части API hh.ru и hh.kz: свои вакансии, отклики, поиск резюме, сорсинг и вебхуки через OAuth-приложение
Высокий риск
Высокий уровень ставим, когда инструмент пишет во внешние системы, работает с деньгами, рабочими базами или секретами либо выполняет произвольные команды. CLI поставит его только после вашего согласия.
Почему такой уровень
- Может пригласить кандидата и отправить сообщение от имени работодателя (hh_employer_negotiations invite, message_send)
- Просмотр резюме тратит платный контакт работодателя, ошибка в вызове стоит денег
- OAuth-токены работодателя дают широкий доступ к вакансиям, откликам и резюме кандидатов
Установка
В терминале, через SkillFoxx CLI
npx skillfoxx add mcp/mardanaltynbekov1104-hh-mcpОпределит агенты на машине, проверит риск и зафиксирует версию.
Другие способы установки
У записи высокий риск, поэтому установки в один клик нет. Посмотрите код и добавьте конфиг вручную.
Выполните в терминале
claude mcp add --transport stdio --env 'HH_CLIENT_ID=<ваш HH_CLIENT_ID>' --env 'HH_CLIENT_SECRET=<ваш HH_CLIENT_SECRET>' --env 'HH_USER_AGENT=<значение HH_USER_AGENT>' hh -- npx tsx /Users/you/apps/hh-mcp/src/index.tsИли добавьте в файл .mcp.json, в проекте
{
"mcpServers": {
"hh": {
"command": "npx",
"args": [
"tsx",
"/Users/you/apps/hh-mcp/src/index.ts"
],
"env": {
"HH_CLIENT_ID": "<ваш HH_CLIENT_ID>",
"HH_CLIENT_SECRET": "<ваш HH_CLIENT_SECRET>",
"HH_USER_AGENT": "<значение HH_USER_AGENT>"
}
}
}
}Если файл уже есть, добавьте сервер внутрь ключа mcpServers.
Ключи и настройки
HH_CLIENT_IDсекрет, обязательнаяHH_CLIENT_SECRETсекрет, обязательнаяHH_USER_AGENTобязательная
Замените значения в угловых скобках своими. Ключи не попадают в ссылки установки и не хранятся у нас.
Добавьте в файл ~/.cursor/mcp.json, для всех проектов
{
"mcpServers": {
"hh": {
"command": "npx",
"args": [
"tsx",
"/Users/you/apps/hh-mcp/src/index.ts"
],
"env": {
"HH_CLIENT_ID": "<ваш HH_CLIENT_ID>",
"HH_CLIENT_SECRET": "<ваш HH_CLIENT_SECRET>",
"HH_USER_AGENT": "<значение HH_USER_AGENT>"
}
}
}
}Если файл уже есть, добавьте сервер внутрь ключа mcpServers. Для одного проекта тот же блок кладут в .cursor/mcp.json.
Ключи и настройки
HH_CLIENT_IDсекрет, обязательнаяHH_CLIENT_SECRETсекрет, обязательнаяHH_USER_AGENTобязательная
Замените значения в угловых скобках своими. Ключи не попадают в ссылки установки и не хранятся у нас.
Выполните в терминале
code --add-mcp '{"name":"hh","type":"stdio","command":"npx","args":["tsx","/Users/you/apps/hh-mcp/src/index.ts"],"env":{"HH_CLIENT_ID":"<ваш HH_CLIENT_ID>","HH_CLIENT_SECRET":"<ваш HH_CLIENT_SECRET>","HH_USER_AGENT":"<значение HH_USER_AGENT>"}}'Или добавьте в файл .vscode/mcp.json, в проекте
{
"servers": {
"hh": {
"type": "stdio",
"command": "npx",
"args": [
"tsx",
"/Users/you/apps/hh-mcp/src/index.ts"
],
"env": {
"HH_CLIENT_ID": "<ваш HH_CLIENT_ID>",
"HH_CLIENT_SECRET": "<ваш HH_CLIENT_SECRET>",
"HH_USER_AGENT": "<значение HH_USER_AGENT>"
}
}
}
}Если файл уже есть, добавьте сервер внутрь ключа servers.
Ключи и настройки
HH_CLIENT_IDсекрет, обязательнаяHH_CLIENT_SECRETсекрет, обязательнаяHH_USER_AGENTобязательная
Замените значения в угловых скобках своими. Ключи не попадают в ссылки установки и не хранятся у нас.
Выполните в терминале
codex mcp add hh --env 'HH_CLIENT_ID=<ваш HH_CLIENT_ID>' --env 'HH_CLIENT_SECRET=<ваш HH_CLIENT_SECRET>' --env 'HH_USER_AGENT=<значение HH_USER_AGENT>' -- npx tsx /Users/you/apps/hh-mcp/src/index.tsИли добавьте в файл ~/.codex/config.toml, для всех проектов
[mcp_servers.hh]
command = "npx"
args = ["tsx", "/Users/you/apps/hh-mcp/src/index.ts"]
env = { HH_CLIENT_ID = "<ваш HH_CLIENT_ID>", HH_CLIENT_SECRET = "<ваш HH_CLIENT_SECRET>", HH_USER_AGENT = "<значение HH_USER_AGENT>" }Если файл уже есть, допишите блок в конец.
Ключи и настройки
HH_CLIENT_IDсекрет, обязательнаяHH_CLIENT_SECRETсекрет, обязательнаяHH_USER_AGENTобязательная
Замените значения в угловых скобках своими. Ключи не попадают в ссылки установки и не хранятся у нас.
Выполните в терминале
gemini mcp add -s user -e 'HH_CLIENT_ID=<ваш HH_CLIENT_ID>' -e 'HH_CLIENT_SECRET=<ваш HH_CLIENT_SECRET>' -e 'HH_USER_AGENT=<значение HH_USER_AGENT>' hh npx tsx /Users/you/apps/hh-mcp/src/index.tsИли добавьте в файл ~/.gemini/settings.json, для всех проектов
{
"mcpServers": {
"hh": {
"command": "npx",
"args": [
"tsx",
"/Users/you/apps/hh-mcp/src/index.ts"
],
"env": {
"HH_CLIENT_ID": "<ваш HH_CLIENT_ID>",
"HH_CLIENT_SECRET": "<ваш HH_CLIENT_SECRET>",
"HH_USER_AGENT": "<значение HH_USER_AGENT>"
}
}
}
}Если файл уже есть, добавьте сервер внутрь ключа mcpServers.
Ключи и настройки
HH_CLIENT_IDсекрет, обязательнаяHH_CLIENT_SECRETсекрет, обязательнаяHH_USER_AGENTобязательная
Замените значения в угловых скобках своими. Ключи не попадают в ссылки установки и не хранятся у нас.
Добавьте в файл ~/.config/devin/mcp_config.json, для всех проектов
{
"mcpServers": {
"hh": {
"command": "npx",
"args": [
"tsx",
"/Users/you/apps/hh-mcp/src/index.ts"
],
"env": {
"HH_CLIENT_ID": "<ваш HH_CLIENT_ID>",
"HH_CLIENT_SECRET": "<ваш HH_CLIENT_SECRET>",
"HH_USER_AGENT": "<значение HH_USER_AGENT>"
}
}
}
}Если файл уже есть, добавьте сервер внутрь ключа mcpServers. В легаси Cascade конфиг MCP лежит в ~/.codeium/windsurf/mcp_config.json.
Ключи и настройки
HH_CLIENT_IDсекрет, обязательнаяHH_CLIENT_SECRETсекрет, обязательнаяHH_USER_AGENTобязательная
Замените значения в угловых скобках своими. Ключи не попадают в ссылки установки и не хранятся у нас.
Бывший Windsurf.
Добавьте в файл cline_mcp_settings.json, для всех проектов
{
"mcpServers": {
"hh": {
"command": "npx",
"args": [
"tsx",
"/Users/you/apps/hh-mcp/src/index.ts"
],
"env": {
"HH_CLIENT_ID": "<ваш HH_CLIENT_ID>",
"HH_CLIENT_SECRET": "<ваш HH_CLIENT_SECRET>",
"HH_USER_AGENT": "<значение HH_USER_AGENT>"
}
}
}
}Если файл уже есть, добавьте сервер внутрь ключа mcpServers. Файл настроек открывается в Cline: вкладка MCP Servers, кнопка Configure MCP Servers.
Ключи и настройки
HH_CLIENT_IDсекрет, обязательнаяHH_CLIENT_SECRETсекрет, обязательнаяHH_USER_AGENTобязательная
Замените значения в угловых скобках своими. Ключи не попадают в ссылки установки и не хранятся у нас.
Добавьте в файл .roo/mcp.json, в проекте
{
"mcpServers": {
"hh": {
"command": "npx",
"args": [
"tsx",
"/Users/you/apps/hh-mcp/src/index.ts"
],
"env": {
"HH_CLIENT_ID": "<ваш HH_CLIENT_ID>",
"HH_CLIENT_SECRET": "<ваш HH_CLIENT_SECRET>",
"HH_USER_AGENT": "<значение HH_USER_AGENT>"
}
}
}
}Если файл уже есть, добавьте сервер внутрь ключа mcpServers.
Ключи и настройки
HH_CLIENT_IDсекрет, обязательнаяHH_CLIENT_SECRETсекрет, обязательнаяHH_USER_AGENTобязательная
Замените значения в угловых скобках своими. Ключи не попадают в ссылки установки и не хранятся у нас.
Форк Roo Code, папки .roo те же.
Добавьте в файл opencode.json, в проекте
{
"mcp": {
"hh": {
"type": "local",
"command": [
"npx",
"tsx",
"/Users/you/apps/hh-mcp/src/index.ts"
],
"environment": {
"HH_CLIENT_ID": "<ваш HH_CLIENT_ID>",
"HH_CLIENT_SECRET": "<ваш HH_CLIENT_SECRET>",
"HH_USER_AGENT": "<значение HH_USER_AGENT>"
}
}
}
}Если файл уже есть, добавьте сервер внутрь ключа mcp.
Ключи и настройки
HH_CLIENT_IDсекрет, обязательнаяHH_CLIENT_SECRETсекрет, обязательнаяHH_USER_AGENTобязательная
Замените значения в угловых скобках своими. Ключи не попадают в ссылки установки и не хранятся у нас.
Добавьте в файл ~/.config/zed/settings.json, для всех проектов
{
"context_servers": {
"hh": {
"command": "npx",
"args": [
"tsx",
"/Users/you/apps/hh-mcp/src/index.ts"
],
"env": {
"HH_CLIENT_ID": "<ваш HH_CLIENT_ID>",
"HH_CLIENT_SECRET": "<ваш HH_CLIENT_SECRET>",
"HH_USER_AGENT": "<значение HH_USER_AGENT>"
}
}
}
}Если файл уже есть, добавьте сервер внутрь ключа context_servers.
Ключи и настройки
HH_CLIENT_IDсекрет, обязательнаяHH_CLIENT_SECRETсекрет, обязательнаяHH_USER_AGENTобязательная
Замените значения в угловых скобках своими. Ключи не попадают в ссылки установки и не хранятся у нас.
Добавьте в файл .codeassistant/mcp.json, в проекте
{
"mcpServers": {
"hh": {
"command": "npx",
"args": [
"tsx",
"/Users/you/apps/hh-mcp/src/index.ts"
],
"env": {
"HH_CLIENT_ID": "<ваш HH_CLIENT_ID>",
"HH_CLIENT_SECRET": "<ваш HH_CLIENT_SECRET>",
"HH_USER_AGENT": "<значение HH_USER_AGENT>"
}
}
}
}Если файл уже есть, добавьте сервер внутрь ключа mcpServers.
Ключи и настройки
HH_CLIENT_IDсекрет, обязательнаяHH_CLIENT_SECRETсекрет, обязательнаяHH_USER_AGENTобязательная
Замените значения в угловых скобках своими. Ключи не попадают в ссылки установки и не хранятся у нас.
Создай OAuth-приложение работодателя на dev.hh.kz/admin или dev.hh.ru/admin, склонируй репозиторий, выполни npm install, заполни HH_CLIENT_ID, HH_CLIENT_SECRET и HH_USER_AGENT в .env, подключи сервер по stdio, вызови hh_auth action=get_auth_url, авторизуйся и передай код в hh_auth action=exchange_code.
Другие способы из описания автора
git clone https://github.com/mardanaltynbekov1104/hh-mcp.git ~/apps/hh-mcp && cd ~/apps/hh-mcp && npm install && cp .env.example .envУстановка из README, дальше нужно вписать HH_CLIENT_ID, HH_CLIENT_SECRET и HH_USER_AGENT.
Это чужой код. Посмотрите файлы в репозитории перед установкой.
Что делает
Девять инструментов покрывают более 70 действий официального работодательского API HeadHunter (hh.kz и hh.ru используют общее API). hh_auth ведет OAuth-флоу от ссылки авторизации до сохранения токенов в ~/.hh-mcp/tokens.json с правами 600 и автообновления по истечении. hh_employer_vacancies управляет своими вакансиями: список активных, архивных и скрытых, CRUD, архивирование, продление, черновики, статистика и посетители. hh_employer_negotiations читает и двигает отклики по этапам, отправляет сообщения кандидатам, приглашает кандидата на вакансию (invite) и хранит шаблоны сообщений. hh_employer_resumes ищет резюме по платной подписке, получение конкретного резюме требует явного confirm: true, потому что тратит платный контакт, здесь же CRUD сохраненных поисков и заметок команды о кандидате. hh_webhooks подписывает на события вроде нового отклика в реальном времени. Публичные части (справочники, подсказки, оценка зарплаты) работают без OAuth.
Для кого. Для HR-менеджеров и рекрутеров в аккаунте работодателя hh.kz или hh.ru, которым нужно вести вакансии, отклики и сорсинг кандидатов из агента.
Подходит, если
- Нужно вести свои вакансии, отклики и переписку с кандидатами через агента
- Нужен сорсинг: поиск резюме по подписке и приглашение подходящих кандидатов
- Нужны вебхуки на новые отклики или изменения статуса в реальном времени
Не подходит, если
- Вы соискатель, а не работодатель: README прямо говорит, что applicant-side пока только в roadmap
- Нет OAuth-приложения работодателя на dev.hh.kz или dev.hh.ru: без client_id и client_secret employer-инструменты не работают
- Не готовы платить за просмотр резюме: get резюме требует confirm: true, потому что тратит платный контакт
Пример запроса к агенту
Покажи новые отклики по вакансии 12345678 и предложи ответ кандидату с приглашением на интервью в ZoomОграничения
Версия 0.1, автор сам называет это employer-side MVP. Applicant-side, вебхуки без публичного HTTPS-приемника и удобная дистрибуция вроде Railway или DXT в roadmap, а не готовы. hh_webhooks требует собственный публичный HTTPS-URL для приема событий, который нужно поднимать отдельно. Открытие конкретного резюме тратит платный контакт работодателя, ошибиться с confirm: true недешево.
Как отключить. Удалите блок hh из mcpServers в конфигурации клиента и файл ~/.hh-mcp/tokens.json с сохраненными токенами.
MCP
- Транспорт
- stdio, http
- Авторизация
- OAuth
| Переменные окружения | |
|---|---|
| HH_CLIENT_ID обязательная, секрет | OAuth client id с dev.hh.kz или dev.hh.ru, нужен для employer-инструментов. |
| HH_CLIENT_SECRET обязательная, секрет | OAuth client secret того же приложения. |
| HH_USER_AGENT обязательная | Строка User-Agent с контактным email, hh.kz и hh.ru требуют ее в заголовке. |
Проверка безопасности
- Может пригласить кандидата и отправить сообщение от имени работодателя (hh_employer_negotiations invite, message_send)
- Просмотр резюме тратит платный контакт работодателя, ошибка в вызове стоит денег
- OAuth-токены работодателя дают широкий доступ к вакансиям, откликам и резюме кандидатов
Коротко о README
README перечисляет девять инструментов с более чем 70 действиями работодательского API HeadHunter, дает таблицу с уровнем авторизации для каждого, шаги установки и OAuth-флоу с сохранением токенов, конфигурацию для Claude Code, Claude Desktop, Cursor, Continue и Cline, а также HTTP-режим для claude.ai-коннектора. Приведены развернутые примеры вызовов: поиск вакансий, отклики, приглашение кандидата, поиск и просмотр резюме, заметки о кандидате, подписка на вебхуки. В roadmap новый chat API, биллинг, applicant-side и хостинг на Railway. Лицензия MIT.
Частые вопросы
Работает ли сервер для соискателя, а не работодателя?
Нет, это employer-side MVP, инструменты для соискателя в roadmap на версию 0.2+.
Почему получение резюме требует отдельного подтверждения?
Потому что просмотр конкретного резюме тратит платный контакт работодателя, поэтому инструмент требует явный confirm: true.
Похожие
Самостоятельно размещаемая база знаний с блочными ссылками и встроенным MCP-сервером для подключения AI-агентов к заметкам
CLI для всех API Google Workspace с выводом в JSON и набором скиллов для агентов: Drive, Gmail, Calendar, Sheets и другие
Локальный поиск по заметкам, документации и расшифровкам встреч в Markdown: ключевые слова, смысловой поиск и ранжирование, есть MCP
Менеджер задач для AI-разработки: разбирает PRD на задачи с зависимостями и ведет агента по ним через MCP или CLI