freehire
freehire MCP сервер
Сервер MCP поверх API вакансий freehire. Он позволяет любому MCP-хосту — Claude Desktop, Claude Code или совместимому агенту — искать, фильтровать и откликаться на IT-вакансии без браузера, аутентифицируясь с помощью персонального API-ключа. Вакансии собираются напрямую с карьерных страниц компаний — более 3,3 млн открытых позиций в 294 тыс. компаний, нормализованных в единую схему и помеченных стеком, уровнем, регионом и форматом работы (актуальные цифры).
Он повторяет freehire CLI: тот же API, те же учетные данные, но в виде MCP-инструментов вместо shell-команд.
Установка
Глобальная установка не требуется — хост запускает его через npx. Добавьте его в конфигурацию MCP вашего хоста (Claude Desktop → Настройки → Разработчик → Изменить конфигурацию или ~/.claude.json для Claude Code):
{
"mcpServers": {
"freehire": {
"command": "npx",
"args": ["-y", "freehire-mcp"],
"env": { "FREEHIRE_TOKEN": "fhk_xxxxxxxx" }
}
}
}Создайте ключ fhk_… в веб-приложении (freehire.me → меню аккаунта → API-ключи). Если вы уже используете freehire CLI (freehire auth login), вы можете опустить env — сервер читает тот же ~/.freehire/creds.json.
Related MCP server: job-monitor
Аутентификация
Токен и базовый URL API определяются с приоритетом env → ~/.freehire/creds.json → по умолчанию https://freehire.me:
Что | Источники |
Токен |
|
Базовый URL API |
|
Сервер только читает файл учетных данных (он никогда не записывает его — вход в систему остаётся задачей CLI). Если токен не настроен, инструменты возвращают понятную ошибку «не аутентифицирован», а не сервер не запускается.
Инструменты
Инструмент | Назначение |
| Аутентифицированный пользователь (проверить ключ). |
| Словарь фильтров/навыков: актуальные значения каждого фасета с количеством. Вызывайте первым. |
| Поиск вакансий по ключевым словам и фасетам; возвращает вакансии с полным описанием в формате markdown и общее количество совпадений. |
| Оценка списка навыков по актуальному рыночному спросу (покрытие + пробелы). |
| Полное содержимое одной вакансии по slug. |
| Компания и её открытые вакансии по slug. |
| Отметить вакансию как отклик. |
| Добавить / удалить закладку. |
| Установить этап отклика (проверяется сервером). |
| Прикрепить произвольную заметку. |
| Отслеживаемые вакансии вызывающего (все/просмотренные/сохранённые/с откликом) с этапом и заметкой. |
| Начать (или возобновить) адаптацию для вакансии; возвращает id CV, который принимают другие инструменты |
| Адаптированные CV вызывающего с указанием вакансии, для которой они созданы. |
| Анализ соответствия, к которому должно стремиться адаптированное CV (missing_have vs missing_gap). |
| Полный документ адаптированного CV. |
| Применить пакет правок по адресам к адаптированному CV атомарно (проверяется сервером; неподтверждённые утверждения отклоняются). |
| Рендеринг адаптированного CV в PDF, возвращается как base64-ресурс |
| Банк опыта кандидата с происхождением каждого достижения. |
| Записать место работы или одно доказательство. |
| Исправить одно. На уровне полей: что не указано — сохраняется. |
| Удалить одно. Без отмены; место должно быть пустым. |
| Отправить вакансию на модерацию. |
| Отправки вызывающего со статусом. |
| Модератор: создать / редактировать вакансию (403 без роли). |
| Модератор: очередь на проверку. |
| Модератор: принять или отклонить отправку. |
Фильтры. search, market_fit и facets используют одни и те же параметры рыночных фильтров: remote, region, country, city, company, category, role, seniority, employment_type, english_level, exclude_skill, salary_min, visa, плюс общая карта facets ({"source": "greenhouse"}) для любого другого фасета из словаря. Узнавайте допустимые значения с помощью инструмента facets — не выдумывайте их. В search skills — это фильтр; в market_fit skills — измеряемый набор.
География расширяется. region, country и city — это одна группа ИЛИ: region: ["eu"] с country: ["IT"] означает «в Европе или в Италии» и возвращает всё, что вернул бы только регион. Чтобы искать в одной стране, передайте country и опустите region. Эти три параметра называют одно понятие — где — поэтому выбор двух мест читается как «либо», что делает region: ["eu"] с country: ["BR"] («Европа или Бразилия») полезным. Нет режима И: _mode=and не применяется к географии.
Неизвестные параметры игнорируются, а не отклоняются. Ключ фильтра, который API не распознаёт, не приводит к ошибке запроса, а расширяет его. Такие ключи возвращаются в списке ignored результата, с did_you_mean, если ошибка была только в грамматическом числе. search сообщает об этом рядом с total; facets и market_fit возвращают один объект, поэтому они оборачивают его как {data, ignored} — и только в этом случае, не меняя форму чистого вызова. Любое число из результата с ignored отвечает на более широкий вопрос, чем заданный — повторите с предложенным именем, прежде чем сообщать о нём.
Описания. search читает агентскую конечную точку API, поэтому каждый результат уже содержит полное описание вакансии в формате markdown — хост может просматривать набор результатов без вызова job для каждого. Описания длинные, поэтому держите limit скромным.
Правило доказательств. Каждое достижение в банке фиксирует, кто его утвердил. cv_import, stated_in_chat и manual означают, что кандидат, и их можно цитировать в CV; agent_inferred означает, что модель прочитала его в запись, и цитировать нельзя. cv_edit отклоняет любое утверждение о кандидате без evidence_id, указывающего на цитируемое, поэтому experience_list — это инструмент, который делает cv_edit вообще пригодным к использованию.
Исправление достижения не меняет эту метку: agent_inferred остаётся нецитируемым, как бы его ни переформулировали. Единственный способ сделать его цитируемым — спросить кандидата, а затем записать то, что он говорит, с помощью experience_add_achievement.
Удаление окончательно — в банке нет отмены. Место должно быть очищено, прежде чем его можно удалить, потому что удаление места удалит все достижения под ним. Объединение двух достижений в одно с сохранением чисел из обоих — на сайте.
Каждый инструмент возвращает необработанные data API в виде JSON-текста; ошибка API становится результатом isError с HTTP-статусом (401 добавляет подсказку об аутентификации).
Разработка
npm install
npm test # vitest: config, client (mock server), facets, tool dispatch
npm run build # tsc → dist/Лицензия
MIT — см. LICENSE. Бэкенд и CLI freehire также под MIT.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
Alicense-qualityAmaintenanceMCP server for job search and application tracking, enabling AI agents to search jobs, get details, manage applications, and find contacts across 128K+ jobs and 1,900+ companies.1,2962MIT- Alicense-qualityCmaintenanceSearches LinkedIn, Indeed, USAJobs, and Google Jobs from the command line, deduplicates across sources, and optionally finds hiring manager emails; also runs as an MCP server for AI agents.MIT
- Flicense-qualityBmaintenanceEnables job search on LinkedIn through MCP tools, including keyword and location search, filtering by remote, easy apply, experience level, job type, and date, and retrieving job details.
- Alicense-qualityCmaintenanceEnables to interact with job application workflows through MCP, allowing users to find jobs, generate non-trivial applications with proof-maps, and build offline dashboards, all without auto-submitting.Apache 2.0
Related MCP Connectors
Search live startup jobs from Claude, Cursor, or ChatGPT via MCP. Free, no account needed.
GetJobzi MCP server for job search, application tracking, and career forecasting.
RemoteOK MCP — remote-work job board (tech-heavy), keyless.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/strelov1/freehire-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server