ats-mcp-server: вакансии из hh.ru и систем найма
ats-mcp-server
MCP-сервер, который собирает вакансии из hh.ru и публичных API Greenhouse, Ashby, Lever, Workable и Bayt в едином формате без парсинга HTML
Низкий риск
Низкий уровень ставим, когда запись в основном дает агенту инструкции и справочные материалы.
Почему такой уровень
- Только читает публичные вакансии и не подает отклики от имени пользователя
- Локальная база и поиск работают на инфраструктуре пользователя, наружу отправляются только запросы к API источников
Установка
В терминале, через SkillFoxx CLI
npx skillfoxx add mcp/ats-mcp-serverОпределит агенты на машине, проверит риск и зафиксирует версию.
Другие способы установки
Собрано автоматически, проверьте перед установкой.
Выполните в терминале
claude mcp add --transport stdio --env 'API_KEY=<ваш API_KEY>' --env NODE_ENV=production ats-mcp-server -- nodeИли добавьте в файл .mcp.json, в проекте
{
"mcpServers": {
"ats-mcp-server": {
"command": "node",
"args": [],
"env": {
"API_KEY": "<ваш API_KEY>",
"NODE_ENV": "production"
}
}
}
}Если файл уже есть, добавьте сервер внутрь ключа mcpServers.
Ключи и настройки
API_KEYсекрет, обязательная- API ключ для доступа к провайдерам
ANOTHER_KEYсекрет, необязательная- Дополнительный секретный ключ
Замените значения в угловых скобках своими. Ключи не попадают в ссылки установки и не хранятся у нас.
Кнопка откроет агент и предложит добавить сервер. Если ничего не произошло, скопируйте конфиг ниже.
Добавьте в файл ~/.cursor/mcp.json, для всех проектов
{
"mcpServers": {
"ats-mcp-server": {
"command": "node",
"args": [],
"env": {
"API_KEY": "<ваш API_KEY>",
"NODE_ENV": "production"
}
}
}
}Если файл уже есть, добавьте сервер внутрь ключа mcpServers. Для одного проекта тот же блок кладут в .cursor/mcp.json.
Ключи и настройки
API_KEYсекрет, обязательная- API ключ для доступа к провайдерам
ANOTHER_KEYсекрет, необязательная- Дополнительный секретный ключ
Замените значения в угловых скобках своими. Ключи не попадают в ссылки установки и не хранятся у нас.
Кнопка откроет агент и предложит добавить сервер. Если ничего не произошло, скопируйте конфиг ниже.
Выполните в терминале
code --add-mcp '{"name":"ats-mcp-server","type":"stdio","command":"node","args":[],"env":{"API_KEY":"<ваш API_KEY>","NODE_ENV":"production"}}'Или добавьте в файл .vscode/mcp.json, в проекте
{
"servers": {
"ats-mcp-server": {
"type": "stdio",
"command": "node",
"args": [],
"env": {
"API_KEY": "<ваш API_KEY>",
"NODE_ENV": "production"
}
}
}
}Если файл уже есть, добавьте сервер внутрь ключа servers.
Ключи и настройки
API_KEYсекрет, обязательная- API ключ для доступа к провайдерам
ANOTHER_KEYсекрет, необязательная- Дополнительный секретный ключ
Замените значения в угловых скобках своими. Ключи не попадают в ссылки установки и не хранятся у нас.
Выполните в терминале
codex mcp add ats-mcp-server --env 'API_KEY=<ваш API_KEY>' --env NODE_ENV=production -- nodeИли добавьте в файл ~/.codex/config.toml, для всех проектов
[mcp_servers.ats-mcp-server]
command = "node"
args = []
env = { API_KEY = "<ваш API_KEY>", NODE_ENV = "production" }Если файл уже есть, допишите блок в конец.
Ключи и настройки
API_KEYсекрет, обязательная- API ключ для доступа к провайдерам
ANOTHER_KEYсекрет, необязательная- Дополнительный секретный ключ
Замените значения в угловых скобках своими. Ключи не попадают в ссылки установки и не хранятся у нас.
Выполните в терминале
gemini mcp add -s user -e 'API_KEY=<ваш API_KEY>' -e NODE_ENV=production ats-mcp-server nodeИли добавьте в файл ~/.gemini/settings.json, для всех проектов
{
"mcpServers": {
"ats-mcp-server": {
"command": "node",
"args": [],
"env": {
"API_KEY": "<ваш API_KEY>",
"NODE_ENV": "production"
}
}
}
}Если файл уже есть, добавьте сервер внутрь ключа mcpServers.
Ключи и настройки
API_KEYсекрет, обязательная- API ключ для доступа к провайдерам
ANOTHER_KEYсекрет, необязательная- Дополнительный секретный ключ
Замените значения в угловых скобках своими. Ключи не попадают в ссылки установки и не хранятся у нас.
Добавьте в файл ~/.config/devin/mcp_config.json, для всех проектов
{
"mcpServers": {
"ats-mcp-server": {
"command": "node",
"args": [],
"env": {
"API_KEY": "<ваш API_KEY>",
"NODE_ENV": "production"
}
}
}
}Если файл уже есть, добавьте сервер внутрь ключа mcpServers. В легаси Cascade конфиг MCP лежит в ~/.codeium/windsurf/mcp_config.json.
Ключи и настройки
API_KEYсекрет, обязательная- API ключ для доступа к провайдерам
ANOTHER_KEYсекрет, необязательная- Дополнительный секретный ключ
Замените значения в угловых скобках своими. Ключи не попадают в ссылки установки и не хранятся у нас.
Бывший Windsurf.
Добавьте в файл cline_mcp_settings.json, для всех проектов
{
"mcpServers": {
"ats-mcp-server": {
"command": "node",
"args": [],
"env": {
"API_KEY": "<ваш API_KEY>",
"NODE_ENV": "production"
}
}
}
}Если файл уже есть, добавьте сервер внутрь ключа mcpServers. Файл настроек открывается в Cline: вкладка MCP Servers, кнопка Configure MCP Servers.
Ключи и настройки
API_KEYсекрет, обязательная- API ключ для доступа к провайдерам
ANOTHER_KEYсекрет, необязательная- Дополнительный секретный ключ
Замените значения в угловых скобках своими. Ключи не попадают в ссылки установки и не хранятся у нас.
Добавьте в файл .roo/mcp.json, в проекте
{
"mcpServers": {
"ats-mcp-server": {
"command": "node",
"args": [],
"env": {
"API_KEY": "<ваш API_KEY>",
"NODE_ENV": "production"
}
}
}
}Если файл уже есть, добавьте сервер внутрь ключа mcpServers.
Ключи и настройки
API_KEYсекрет, обязательная- API ключ для доступа к провайдерам
ANOTHER_KEYсекрет, необязательная- Дополнительный секретный ключ
Замените значения в угловых скобках своими. Ключи не попадают в ссылки установки и не хранятся у нас.
Форк Roo Code, папки .roo те же.
Добавьте в файл opencode.json, в проекте
{
"mcp": {
"ats-mcp-server": {
"type": "local",
"command": [
"node"
],
"environment": {
"API_KEY": "<ваш API_KEY>",
"NODE_ENV": "production"
}
}
}
}Если файл уже есть, добавьте сервер внутрь ключа mcp.
Ключи и настройки
API_KEYсекрет, обязательная- API ключ для доступа к провайдерам
ANOTHER_KEYсекрет, необязательная- Дополнительный секретный ключ
Замените значения в угловых скобках своими. Ключи не попадают в ссылки установки и не хранятся у нас.
Добавьте в файл ~/.config/zed/settings.json, для всех проектов
{
"context_servers": {
"ats-mcp-server": {
"command": "node",
"args": [],
"env": {
"API_KEY": "<ваш API_KEY>",
"NODE_ENV": "production"
}
}
}
}Если файл уже есть, добавьте сервер внутрь ключа context_servers.
Ключи и настройки
API_KEYсекрет, обязательная- API ключ для доступа к провайдерам
ANOTHER_KEYсекрет, необязательная- Дополнительный секретный ключ
Замените значения в угловых скобках своими. Ключи не попадают в ссылки установки и не хранятся у нас.
Добавьте в файл .codeassistant/mcp.json, в проекте
{
"mcpServers": {
"ats-mcp-server": {
"command": "node",
"args": [],
"env": {
"API_KEY": "<ваш API_KEY>",
"NODE_ENV": "production"
}
}
}
}Если файл уже есть, добавьте сервер внутрь ключа mcpServers.
Ключи и настройки
API_KEYсекрет, обязательная- API ключ для доступа к провайдерам
ANOTHER_KEYсекрет, необязательная- Дополнительный секретный ключ
Замените значения в угловых скобках своими. Ключи не попадают в ссылки установки и не хранятся у нас.
Склонируй https://github.com/alexvozhak/ats-mcp-server, выполни npm ci, скопируй .env.example в .env и заполни ключи, подними Meilisearch командой docker compose up -d, собери проект npm run build и запусти npm start, затем вызывай search_all или search_hh для поиска вакансий.
Другие способы из описания автора
npm ci && cp .env.example .env && docker compose up -d && npm run build && npm startПолная установка из README: зависимости, инфраструктура Meilisearch, сборка и запуск.
Это чужой код. Посмотрите файлы в репозитории перед установкой.
Что делает
Каждый источник вакансий подключен отдельным провайдером с общим интерфейсом: четыре системы найма (ATS) по их публичным API и два джоб-борда, hh.ru и ближневосточный Bayt. Инструмент search_all ищет по всем источникам сразу, search_hh ищет только по hh.ru, get_job_details отдает детали по идентификатору, get_stats считает статистику по собранным вакансиям, а exclude_jobs и unexclude_job скрывают или возвращают вакансии в выдаче. Данные хранятся в SQLite, поиск построен на Meilisearch, для hh.ru используется отдельная типизированная Zod-схема ответов hh API. Добавить новый источник, по словам автора, значит написать один класс-провайдер.
Для кого. Для соискателей и разработчиков рекрутинговых инструментов, которым нужен один MCP вместо отдельного парсинга каждого джоб-борда и ATS.
Подходит, если
- Нужно искать вакансии сразу в нескольких источниках, включая hh.ru, одним запросом
- Нужны структурированные данные о вакансии без разбора HTML-страницы
- Нужно собирать статистику или вести локальный список исключенных вакансий
Не подходит, если
- Нужен только hh.ru: сервер шире, чем нужно, и требует поднимать инфраструктуру Meilisearch и Docker
- Нужен поиск резюме, отклики или другие функции работодателя на hh.ru: сервер работает только на поиск вакансий
- Нужна стабильная библиотека: часть кода лежит в src/poc как эксперименты по отдельным провайдерам
Пример запроса к агенту
Найди вакансии Python-разработчика в Москве на hh.ru и в международных ATS одновременноОграничения
Проект версии 0.1.0 от одного автора. Для работы нужна инфраструктура: Docker Compose с Meilisearch, переменные окружения в .env для источников. Часть провайдеров (Bayt) собирается через Crawlee/Playwright, а не только через API, что более хрупко к изменениям сайта. Код экспериментальных проверок провайдеров вынесен в отдельную папку src/poc и в основной сервер не входит.
Как отключить. Остановите сервер (npm run mcp:stop или docker compose down) и уберите его из конфигурации MCP клиента.
MCP
- Транспорт
- stdio
- Авторизация
- не нужна
Проверка безопасности
- Только читает публичные вакансии и не подает отклики от имени пользователя
- Локальная база и поиск работают на инфраструктуре пользователя, наружу отправляются только запросы к API источников
Коротко о README
README описывает MCP-сервер, агрегирующий вакансии из публичных API систем найма и джоб-бордов, включая hh.ru, без парсинга HTML. Перечислены пять инструментов MCP, стек (TypeScript, Node.js 24, MCP SDK, Zod, SQLite, Meilisearch, Vitest) и шаги установки через npm и Docker Compose. Отдельно упомянуты экспериментальные проверки провайдеров в src/poc. Лицензия MIT.
Частые вопросы
Можно ли искать только по hh.ru?
Да, инструмент search_hh ищет исключительно по hh.ru, а search_all объединяет все подключенные источники.
Нужен ли Docker для запуска?
Да, поиск построен на Meilisearch, который поднимается через docker compose up -d вместе с сопутствующими сервисами.
Похожие
Самостоятельно размещаемая база знаний с блочными ссылками и встроенным MCP-сервером для подключения AI-агентов к заметкам
CLI для всех API Google Workspace с выводом в JSON и набором скиллов для агентов: Drive, Gmail, Calendar, Sheets и другие
Локальный поиск по заметкам, документации и расшифровкам встреч в Markdown: ключевые слова, смысловой поиск и ранжирование, есть MCP
Менеджер задач для AI-разработки: разбирает PRD на задачи с зависимостями и ведет агента по ним через MCP или CLI