@dreamworkhq/mcp
MCP-сервер для Dreamwork: инструменты поиска работы для AI-агентов. Любой MCP-клиент (Claude Desktop, Cursor, MCP Inspector) может использовать его, чтобы находить вакансии, ранжировать их, адаптировать материалы для отклика, подавать заявки и отслеживать результаты для одного человека с течением времени.
Этот сервер — тонкий шлюз: он обращается к Dreamwork API по HTTPS и не имеет собственного доступа к базе данных. Используется транспорт stdio, а stdout содержит только JSON-RPC-фреймы.
Установка
Устанавливать ничего не нужно. MCP-клиенты запускают сервер по запросу с помощью npx. В примерах ниже используется npx -y @dreamworkhq/mcp.
Для начала не нужны ни ключ, ни аккаунт. Если DREAMWORK_API_KEY не задан, сервер
запускается в бесплатном гостевом режиме, в котором агент может искать и просматривать все вакансии.
Блоки env ниже необязательны: добавьте ключ, если нужны инструменты аккаунта
(см. раздел «Гостевой режим и API-ключи»).
Настройка
Claude Desktop
Добавьте запись в файл claude_desktop_config.json
(~/Library/Application Support/Claude/claude_desktop_config.json в macOS):
{
"mcpServers": {
"dreamwork": {
"command": "npx",
"args": ["-y", "@dreamworkhq/mcp"],
"env": {
"DREAMWORK_API_KEY": "sk_..."
}
}
}
}
После изменения конфигурации перезапустите Claude Desktop. Укажите учётные данные в блоке env. Не запускайте command через оболочку или загрузчик переменных окружения, например dotenvx run -- …: на сервере stdio любой текст, который такая обёртка выводит в stdout, нарушает поток JSON-RPC и приводит к зависанию вызовов инструментов.
Cursor и другие клиенты
Подойдёт любой MCP-клиент с поддержкой stdio. В Cursor используется та же конфигурация, что и выше: укажите команду npx -y @dreamworkhq/mcp и передайте DREAMWORK_API_KEY через переменные окружения. Чтобы проверить настройку с помощью Inspector:
DREAMWORK_API_KEY=sk_... npx @modelcontextprotocol/inspector npx -y @dreamworkhq/mcp
Размещённая конечная точка
Dreamwork также предоставляет эти инструменты через Streamable HTTP по адресу
https://mcp.dreamworkhq.com/mcp. В claude.ai, Claude Desktop или ChatGPT
добавьте этот URL как пользовательский коннектор и войдите в Dreamwork. Устанавливать ничего не нужно, ключ вводить тоже не придётся. На экране согласия можно выбрать разрешения, которые получит коннектор.
Клиенты, поддерживающие передачу заголовков запросов, могут вместо этого отправлять API-ключ на тот же URL.
В Claude Code:
claude mcp add --transport http dreamwork https://mcp.dreamworkhq.com/mcp \
--header "Authorization: Bearer sk_..."
Гостевой режим и API-ключи
Гостевой режим бесплатный, аккаунт не требуется. Если ключ не задан, сервер запускается в гостевом режиме и предоставляет общедоступные инструменты только для чтения: browse_listings,
get_listing, get_platform_context и get_upgrade_link. Сервер сообщает агенту о гостевом режиме, чтобы тот мог объяснить, какие функции доступны. В ответ на вызов инструментов аккаунта сервер возвращает краткое сообщение «No API key» с инструкциями по получению ключа.
Для API-ключа нужен бесплатный аккаунт. Ключ требуется для подбора вакансий с учётом вашего резюме, сохранённых вакансий, адаптированных материалов, воронки, переписки с рекрутерами и подачи заявок.
Ключ может создать любой аккаунт Dreamwork, в том числе на бесплатном тарифе. Тариф определяет лимит запросов и доступный объём использования ключа. Войдите на
dreamworkhq.com, откройте Profile, затем MCP (или нажмите кнопку Get a key на странице Agents), задайте ключ в переменной DREAMWORK_API_KEY (формат sk_...) и перезапустите MCP-клиент.
При создании ключа выберите разрешённые действия: чтение, запись, подача заявок и отправка писем. По умолчанию на странице профиля выбраны все четыре разрешения. Снимите отметки с тех действий, которые агенту выполнять не следует. Ключ может предоставлять меньше прав, чем есть у вас, но не больше.
Переменные окружения
| Переменная | Обязательна | Значение по умолчанию | Назначение |
|---|---|---|---|
DREAMWORK_API_KEY | Для инструментов аккаунта | нет | API-ключ (sk_...). Открывает доступ к воронке, резюме, подаче заявок, поиску контактов, профилю и собеседованиям. |
DREAMWORK_API_URL | Нет | https://api.dreamworkhq.com | Переопределяет конечную точку API (для локальной разработки или собственного хостинга). |
DREAMWORK_UNREAD_NOTICES | Нет | on | Значение off (а также 0/false/no) отключает добавление к результатам инструментов уведомления о непрочитанных письмах от рекрутеров. Проверка выполняется не чаще одного раза в пять минут и не помечает письма как прочитанные. |
JOBLESS_API_TOKEN и JOBLESS_API_URL по-прежнему поддерживаются как псевдонимы для обратной совместимости с DREAMWORK_API_KEY и DREAMWORK_API_URL. В новых конфигурациях используйте имена DREAMWORK_.
Телеметрия
Для измерения использования при первом запуске сервер создаёт анонимный случайный идентификатор установки (UUID) и сохраняет его в каталоге состояния вашей ОС
($XDG_STATE_HOME/dreamwork/install-id, ~/.local/state/dreamwork/install-id в
Linux/macOS или %LOCALAPPDATA%\dreamwork\install-id в Windows). Это случайное
значение, которое не формируется на основе имени хоста, имени пользователя или каких-либо характеристик устройства. Идентификатор учитывает уникальные установки, использующие гостевой (неавторизованный) режим. Он создаётся во время работы на вашем устройстве, а не при сборке или публикации.
Отключить телеметрию можно, задав одну из переменных окружения:
-
DREAMWORK_TELEMETRY=0(также принимаются значенияfalse/no/off) -
DO_NOT_TRACK=1(стандартный способ отказаться от отслеживания; также принимаются значенияtrue/yes/on)
При отключённой телеметрии идентификатор установки не создаётся, не считывается и не отправляется.
Инструменты
Типичный сценарий: просмотреть общедоступный каталог, сохранить вакансии в воронку, адаптировать материалы, подать заявки, а затем отслеживать ответы и собеседования. Сначала вызовите
get_platform_context. Этот инструмент описывает возможности Dreamwork и помогает агенту выбрать подходящий сценарий.
Общедоступные инструменты (ключ не нужен):
browse_listings, get_listing, get_platform_context, get_upgrade_link
Действия ассистента: для каждой возможности в реестре ассистента Dreamwork предусмотрен отдельный инструмент. Все они проходят через ту же последовательность проверок авторизации и журнал подтверждений, что и встроенный в сайт ассистент. При первом вызове инструмента, выполняющего действие с последствиями, выполнение приостанавливается: инструмент возвращает сводку и confirmationToken. Чтобы продолжить, отправьте этот токен повторно с теми же аргументами.
apply, cancel_apply, confirm_hypothesis, dismiss_match, edit_answer, edit_cover_letter, edit_resume, forget_hypothesis, format_resume, generate_pack, get_application_documents, get_application_readiness, get_application_status, get_autopilot_settings, get_autopilot_status, get_career_record, get_communication_preferences, get_inbox, get_job, get_pack_status, get_pipeline, get_preferences, get_resume_download_link, get_task, get_unread_reminders, get_updates_since, get_usage, import_job, list_matches, list_tasks, mark_applied_offsite, mark_messages_read, move_pipeline, parse_preferences_text, prepare_applications, remember_hypothesis, replace_application_document, reply_to_recruiter, restore_material, save_application_answers, save_job, set_autopilot, start_checkout, strengthen_application, undo_last, update_autopilot_settings, update_communication_preferences, update_preferences
Прямые инструменты продукта: маршруты, за которыми не закреплено действие из реестра.
add_contact, add_jobs, generate_outreach, generate_resume, get_application_materials, get_generated_resumes, get_profile, get_stats, list_contacts, list_interviews, reopen_application_materials, update_application_materials, update_profile, upload_resume
Сервер также предоставляет пять промптов, которые хосты, например Claude Desktop и
Claude Code, отображают как команды: morning_brief (что изменилось с момента последней проверки), find_and_prepare (поиск вакансий, выбор и подготовка материалов), apply_to_prepared (заполнение недостающих ответов, проверка и подача заявки с подтверждением), interview_prep и autopilot_setup.
Примечания к некоторым инструментам:
- Ни один инструмент не отправляет письма и не подаёт заявки при первом вызове. Инструменты
apply,
reply_to_recruiter, set_autopilot, update_autopilot_settings и
start_checkout возвращают статус held, сводку и confirmationToken. Действие выполняется только после повторной передачи этого токена с теми же аргументами.
- В версии 1.3.0 удалены инструменты из версии 1.2.0, заменённые действиями реестра:
search_jobsи
list_applications (используйте get_pipeline; для поиска по каталогу — browse_listings), apply_to_job (apply), add_listing_to_pipeline (save_job), skip_job (dismiss_match) и send_outreach. Ответы рекрутерам и повторная подача заявок выполняются через reply_to_recruiter и apply.
- В выпусках после версии 1.5.1 больше нет инструментов
list_escalationsи
resolve_escalation; их также нет в размещённой версии сервера. Dreamwork больше не передаёт вам заявку на рассмотрение в виде эскалации, поэтому просматривать и обрабатывать такие эскалации не требуется.
-
Инструменты
update_application_materialsиreopen_application_materialsдоступны участникам группы поэтапного внедрения Applications, которым API предоставляет доступ. Для остальных пользователей API возвращает собственное сообщение об отказе. -
get_statsсобирает статистику по воронке вошедшего в систему кандидата, поэтому, как и для остальных инструментов этой категории, для него нужен ключ.
Основные области доступа
Ключ API содержит области доступа, которые выбираются при его создании:
| Область доступа | Что она разрешает |
|---|---|
read | Все действия для чтения: совпадения, этапы процесса, входящие сообщения, статус, использование и квитанции |
write | Недорогие операции записи, выполняемые через очередь: сохранение, отклонение, перемещение, редактирование материалов, изменение предпочтений и создание ссылок для оформления заказа |
apply | Отправку заявки, отмену заявки, отправка которой ещё не завершена, и Autopilot |
send | Отправку писем рекрутеру |
Ограничения по областям доступа применяются ко всем способам выполнения действий, в том числе к прямым запросам к маршрутам.
write — минимально необходимая область доступа для внесения изменений: ключ без неё отклоняется при любом
запросе, кроме GET, HEAD и OPTIONS. Поэтому ключ только для чтения не позволит изменить профиль или переместить карточку,
обратившись напрямую к маршруту. Ключ без apply отклоняется при вызове apply, а также при
запросах к POST /jobs/:id/apply, маршрутам turbo-apply и маршрутам эскалации. Ключ
без send отклоняется при вызове reply_to_recruiter, а также при запросах к
POST /outreach/send и POST /conversations/:id/reply. Прямой вызов возвращает 403 с
кодом api_key_scope_required, указанием необходимой области доступа и сообщением о дальнейших действиях;
действие ассистента возвращает action_not_authorized с теми же рекомендациями.
Ключ не может управлять другими ключами, менять токен сессии или удалять аккаунт.
При таких запросах всегда возвращается 403 session_required, независимо от имеющихся у ключа областей доступа.
На странице профиля по умолчанию выбраны все четыре области доступа. Если в запросе на создание ключа
области не указаны, ему назначаются read и write. Ключ, созданный до появления областей доступа,
сохраняет все прежние возможности.
Устранение неполадок
-
Вызовы инструментов зависают или завершаются по тайм-ауту, но рукопожатие проходит успешно. Возможно,
в stdout выводятся данные, не соответствующие формату JSON-RPC. Убедитесь, что
commandне обёрнут вenv-loader или shell, выводящий приветственное сообщение, и обновите версию до последней
(
npx -y @dreamworkhq/mcp@latest; если кэширована старая сборка, очистите кэш npx командойrm -rf ~/.npm/_npx).В stdout должны передаваться только кадры протокола. Все журналы сервера выводятся в stderr.
-
Каждый инструмент для работы с аккаунтом сообщает "No API key". Переменная
DREAMWORK_API_KEYнепередаётся процессу. Проверьте, указана ли она в блоке
envконфигурации клиента. -
Каждый инструмент для работы с аккаунтом сообщает "API key rejected". Ключ дошёл до сервера,
но срок его действия истёк или он был отозван. Создайте новый ключ в разделе «Профиль», затем откройте MCP,
замените значение
DREAMWORK_API_KEYна новый ключ и перезапустите MCP-клиент. -
При вызове Apply возвращается
missing_onboarding_fieldsилиmissing_profile_fields.Инструмент указывает отсутствующие поля и путь в Dreamwork, по которому можно их заполнить.
Укажите недостающие данные в Dreamwork и повторите запрос. Неудачный запрос не запустил подачу заявки.
Разработка
pnpm --filter @dreamworkhq/mcp check # typecheck
pnpm --filter @dreamworkhq/mcp build # emit dist/
pnpm --filter @dreamworkhq/mcp test # unit tests
Точка входа stdio находится в src/stdio.ts; определения инструментов — в
src/mcp.ts; HTTP-клиент для API — в src/client.ts.
Сервер получает конфигурацию только из переменных окружения процесса. Он не
загружает файл .env. Для локальной разработки задайте переменные в shell, например:
DREAMWORK_API_URL=http://127.0.0.1:3000 pnpm --filter @dreamworkhq/mcp stdio.
Решения о границах пакетов, соглашения о регистрации инструментов
(registerDreamworkTool), правила обработки ошибок и версионирования, а также отложенные условия проверки
описаны в ARCHITECTURE.md. Каталог инструментов выше
проверяется на соответствие зарегистрированным инструментам с помощью test/tool-catalog.test.ts.
Лицензия
MIT