Skip to main content
Glama
Alexvozhak

ats-mcp-server

by Alexvozhak
README.md
# ats-mcp-server

MCP-сервер, агрегирующий вакансии напрямую из публичных API систем найма (ATS) и
джоб-бордов. Один запрос — вакансии из нескольких источников в едином формате, без
парсинга HTML и без сторонних агрегаторов.

Сервер отдаёт данные через Model Context Protocol, поэтому подключается к любому
MCP-клиенту (Claude и т.п.): клиент вызывает ручку, получает структурированный список
вакансий и работает с ним дальше.

## Источники

- **ATS** (публичные API): Greenhouse, Ashby, Lever, Workable
- **Джоб-борды**: hh.ru, Bayt

Каждый источник — за отдельным провайдером с единым интерфейсом, поэтому добавить новый
источник значит написать один класс-провайдер.

## Ручки MCP

- `search_all` — поиск по всем ATS-источникам сразу
- `search_hh` — поиск по hh.ru
- `get_job_details` — детали вакансии по идентификатору
- `get_stats` — статистика по собранным вакансиям
- `exclude_jobs` / `unexclude_job` — скрыть/вернуть вакансии в выдаче

## Стек

TypeScript, Node.js 24, MCP SDK, Zod (схемы и валидация), SQLite (хранение),
Meilisearch (поиск), Vitest (тесты).

## Установка

```bash
npm ci
cp .env.example .env        # заполнить ключи (см. .env.example)
docker compose up -d        # Meilisearch и сопутствующие сервисы
npm run build
```

## Запуск и разработка

```bash
npm run dev          # сервер в watch-режиме (tsx)
npm start            # собранная версия (dist/)

npm run test:run     # тесты (vitest)
npm run check        # tsc --noEmit + eslint + knip
npm run lint:fix     # автоправка линтера
```

Экспериментальные проверки провайдеров — в `src/poc/` (`npm run poc:greenhouse`,
`poc:ashby`, `poc:lever`, `poc:workable`, `poc:all`).

## Лицензия

MIT — файл `LICENSE`.