Antideploy
Deploy an app to Antideploy from a coding agent. No Dockerfile, no YAML, no cloud console.
Links
README
From the repo.
antideploy-mcp
Deploy an application to Antideploy from inside a coding agent. Claude Code, Cursor, Windsurf, Codex, anything that speaks MCP.
You describe what you want built. The agent writes it, then deploys it, without either of you writing a Dockerfile, a YAML file, or touching a cloud console.
you ─▶ agent writes the app ─▶ deploy ─▶ https://your-app.antideploy.com
Install
Nothing to install. The agent runs it with npx.
Claude Code
claude mcp add antideploy -e ANTIDEPLOY_API_KEY=ad_your_key -- npx -y antideploy-mcp
Cursor, Windsurf, and anything else with an mcp.json
{
"mcpServers": {
"antideploy": {
"command": "npx",
"args": ["-y", "antideploy-mcp"],
"env": { "ANTIDEPLOY_API_KEY": "ad_your_key" }
}
}
}
Getting a key
Create an application at antideploy.com, then create an API key for it. The key identifies the application, so you never pass an application id: one key, one app. That is deliberate: this key ends up pasted into a project directory, which means it will eventually be committed or screenshotted, so it is scoped to a single application, can write secrets but never read them back, and can be revoked on its own.
Deploying somewhere new means a new app and a new key.
Tools
| Tool | What it does |
|---|---|
deploy | Packages the project directory and deploys it. Returns a taskId. |
deployment_status | Progress for one deploy: steps, the analyzed spec, warnings, hazards. |
list_env | Environment variable names. Values are never returned. |
set_env | Store or replace environment variables. |
api_info | The platform API's own description of itself. |
Deploys are asynchronous. deploy hands back a taskId; poll
deployment_status until it reports succeeded or failed.
Two things worth knowing
The whole directory is sent, not just the entry point. The single most common way to break a deploy on this platform is to upload one file: it builds fine, starts fine, and then serves a page whose every asset 404s.
A .env in the directory is uploaded on purpose. Its values go into
Antideploy's encrypted secret store and the file itself is dropped from the build
context, so you don't retype nine API keys you already have on disk. If that is
not what you want, move the file before deploying.
Skipped automatically: node_modules, .git, build output (dist, build,
.next, target, …), virtualenvs, editor and tool caches, and private keys
(*.pem, *.key, id_rsa, …).
Limits
| Files | 4,000 |
| Per file | 5 MB |
| Total upload | 28 MB |
| Concurrent deploys | 1 per application |
Checked locally before anything is uploaded, so hitting one costs you an error rather than a transfer.
Configuration
| Variable | |
|---|---|
ANTIDEPLOY_API_KEY | Required. The key for the application to deploy. |
ANTIDEPLOY_URL | Optional. Defaults to https://antideploy.com. |
What Antideploy does with what you send
Reads the source and works out the runtime, framework, build and start commands,
the port, and every environment variable the code references, deterministically,
citing the file each conclusion came from, not by asking a model to guess. Then
provisions what the app needs, including a Postgres database with DATABASE_URL
injected and migrations run before the app starts rather than after it has
already crashed. Then builds a container with buildpacks, releases it behind
HTTPS, and keeps it running: health checks, logs, and rollback to an
already-built image in about forty seconds.
Full documentation: antideploy.com/docs
License
MIT
Config for your environment
Replace {MCP_ENDPOINT_URL} with this MCP’s endpoint URL (from its repo or docs above). No API key — you connect directly.
Tool
OS
Config file: ~/.cursor/mcp.json
{
"mcpServers": {
"mcp-server": {
"url": "{MCP_ENDPOINT_URL}"
}
}
}Paste into mcpServers in the config file. Restart Cursor after saving.
If this MCP is also published on mcpchannel.ai, you can subscribe from Browse and use the gateway config there instead.