joblet-mcp-grok
joblet-mcp-grok
Автономный MCP-сервер, предоставляющий доступ только на чтение к поиску вакансий joblet.ai для Grok и любого другого MCP-хоста, соответствующего стандарту. Независимое развертывание — не использует общую инфраструктуру, ветку или цикл релизов с другими коннекторами Joblet.
Два инструмента, оба только на чтение (readOnlyHint: true):
search_jobs— поиск по ключевым словам с реальным фильтром по местоположению на стороне источника, фильтрацией релевантности на уровне MCP (совпадение токенов в названии/категории/отрасли/роли; совпадения только в описании отклоняются), дедупликацией по expVer/почти дубликатам и жестким ограничением в 8 результатов. Возвращает текст +structuredContent, а также виджет карточки вакансии MCP Apps для хостов, которые его отображают.get_job_details— полное объявление (описание, требования, обязанности, зарплата и место работы, если известны, ссылка для отклика) по идентификатору вакансии.
URL-адреса приложений передаются байт-в-байт (трекинг Joveo сохраняется, без прокси или редиректов). Тип занятости намеренно не отображается и не фильтруется: поиск на стороне источника не предоставляет авторитетного поля.
Требования
Node.js 18+ (разработано и протестировано на Node 24)
Никаких API-ключей или секретов — публичный API joblet.ai
Локальная настройка
npm ci
npm run build # bundles the widget to dist/mcp-app.html (required before start)
PORT=3010 npm start # MCP endpoint at http://localhost:3010/mcpПроверка работоспособности:
# GET /health -> {"status":"ok","version":"1.1.0"}MCP-эндпоинт: POST /mcp — Streamable HTTP, JSON-ответы, без сохранения состояния (без идентификаторов сессий). Требуется стандартный заголовок Accept: application/json, text/event-stream. GET / возвращает служебный баннер.
Проверка MCP-контракта локально
MCP_URL="http://localhost:3010/mcp" node test_client.mjs
MCP_URL="http://localhost:3010/mcp" node test_widget.mjsИли в интерактивном режиме: npm run inspect (MCP Inspector → Streamable HTTP → URL /mcp).
Разработка
npm run typecheck # server + widget/tests configs
npm test # vitest suites (server pipeline, widget, a11y, logging)
npm run build # production widget bundleКонфигурация
См. .env.example. Все параметры необязательны; значения по умолчанию подходят для продакшена. MCP_REQUEST_LOG=1 включает санитизированное журналирование каждого вызова (только хэши/длины/счетчики — никогда не записываются сырые тексты запросов, местоположения, URL для отклика или учетные данные).
Примечания по виджету
Виджет карточки вакансии сообщает хосту свою собственную высоту через уведомление MCP Apps sendSizeChanged (только высота, измеряется после requestAnimationFrame, с защитой от изменений, чтобы избежать циклов изменения размера) и учитывает фиксированную высоту контейнера хоста, если она задана. Будет ли хост соответствующим образом изменять размер iframe — это поведение хоста. Кнопка «Просмотр и отклик» использует стандартный запрос ui/open-link с видимым и доступным запасным вариантом внутри карточки (ссылка + действие копирования) всякий раз, когда хост отклоняет его или не поддерживает — она никогда не завершается молча.
This server cannot be deployed
Maintenance
Related MCP Connectors
JobsPipe — data pipeline of every job posting on the web. Search live, normalized job postings from 30+ ATS feeds and job boards for AI agents via MCP.
Search Thousands of jobs, Thousands of companies. MCP for Claude, ChatGPT, Codex and Cursor.
MCP for 8,700+ current AI jobs. 13 tools: search, match, salaries, companies, commerce quotes.