{
  "markdown": "# MCP-сервер для hh.ru API — 19 инструментов для ИИ-агента: вакансии, резюме, зарплаты\n\nЕсли вы искали, как подключить hh.ru к Claude или другому ИИ-агенту, — этот сервер даёт агенту поиск по вакансиям и резюме, карточки работодателей, статистику зарплат и справочники hh.ru по России и СНГ. Спрашиваете «найди Python-вакансии в Москве от 250 000 ₽ на удалёнке» — агент возвращает готовый список с зарплатами и опытом, а не ссылку на выдачу. Поиск вакансий работает без токена; токен нужен только для базы резюме.\n\n[![npm](https://img.shields.io/npm/v/@theyahia/hh-mcp)](https://www.npmjs.com/package/@theyahia/hh-mcp)\n[![CI](https://github.com/theYahia/hh-mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/theYahia/hh-mcp/actions)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n![Демонстрация: вопрос «найди Python-вакансии в Москве от 250 000 ₽ на удалёнке» — агент вызывает search_vacancies и отвечает списком вакансий](https://raw.githubusercontent.com/theYahia/WWmcp/main/servers/hh/assets/demo.svg)\n\nПо умолчанию ответы приходят компактными сводками, удобными для LLM — передайте `raw: true` любому инструменту поиска или карточки, чтобы получить полный JSON hh.ru.\n\nЧасть серии [WWmcp](https://github.com/theYahia/WWmcp) от [@theYahia](https://github.com/theYahia).\n\n## Два режима\n\n| Режим | Что доступно | Нужен токен? |\n|------|-----------------|:-------------:|\n| **Без токена** | Поиск вакансий, вакансия по ID, похожие вакансии, работодатели, статистика зарплат, регионы, роли, отрасли, метро, справочники, подсказки, проверка токена | нет |\n| **С токеном** | Всё перечисленное + поиск резюме, резюме по ID | да (`HH_ACCESS_TOKEN`) |\n\nТокен выдаётся на [dev.hh.ru/admin](https://dev.hh.ru/admin). Важно: поиск резюме дополнительно требует аккаунт **работодателя** с **оплаченной подпиской на базу резюме** — токены соискателя и анонимные получают 403. Проверить возможности своего токена можно инструментом `validate_token`.\n\n## Установка\n\n### Claude Desktop\n\n```json\n{\n  \"mcpServers\": {\n    \"hh\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@theyahia/hh-mcp\"],\n      \"env\": {\n        \"HH_ACCESS_TOKEN\": \"optional-oauth-token\"\n      }\n    }\n  }\n}\n```\n\n### Claude Code\n\n```bash\nclaude mcp add hh -- npx -y @theyahia/hh-mcp\n# С токеном:\nclaude mcp add hh -e HH_ACCESS_TOKEN=your-token -- npx -y @theyahia/hh-mcp\n```\n\n### VS Code / Cursor\n\n```json\n{\n  \"servers\": {\n    \"hh\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@theyahia/hh-mcp\"]\n    }\n  }\n}\n```\n\n### Windsurf\n\n```json\n{\n  \"mcpServers\": {\n    \"hh\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@theyahia/hh-mcp\"]\n    }\n  }\n}\n```\n\n### Режим HTTP (Streamable HTTP)\n\n```bash\nnpx @theyahia/hh-mcp --http\n# или\nHTTP_PORT=8080 npx @theyahia/hh-mcp --http\n```\n\nЭндпоинт: `http://localhost:3000/mcp` (POST) · Проверка состояния: `http://localhost:3000/health` (GET)\n\nHTTP-режим stateless, по умолчанию слушает `127.0.0.1` с включённой защитой от DNS-rebinding. Чтобы открыть его наружу, задайте `HOST=0.0.0.0`, добавьте свой host/origin в `HH_ALLOWED_HOSTS` / `HH_ALLOWED_ORIGINS` и поставьте перед ним собственную аутентификацию.\n\n## Переменные окружения\n\n| Переменная | Обяз. | Описание |\n|----------|----------|-------------|\n| `HH_ACCESS_TOKEN` | нет | Bearer-токен OAuth 2.0. Нужен для эндпоинтов резюме (работодатель + оплаченная база резюме). |\n| `HH_USER_AGENT` | нет | Свой `HH-User-Agent` (hh.ru его требует). Рекомендуемый формат: `your-app/1.0 (you@example.com)`. |\n| `HTTP_PORT` / `PORT` | нет | Порт HTTP-режима (по умолчанию 3000). |\n| `HOST` | нет | Интерфейс привязки в HTTP-режиме (по умолчанию `127.0.0.1`). |\n| `HH_ALLOWED_HOSTS` | нет | Список разрешённых Host через запятую для HTTP-режима (по умолчанию loopback). |\n| `HH_ALLOWED_ORIGINS` | нет | Список разрешённых Origin через запятую для HTTP-режима. |\n\nСм. [`.env.example`](.env.example).\n\n## Инструменты (19)\n\nЛюбой инструмент поиска или карточки принимает `raw: true` — тогда вернётся полный JSON hh.ru вместо компактной сводки.\n\n### Вакансии\n\n| Инструмент | Описание | Токен? |\n|------|-------------|:------:|\n| `search_vacancies` | Поиск по ключевым словам, региону, профессиональной роли, отрасли, метро, работодателю, зарплате, опыту, формату работы и типу занятости, периоду (`period` или `date_from`/`date_to`), меткам и полю поиска, с сортировкой и пагинацией | нет |\n| `get_vacancy` | Полная карточка вакансии: описание, требования, ключевые навыки, контакты | нет |\n| `get_similar_vacancies` | Найти вакансии, похожие на заданную | нет |\n\n### Резюме (токен работодателя + оплаченная база резюме)\n\n| Инструмент | Описание | Токен? |\n|------|-------------|:------:|\n| `search_resumes` | Поиск резюме кандидатов по ключевым словам, региону, роли, зарплате, опыту | **да** |\n| `get_resume` | Полное резюме: опыт, образование, навыки, контакты | **да** |\n\n### Работодатели\n\n| Инструмент | Описание | Токен? |\n|------|-------------|:------:|\n| `search_employers` | Поиск компаний по названию и региону | нет |\n| `get_employer` | Профиль работодателя: описание, отрасли, сайт, число вакансий | нет |\n| `get_employer_vacancies` | Активные вакансии конкретного работодателя | нет |\n\n### Справочники и подсказки\n\n| Инструмент | Описание | Токен? |\n|------|-------------|:------:|\n| `get_areas` | Дерево регионов и городов (`id — название`) | нет |\n| `get_areas_subtree` | Регионы и города внутри одного региона — легче, чем всё дерево | нет |\n| `get_professional_roles` | Дерево профессиональных ролей с ID | нет |\n| `get_industries` | Дерево отраслей компаний с ID | нет |\n| `get_metro` | Станции и линии метро с ID по городу | нет |\n| `get_dictionaries` | Все справочные данные: валюты, типы занятости, графики, опыт, метки | нет |\n| `suggest_positions` | Автодополнение названий должностей | нет |\n| `suggest_companies` | Автодополнение названий компаний | нет |\n| `suggest_areas` | Автодополнение названий регионов и городов | нет |\n\n### Зарплаты и аккаунт\n\n| Инструмент | Описание | Токен? |\n|------|-------------|:------:|\n| `get_salary_statistics` | **Оценочное** распределение зарплат (медиана, P25/P75, мин/макс) по роли в регионе, посчитанное по зарплатам опубликованных вакансий. Выборка смещённая, это не официальные данные рынка. | нет |\n| `validate_token` | Проверить, действителен ли `HH_ACCESS_TOKEN` (через `/me`), и показать роль аккаунта | нет |\n\n## Ограничение частоты запросов\n\nВстроенный лимитер соблюдает ограничение API hh.ru — 5 запросов в секунду. Автоматический повтор с экспоненциальной задержкой на ошибках 429 и 5xx (до 3 попыток). Учтите: лимитер общий на процесс, поэтому в общем HTTP-режиме все клиенты делят один бюджет 5 запросов/сек.\n\n## Демо-промпты\n\n```\nНайди удалённые вакансии Python-разработчика в Москве от 300 000 рублей\n```\n\n```\nПокажи все открытые вакансии Яндекса и дай статистику зарплат по основным ролям\n```\n\n```\nСравни зарплаты Senior Backend в Москве и Санкт-Петербурге и предложи вакансии, похожие на самую высокооплачиваемую\n```\n\n## Разработка\n\n```bash\ngit clone https://github.com/theYahia/hh-mcp.git\ncd hh-mcp\nnpm install\nnpm run build\nnpm test\n```\n\n## Справочник API\n\n- [Документация API hh.ru](https://api.hh.ru/)\n- [API hh.ru на GitHub](https://github.com/hhru/api)\n\n## Лицензия\n\nMIT\n\n---\n\nЧасть [WWmcp](https://github.com/theYahia/WWmcp) · Telegram: [@vhodvai](https://t.me/vhodvai)\n",
  "bytes": 7362,
  "sha": "4de3e5e139bc59478ad71f77483f1f5d1396818ab747d6e063aeed5f094ea465",
  "repo_slug": "theyahia/hh-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_theyahia_hh_mcp_f7fdac3d/readme"
}