Dreamwork
Búsqueda de empleo para asistentes de IA: explora trabajos, adapta currículos y cartas de presentación, postúlate y realiza un seguimiento de las solicitudes. La navegación pública no requiere cuenta; las herramientas de cuenta siguen tu plan de Dreamwork.
Servidor MCP alojado
npx add-mcp 'https://mcp.dreamworkhq.com/mcp'Se instala en Claude Code, Codex, Cursor y más
Documentación
El código fuente público de MCP de Dreamwork vive aquí. El cliente llama a la API alojada de Dreamwork; no incluye la API, la base de datos, los trabajadores ni el servicio OAuth alojado.
Conéctate por HTTP en https://mcp.dreamworkhq.com/mcp, o ejecuta el cliente stdio
con npx -y @dreamworkhq/mcp. La navegación pública de empleos funciona sin clave.
Para el desarrollo del código fuente, usa Node 22 y pnpm 10.23.0:
pnpm install --frozen-lockfile
pnpm check
pnpm test
pnpm build
pnpm test:package
El cliente MCP está en apps/mcp. packages/api-contracts y
packages/assistant-contracts contienen sus dependencias de código fuente; están empaquetadas
en el CLI publicado. source-export.json registra el commit del código fuente de la versión.
Consulta CONTRIBUTING.md para saber cómo los cambios llegan a una versión.
@dreamworkhq/mcp
Servidor MCP para Dreamwork: herramientas de búsqueda de empleo para agentes de IA. Cualquier cliente MCP (Claude Desktop, Cursor, el MCP Inspector) puede usarlo para encontrar roles, clasificarlos, adaptar solicitudes, postularse y hacer seguimiento de resultados para una persona a lo largo del tiempo.
Este servidor es una pasarela ligera: llama a la API de Dreamwork por HTTPS y no tiene acceso propio a bases de datos. El transporte es stdio, y stdout lleva solo tramas JSON-RPC.
Instalación
No hay paso de instalación. Los clientes MCP lo ejecutan bajo demanda con npx. Los ejemplos a continuación usan npx -y @dreamworkhq/mcp.
No se necesita clave ni cuenta para comenzar. Sin DREAMWORK_API_KEY el servidor
se ejecuta en modo invitado gratuito, donde tu agente puede buscar y leer cada listado.
Los bloques env a continuación son opcionales; agrega una clave cuando quieras las herramientas
de cuenta (consulta Modo invitado y claves de API).
Configuración
Claude Desktop
Agrega una entrada a tu claude_desktop_config.json
(~/Library/Application Support/Claude/claude_desktop_config.json en macOS):
{
"mcpServers": {
"dreamwork": {
"command": "npx",
"args": ["-y", "@dreamworkhq/mcp"],
"env": {
"DREAMWORK_API_KEY": "sk_..."
}
}
}
}
Reinicia Claude Desktop después de editar. Pon las credenciales en el bloque env. No
envuelvas command en un shell ni en un cargador de entorno como dotenvx run -- …: en un servidor
stdio, cualquier banner que el envoltorio imprima en stdout corrompe el flujo JSON-RPC y
cuelga las llamadas a herramientas.
Cursor y otros clientes
Cualquier cliente MCP stdio funciona. Cursor usa la misma configuración mostrada arriba: apunta el
comando a npx -y @dreamworkhq/mcp y pasa DREAMWORK_API_KEY en el
entorno. Para verificar la configuración con el Inspector:
DREAMWORK_API_KEY=sk_... npx @modelcontextprotocol/inspector npx -y @dreamworkhq/mcp
Endpoint alojado
Dreamwork también sirve estas herramientas por Streamable HTTP en
https://mcp.dreamworkhq.com/mcp. En claude.ai, Claude Desktop o ChatGPT,
agrega esa URL como conector personalizado e inicia sesión en Dreamwork. No hay nada
que instalar ni clave que pegar. La pantalla de consentimiento pregunta qué alcances
recibe el conector.
Los clientes que establecen encabezados de solicitud pueden enviar una clave de API a la misma URL en su lugar. En Claude Code:
claude mcp add --transport http dreamwork https://mcp.dreamworkhq.com/mcp \
--header "Authorization: Bearer sk_..."
Modo invitado y claves de API
El modo invitado es gratuito y no necesita cuenta. Sin clave configurada, el servidor se inicia en
modo invitado y expone las herramientas públicas de solo lectura: browse_listings,
get_listing, get_platform_context y get_upgrade_link. El servidor le dice
al agente que está en modo invitado, para que el agente pueda decir qué funciona ahora. Las herramientas
de cuenta responden con un breve mensaje "No API key" que enumera los pasos para obtener una.
Una clave de API necesita una cuenta gratuita. Las coincidencias clasificadas contra tu currículum, empleos guardados,
materiales adaptados, el pipeline, el correo del reclutador y las postulaciones necesitan una clave de API.
Cualquier cuenta de Dreamwork puede generar una, incluido el plan gratuito. Tu plan establece
el límite de tasa y las asignaciones de uso de la clave. Inicia sesión en
dreamworkhq.com, abre Perfil y luego MCP (o usa
el botón Obtener clave en la página Agentes), luego configura la clave como
DREAMWORK_API_KEY (formato sk_...) y reinicia tu cliente MCP.
Cuando generas una clave, eliges qué puede hacer: leer, escribir, postularse, enviar correo. La página de perfil comienza con las cuatro seleccionadas; desmarca cualquier cosa que tu agente no deba hacer. Una clave puede hacer menos que tú, nunca más.
Variables de entorno
| Variable | Requerida | Predeterminado | Propósito |
|---|---|---|---|
DREAMWORK_API_KEY | Para herramientas de cuenta | ninguna | Clave de API (sk_...). Desbloquea pipeline, currículum, postulación, divulgación, perfil, entrevistas. |
DREAMWORK_API_URL | No | https://api.dreamworkhq.com | Sobrescribe el endpoint de la API (desarrollo local / autoalojado). |
DREAMWORK_UNREAD_NOTICES | No | activado | off (también 0/false/no) evita que los resultados de las herramientas incluyan una nota sobre correo de reclutador no leído. Como máximo una verificación cada cinco minutos; verificar nunca marca el correo como leído. |
JOBLESS_API_TOKEN y JOBLESS_API_URL todavía se aceptan como alias
compatibles hacia atrás para DREAMWORK_API_KEY y DREAMWORK_API_URL; prefiere los nombres DREAMWORK_
para configuraciones nuevas.
Telemetría
Para medir el uso, el servidor genera un id de instalación anónimo aleatorio (un
UUID) en la primera ejecución y lo almacena en tu directorio de estado del sistema operativo
($XDG_STATE_HOME/dreamwork/install-id, ~/.local/state/dreamwork/install-id en
Linux/macOS, o %LOCALAPPDATA%\dreamwork\install-id en Windows). Es un valor
aleatorio, nunca derivado de tu nombre de host, nombre de usuario ni ningún atributo de la máquina. Cuenta
instalaciones únicas del uso de invitado (no autenticado). Se escribe en
tiempo de ejecución en tu máquina, nunca en tiempo de compilación o publicación.
Para optar por no participar, configura cualquiera de estas variables de entorno:
DREAMWORK_TELEMETRY=0(tambiénfalse/no/off)DO_NOT_TRACK=1(el estándar de exclusión; tambiéntrue/yes/on)
Con la telemetría deshabilitada, no se genera, lee ni envía ningún id de instalación.
Herramientas
El flujo típico: navega por el índice público, guarda roles en el pipeline, adapta
materiales, postúlate y luego haz seguimiento de respuestas y entrevistas. Llama a
get_platform_context primero. Describe lo que Dreamwork puede hacer, para que el agente
elija el flujo de trabajo correcto.
Públicas (sin clave):
browse_listings, get_listing, get_platform_context, get_upgrade_link
Acciones de asistente: una herramienta por capacidad en el registro de asistente de Dreamwork, cada una ejecutándose a través de la misma escalera de autorización y el libro de recibos que usa el asistente en el sitio. Una acción consecuente se detiene en su primera llamada, respondiendo con un resumen y un confirmationToken; envía ese token de vuelta con argumentos idénticos para continuar.
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_resume_work_history, get_task, get_unread_reminders, get_updates_since, get_usage, import_job, list_dismissed_matches, 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_match, restore_material, save_application_answers, save_job, set_autopilot, start_checkout, strengthen_application, undo_last, update_autopilot_settings, update_communication_preferences, update_preferences
Herramientas directas de producto: rutas sin acción de registro detrás.
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
El servidor también ofrece cinco prompts, que hosts como Claude Desktop y
Claude Code muestran como comandos: morning_brief (qué cambió desde la última
vez que revisaste), find_and_prepare (buscar, elegir, preparar materiales),
apply_to_prepared (completar respuestas faltantes, revisar, postularse con
confirmación), interview_prep y autopilot_setup.
Notas sobre algunas herramientas:
- Ninguna herramienta envía correo ni envía una postulación en su primera llamada.
apply,reply_to_recruiter,set_autopilot,update_autopilot_settingsystart_checkoutdevuelvenheldcon un resumen y unconfirmationToken, y actúan solo cuando envías ese token de vuelta con argumentos idénticos. - 1.3.0 eliminó las herramientas de 1.2.0 que una acción de registro reemplazó:
search_jobsylist_applications(usaget_pipeline;browse_listingsbusca en el índice),apply_to_job(apply),add_listing_to_pipeline(save_job),skip_job(dismiss_match) ysend_outreach. Las respuestas y reenvíos pasan porreply_to_recruiteryapply. - Las versiones posteriores a 1.5.1 ya no incluyen
list_escalationsyresolve_escalation, y el servidor alojado ya no las ofrece. Dreamwork ya no te devuelve una postulación como escalamiento, así que no hay nada que listar o resolver. update_application_materialsyreopen_application_materialsestán abiertos a la cohorte de implementación de Applications que la API admite; fuera de ella devuelven el propio rechazo de la API.get_statsagrega el pipeline del candidato autenticado, así que necesita una clave como el resto.
Alcances de clave
Una clave de API lleva alcances, elegidos cuando la generas:
| Alcance | Qué desbloquea |
|---|---|
read | Cada acción de lectura: coincidencias, pipeline, bandeja de entrada, estado, uso, recibos |
write | Escrituras baratas y en cola: guardar, descartar, mover, editar materiales, preferencias, enlaces de pago |
apply | Enviar una postulación, cancelar una que aún se está enviando y Autopilot |
send | Enviar correo a un reclutador |
Un alcance controla cada camino hacia la acción, incluidas las rutas directas.
write es el mínimo para cambiar cualquier cosa: una clave sin él es rechazada en cualquier
solicitud que no sea un GET, HEAD o OPTIONS, así que una clave de lectura no puede reescribir
un perfil ni mover el tablero llamando a la ruta directamente. Una clave sin
apply es rechazada en apply, y también en
POST /jobs/:id/apply, las rutas de postulación turbo y las rutas de escalamiento. Una clave
sin send es rechazada en reply_to_recruiter, en
POST /outreach/send y en POST /conversations/:id/reply. Una llamada directa
responde 403 con
api_key_scope_required, el alcance que quiere y un mensaje que dice qué hacer;
una acción de asistente responde action_not_authorized con el mismo siguiente paso.
Una clave nunca puede administrar claves, rotar el token de sesión ni eliminar la cuenta.
Esas responden 403 session_required sin importar lo que tengan.
La página de perfil preselecciona los cuatro alcances, y una solicitud de clave que no nombre alcances obtiene lectura y escritura. Una clave creada antes de que existieran los alcances conserva todo lo que ya podía hacer.
Solución de problemas
- Las llamadas a herramientas se cuelgan / agotan el tiempo, pero el handshake tiene éxito. Algo está
escribiendo bytes que no son JSON-RPC en stdout. Asegúrate de que
commandno esté envuelto en un cargador de entorno o shell que imprima un banner, y actualiza a la última versión (npx -y @dreamworkhq/mcp@latest; limpia la caché de npx conrm -rf ~/.npm/_npxsi hay una compilación antigua en caché). stdout debe llevar solo tramas de protocolo. Todo el registro del servidor va a stderr. - Cada herramienta de cuenta dice "No API key".
DREAMWORK_API_KEYno está llegando al proceso. Confirma que esté en el bloqueenvde la configuración de tu cliente. - Cada herramienta de cuenta dice "API key rechazada". La clave llegó al servidor,
pero ha expirado o ha sido revocada. Crea una nueva en Perfil, luego MCP,
reemplaza
DREAMWORK_API_KEYcon ella y reinicia tu cliente MCP. - Postularse devuelve
missing_onboarding_fieldsomissing_profile_fields. La herramienta informa los campos faltantes y la ruta de Dreamwork que corrige cada uno. Completa esos detalles en Dreamwork antes de reintentar; la solicitud fallida no ha iniciado una postulación.
Desarrollo
pnpm --filter @dreamworkhq/mcp check # typecheck
pnpm --filter @dreamworkhq/mcp build # emit dist/
pnpm --filter @dreamworkhq/mcp test # unit tests
El punto de entrada stdio es src/stdio.ts; las definiciones de herramientas viven en
src/mcp.ts; el cliente de la API HTTP es src/client.ts.
El servidor lee la configuración solo del entorno del proceso. No carga
un archivo .env. Para desarrollo local, exporta las variables en tu shell (por ejemplo,
DREAMWORK_API_URL=http://127.0.0.1:3000 pnpm --filter @dreamworkhq/mcp stdio).
Las decisiones sobre límites de paquetes, las convenciones de registro de herramientas
(registerDreamworkTool), las reglas de errores/versiones y los desencadenantes de revisión diferida
se registran en ARCHITECTURE.md. El catálogo de herramientas anterior se
verifica contra desviaciones con las herramientas registradas mediante test/tool-catalog.test.ts.
Licencia
MIT