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

VariableRequeridaPredeterminadoPropósito
DREAMWORK_API_KEYPara herramientas de cuentaningunaClave de API (sk_...). Desbloquea pipeline, currículum, postulación, divulgación, perfil, entrevistas.
DREAMWORK_API_URLNohttps://api.dreamworkhq.comSobrescribe el endpoint de la API (desarrollo local / autoalojado).
DREAMWORK_UNREAD_NOTICESNoactivadooff (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én false/no/off)
  • DO_NOT_TRACK=1 (el estándar de exclusión; también true/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_settings y start_checkout devuelven held con un resumen y un confirmationToken, 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_jobs y list_applications (usa get_pipeline; browse_listings busca en el índice), apply_to_job (apply), add_listing_to_pipeline (save_job), skip_job (dismiss_match) y send_outreach. Las respuestas y reenvíos pasan por reply_to_recruiter y apply.
  • Las versiones posteriores a 1.5.1 ya no incluyen list_escalations y resolve_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_materials y reopen_application_materials está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_stats agrega 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:

AlcanceQué desbloquea
readCada acción de lectura: coincidencias, pipeline, bandeja de entrada, estado, uso, recibos
writeEscrituras baratas y en cola: guardar, descartar, mover, editar materiales, preferencias, enlaces de pago
applyEnviar una postulación, cancelar una que aún se está enviando y Autopilot
sendEnviar 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 command no 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 con rm -rf ~/.npm/_npx si 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_KEY no está llegando al proceso. Confirma que esté en el bloque env de 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_KEY con ella y reinicia tu cliente MCP.
  • Postularse devuelve missing_onboarding_fields o missing_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