Deploy with Claude via MCP
Drive a Daedalus deployment end-to-end with Claude
Daedalus embeds an MCP server. Claude can drive the full 13-step wizard programmatically. This recipe shows you how.
Setup
- Install Daedalus (
brew install --cask daedalusor download from Releases). - Open Daedalus. Note the MCP server is now listening on
127.0.0.1:14210. - Configure Claude Code:
claude mcp add daedalus --transport http http://127.0.0.1:14210
Workflow
In Claude Code:
me: Deploy a new Olympus to DigitalOcean. Domain: olympus-test.example.com.
Use Neon for managed Postgres. Use Resend for email.
Admin email: me@example.com.
claude: I'll walk through the 13 wizard steps. Let me start by checking
Daedalus's current state.
[Claude calls `read_context`]
I see Daedalus is on the welcome page. Moving to Repository step.
[Claude calls `navigate({path: "/repository"})`]
[Claude calls `screenshot`]
The Repository step asks for a GitHub PAT. I'll need you to paste it
in the field, I won't ask for the token in chat for security.You paste the PAT into Daedalus's field. Tell Claude "done."
claude: [Claude calls `click({text: "Fork repository"})`]
[Claude calls `terminal_read` to watch the fork output]
Fork succeeded. The repository is at github.com/me/platform-fork.
Moving to Domain step.
[navigate, screenshot, form_input for apex domain, click Save]
Domain configured. Moving to Provider...And so on. The interaction shape: Claude takes the mechanical steps; you supply credentials and approve any irreversible decisions.
What Claude handles autonomously
- Navigation between steps.
- Filling in default values.
- Clicking "Continue" / "Save" buttons.
- Watching terminal output for completion.
- Reading the
daedalus.jsoncontext to know what's been done.
What you should still review
- The chosen VPS region (you usually know better which is closest to users).
- The Postgres tier (Neon free vs paid).
- The email provider configuration.
- The admin password.
- The destroy step (let's be safe).
Asking Claude to resume
If you close Claude Code mid-deploy and resume later:
me: Continue the deployment.
claude: [Claude calls `read_context`]
Looking at daedalus.json, I see Repository, Domain, Provider, Email are
complete. Database step is partially done (Neon project exists, awaiting
database creation).
Resuming from the Database step.The MCP gives Claude full visibility into where things are.
Stopping mid-deploy
If you want to pause:
me: Stop. I need to verify something.
claude: Pausing. Daedalus is at the Compute step, awaiting droplet creation.
No partial state, the droplet hasn't been created yet. Safe to leave
Daedalus open or close it; the state persists in daedalus.json.Replaying for staging
After successful prod deploy, replay for staging:
me: Set up a staging deployment identical to prod but with apex
staging.olympus-test.example.com. Skip the destroy step.
claude: I'll create a fresh Daedalus context for staging. Same provider,
same email, but different domain and VPS size (smaller for staging).Claude follows the same 13 steps, parameterizing the differences.
Security
The MCP server is localhost only (ADR 0022). Claude must run on the same machine as Daedalus. No remote exposure.
Secrets entered into the Secrets wizard step are visible in Daedalus's UI. If Claude takes a screenshot at that moment, the screenshot includes them (sanitization redacts terminal output, not UI fields). Don't be on the Secrets page when calling screenshot.