Deploy from Claude Code.
Connect https://api.run-zero.de/mcp to Claude Code or Cursor and sign in with OAuth in the browser. From then on your agent creates apps, pushes, deploys and reads logs.
Needs the Developer plan, the free plan only covers websites. Pricing · Check the limits first
- OAuth, no API key
runzero_*MCP tools- Tested with Claude Code
> Deploy the mcp-claude-code folder to run.zero.
runzero_create_appdoneexample-mcp
runzero_push_filesdoneone commit
runzero_deploydoneservices created
runzero_wait_for_builddonelive
live at https://web-example-mcp-b21eac7c.run-zero.de
- Live demoRunning on run.zero(opens in a new tab)
- Example codeMIT, on GitHub(opens in a new tab)
- BuildpacksNode, Python, Go, PHP, Java
- Hosted in GermanyHetzner, Nuremberg
From prompt to address in four steps.
This is exactly how the live demo was made.
- 01
Connect the MCP server
Run the command once in your terminal. Already connected? Run
claude mcp remove run-zero -s userfirst.Connect Claude Code claude mcp add --transport http \ -s user run-zero \ https://api.run-zero.de/mcp \ --client-id runzero-cli \ --callback-port 53761 - 02
Sign in
Start Claude Code, run
/mcp, pickrun-zeroand click Authenticate. In the browser, sign in with your account or create one. - 03
Ask your agent
For example: deploy this project to run.zero. The agent calls
runzero_create_app,runzero_push_filesandrunzero_deploy. - 04
Wait for the build
runzero_wait_for_buildreports live once the new version serves requests.
After 1 to 3 minutes the app is live at https://web-<app>.run-zero.de. Check a route of your app, in the example /api/health. If the build is red, runzero_get_build_logs tells you why.
What the agent pushed.
A Node server without dependencies, in one commit.
Listens on $PORT and answers / and /api/health.
// Zero-dependency Node server, pushed and deployed by an AI agent through the run.zero MCP server.const http = require('node:http');const port = process.env.PORT || 8080;const started = new Date().toISOString();const page = `<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Deployed from Claude Code via MCP</title></head><body style="font-family:system-ui,sans-serif;max-width:640px;margin:64px auto;padding:0 24px"><h1>Deployed from Claude Code via MCP</h1><p>An agent called runzero_create_app, runzero_push_files, runzero_deploy and runzero_wait_for_build. No terminal, no Git push.</p><p><a href="/api/health">/api/health</a></p></body></html>`;http .createServer((req, res) => { if (req.url === '/api/health') { res.writeHead(200, { 'content-type': 'application/json' }); return res.end(JSON.stringify({ status: 'ok', started, platform: 'run.zero' })); } res.writeHead(200, { 'content-type': 'text/html; charset=utf-8' }); res.end(page); }) .listen(port, () => console.log(`listening on ${port}`));start runs the server, Node 22 is pinned.
{ "name": "run-zero-example-mcp", "version": "1.0.0", "private": true, "engines": { "node": "22.x" }, "scripts": { "start": "node server.js" }}One public service named web on port 8080.
version: "1"services: web: port: 8080The MCP tools your agent uses.
With their real names.
| Task | MCP tool |
|---|---|
| Create an app | runzero_create_app |
| Push files in one commit | runzero_push_files |
| Create services and addons | runzero_deploy |
| Wait until the version is live | runzero_wait_for_build |
| Read logs and build output | runzero_get_logs, runzero_get_build_logs |
| Set secrets | runzero_set_secrets |
| Help on files, addons, domains | runzero_get_help |
What does not work today.
So your agent does not try the wrong thing.
Needs the Developer plan
Free has no server apps and no Postgres, a deploy stops with an error.
See pricingPush limits
At most 200 files and 8 MB per push, about 4.5 MB per file. For more, connect a repo.
Push to managed repos only
runzero_push_fileswrites to repos the platform creates. Your own GitHub repo gets code throughgit push.Text files only
Upload images and fonts in the dashboard or pass an https address.
See all limits
What you stop doing yourself.
Builds, HTTPS, the database and backups run on the platform.
Data stays in Germany
Servers and backups at Hetzner in Nuremberg. With a data processing agreement.
HTTPS by default
Every service gets an address on
run-zero.de, custom domains a Let’s Encrypt certificate.Postgres as an addon
One entry in
run-zero.yaml,DATABASE_URLarrives as an environment variable.No lock-in
Your code stays in your repo, the database is a dump you can download.
Questions.
About MCP.
Does this work with Cursor or ChatGPT?
The server speaks HTTP with OAuth, so add https://api.run-zero.de/mcp. We tested Claude Code here.
Do I need an API key?
No. Claude Code signs in through OAuth in the browser, with the fixed client runzero-cli.
Where is the full reference?
In the docs at docs.run-zero.de/mcp, with every MCP tool.
Can the agent delete things?
It can do anything you can do in the dashboard, including deleting apps. Whether it asks first depends on your client and its settings.