
Dreamwork
io.github.dreamworkhqv1.4.3更新于 Oct 3, 2026
Job search, application materials, and application tracking for AI assistants.
概览
让助手搜索职位、准备并提交申请,并跟踪申请流程与招聘方回复。
- 功能
- Dreamwork 通过 MCP 提供求职工具:浏览和读取公开职位、将职位保存到流程看板、生成和编辑简历、求职信与申请答案、提交申请、回复招聘方,并跟踪状态、面试、升级事项和用量。它还提供 morning_brief、find_and_prepare、apply_to_prepared、interview_prep 和 autopilot_setup 等提示。apply、reply_to_recruiter、set_autopilot、start_checkout 等有后果的操作首次调用会被暂缓,返回 confirmationToken,需以相同参数回传才会执行。
- 适用场景
- 适合让助手为一个人端到端地处理求职:查找和排序职位、定制材料、提交申请,并跟进回复和面试。不设置密钥时也可只读使用,浏览公开职位索引。
- 运行要求
- 可作为远程 Streamable HTTP 端点使用( npx 作为本地 stdio 进程运行。账户工具需要 DREAMWORK_API_KEY(格式 sk_...),在 Dreamwork 个人资料中生成。可选变量:DREAMWORK_API_URL、DREAMWORK_UNREAD_NOTICES。需要访问 Dreamwork API 的网络连接。
安装
在 SourceWeft 中
- 打开 控制台中的 Dreamwork,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。
其他 MCP 客户端
把它添加到你客户端的 mcpServers 配置中。
{
"mcpServers": {
"dreamwork": {
"type": "http",
"url": "https://mcp.dreamworkhq.com/mcp"
}
}
}README
@dreamworkhq/mcp
MCP server for Dreamwork — job-search tools for AI agents. Gives any MCP client (Claude Desktop, Cursor, the MCP Inspector, etc.) what it needs to find roles, rank them, tailor applications, apply, and track outcomes for one person over time.
This server is a thin gateway: it calls the Dreamwork API over HTTPS and holds no database access of its own. Transport is stdio — stdout carries only JSON-RPC frames.
Install
No install step is required — MCP clients run it on demand with npx. The examples below use npx -y @dreamworkhq/mcp.
Configure
Claude Desktop
Add an entry to your claude_desktop_config.json
(~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
Restart Claude Desktop after editing. Put credentials in the env block — don't
wrap command in a shell or an env-loader (dotenvx run -- …, etc.): on a stdio
server any banner such a wrapper prints to stdout will corrupt the JSON-RPC
stream and hang tool calls.
Cursor and other clients
Any stdio MCP client works. Cursor uses the same config shown above — point the
command at npx -y @dreamworkhq/mcp and pass DREAMWORK_API_KEY in the
environment. To sanity-check with the Inspector:
Hosted endpoint
Dreamwork also serves these tools over Streamable HTTP at
https://mcp.dreamworkhq.com/mcp. In claude.ai, Claude Desktop, or ChatGPT,
add that URL as a custom connector and sign in to Dreamwork. There is nothing
to install and no key to paste. The consent screen asks which scopes the
connector gets.
Clients that set request headers can send an agent key to the same URL instead. In Claude Code:
Authentication
Generate an agent key from your Dreamwork profile: sign in at
dreamworkhq.com, open your profile → Agent key
section (or use the Get your agent key button on the Agents page), then set it
as DREAMWORK_API_KEY (format sk_...).
When you generate a key you choose what it may do: read, write, apply, send mail. New keys get read and write, so a key made without a decision cannot submit an application or mail a recruiter. Pick the narrowest set that lets your agent work.
Guest mode: with no key set, the server still starts and exposes the public,
read-only tools (browse_listings, get_listing, get_platform_context,
get_upgrade_link).
Account tools return a short "No agent key" message until a key is set.
Environment variables
JOBLESS_API_TOKEN and JOBLESS_API_URL are still accepted as backward-compatible
aliases for DREAMWORK_API_KEY and DREAMWORK_API_URL; prefer the DREAMWORK_
names for new configs.
Telemetry
To measure usage, the server generates an anonymous random install id (a
UUID) on first run and stores it under your OS state directory
($XDG_STATE_HOME/dreamwork/install-id, ~/.local/state/dreamwork/install-id on
Linux/macOS, or %LOCALAPPDATA%\dreamwork\install-id on Windows). It is a random
value only — never derived from your hostname, username, or any machine
attribute — used to count unique installs of guest (unauthenticated) usage. It is
written at runtime on your machine, never at build or publish time.
Opt out by setting either environment variable:
DREAMWORK_TELEMETRY=0(alsofalse/no/off)DO_NOT_TRACK=1(the standard opt-out; alsotrue/yes/on)
With telemetry disabled, no install id is generated, read, or sent.
Tools
The typical flow: browse the public index, save roles to the pipeline, tailor
materials, apply, then track replies, interviews, and escalations. Call
get_platform_context first — it describes what Dreamwork can do, so the agent
picks the right workflow.
Public (no key):
browse_listings, get_listing, get_platform_context, get_upgrade_link
Assistant actions — one tool per capability in Dreamwork's assistant registry, each running through the same authorization ladder and receipt ledger the on-site assistant uses. A consequential one holds on its first call, answering with a summary and a confirmationToken; send that token back with identical arguments to go ahead.
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_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
Direct product tools — routes with no registry action behind them.
add_contact, add_jobs, generate_outreach, generate_resume, get_application_materials, get_generated_resumes, get_profile, get_stats, list_contacts, list_escalations, list_interviews, reopen_application_materials, resolve_escalation, update_application_materials, update_profile, upload_resume
The server also offers five prompts, which hosts such as Claude Desktop and
Claude Code show as commands: morning_brief (what changed since you last
checked), find_and_prepare (search, pick, prepare materials),
apply_to_prepared (fill any missing answers, review, apply with
confirmation), interview_prep, and autopilot_setup.
A few tools need a word beyond their own description:
- No tool sends mail or submits an application on its first call.
apply,reply_to_recruiter,set_autopilot,update_autopilot_settingsandstart_checkoutreturnheldwith a summary and aconfirmationToken, and act only when you send that token back with identical arguments. - 1.3.0 removed the 1.2.0 tools a registry action replaced:
search_jobsandlist_applications(useget_pipeline;browse_listingssearches the index),apply_to_job(apply),add_listing_to_pipeline(save_job),skip_job(dismiss_match), andsend_outreach.resolve_escalationonly dismisses or hands over; replies and resubmissions go throughreply_to_recruiterandapply. update_application_materialsandreopen_application_materialsare open to the Applications rollout cohort the API admits; outside it they return the API's own refusal.get_statsaggregates the signed-in candidate's own pipeline, so it needs a key like the rest.
Key scopes
An agent key carries scopes, chosen when you generate it:
Every scope gates every path to the act, not just the tool that names it.
write is the floor for changing anything: a key without it is refused on any
request that is not a GET, HEAD, or OPTIONS, so a read key cannot rewrite
a profile or move the board by calling the route directly. A key without
apply is refused at apply, and also at
POST /jobs/:id/apply, the turbo-apply routes and the escalation routes. A key
without send is refused at reply_to_recruiter, at
POST /outreach/send and POST /conversations/:id/reply, and at an escalation
resolution whose action is send_reply. A direct call answers 403 with
api_key_scope_required, the scope it wants, and a message saying what to do;
an assistant action answers action_not_authorized with the same next step.
A key can never manage keys, rotate the session token, or delete the account.
Those answer 403 session_required whatever it holds.
New keys default to read and write, so a key generated without a decision cannot submit or send. A key created before scopes existed keeps everything it could already do, so nothing that works today stops working.
Troubleshooting
- Tool calls hang / time out, but the handshake succeeds. Something is
writing non-JSON-RPC bytes to stdout. Make sure
commandisn't wrapped in an env-loader or shell that prints a banner, and update to the latest version (npx -y @dreamworkhq/mcp@latest; clear the npx cache withrm -rf ~/.npm/_npxif an old build is cached). stdout must carry only protocol frames — all server logging goes to stderr. - Every account tool says "login required".
DREAMWORK_API_KEYisn't reaching the process. Confirm it's in theenvblock of your client config.
Development
The stdio entrypoint is src/stdio.ts; tool definitions live in
src/mcp.ts; the HTTP API client is src/client.ts.
The server reads configuration from the process environment only — it does not
load a .env file. For local development export the vars in your shell (e.g.
DREAMWORK_API_URL=http://127.0.0.1:3000 pnpm --filter @dreamworkhq/mcp stdio).
Package-boundary decisions, tool-registration conventions
(registerDreamworkTool), error/versioning rules, and deferred review triggers
are recorded in ARCHITECTURE.md. The tool catalog below is
drift-checked against the registered tools by test/tool-catalog.test.ts.
License
MIT
When an Apply request returns missing_onboarding_fields or
missing_profile_fields, the tool reports the missing fields and the Dreamwork
path that fixes each one. Complete those details in Dreamwork
before retrying; the failed request has not started an application.
来源:apps/mcp/README.md,提交 440c273
工具
0版本历史
1- v1.4.3最新Oct 3, 2026