MCP

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
claude · run-zero-examples/mcp-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

The session that created the live demo, with the real MCP tools.
How it works

From prompt to address in four steps.

This is exactly how the live demo was made.

  1. 01

    Connect the MCP server

    Run the command once in your terminal. Already connected? Run claude mcp remove run-zero -s user first.

    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
  2. 02

    Sign in

    Start Claude Code, run /mcp, pick run-zero and click Authenticate. In the browser, sign in with your account or create one.

  3. 03

    Ask your agent

    For example: deploy this project to run.zero. The agent calls runzero_create_app, runzero_push_files and runzero_deploy.

  4. 04

    Wait for the build

    runzero_wait_for_build reports 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.

Files

What the agent pushed.

A Node server without dependencies, in one commit.

Listens on $PORT and answers / and /api/health.

Example on GitHub(opens in a new tab)
mcp-claude-code/server.js
// 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.

Example on GitHub(opens in a new tab)
mcp-claude-code/package.json
{  "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.

Example on GitHub(opens in a new tab)
mcp-claude-code/run-zero.yaml
version: "1"services:  web:    port: 8080
MCP tools

The MCP tools your agent uses.

With their real names.

Create an apprunzero_create_app
Push files in one commitrunzero_push_files
Create services and addonsrunzero_deploy
Wait until the version is liverunzero_wait_for_build
Read logs and build outputrunzero_get_logs, runzero_get_build_logs
Set secretsrunzero_set_secrets
Help on files, addons, domainsrunzero_get_help
Limits

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 pricing
  • Push 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_files writes to repos the platform creates. Your own GitHub repo gets code through git push.

  • Text files only

    Upload images and fonts in the dashboard or pass an https address.

See all limits
Operations

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_URL arrives 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.

More guides

All guides

Your code. Live on run.zero.

One website is free, no credit card. Apps with a server, a database and a custom domain come with the Developer plan.