How do you put a Cursor-built app into production?
Cursor writes the code but does not host it, so production means pushing the project to GitHub, deploying that repository, setting the environment variables and attaching a domain. The shortest path from inside Cursor is to add the Hostwares MCP server and say "deploy this repo as my-app": the deploy tool returns a price and an approval link, and the build starts once the invoice is paid. Afterwards the same agent reads logs, sets variables, redeploys and rolls back from the chat, so the editor you built in is also where you operate.
Step by step
- 1
Make the build pass locally
Run the build command in Cursor's terminal (npm run build, next build, or your framework's equivalent) and let the agent fix what fails. A build that only passes in dev will fail the same way on the host.
- 2
Push to GitHub and add Hostwares to Cursor
Commit and push. Create an API key at Dashboard → API Keys, then paste the MCP block into Cursor's MCP settings. Restart Cursor; the Hostwares tools appear in the tool list.
Cursor mcp.json
{ "mcpServers": { "hostwares": { "url": "https://mcp.hostwares.com", "headers": { "Authorization": "Bearer hwk_your_key_here" } } } } - 3
Deploy from the chat, or from the dashboard
In Cursor: "Deploy this repo to Hostwares as my-app". The deploy tool detects the framework, returns a price and an approval link, and the build starts once the invoice is paid; get_status reports when the site is running. Without an agent: Dashboard → Deployments → New.
A project with a Dockerfile deploys from it; one without is detected by framework. A project that is not on GitHub can be uploaded: create_upload returns a command, then deploy with the upload id.
- 4
Set the environment, attach the domain
"Set DATABASE_URL and STRIPE_SECRET_KEY on my-app" calls set_env; "Point app.example.com at my-app" calls add_domain, and verify_ssl checks the certificate once the DNS record you create resolves. Need a database first? create_database returns one with its connection string.
Variables are read at build time, so the site rebuilds after you change them; the current version keeps serving until the new build is ready.
- 5
Operate from the same chat
"Why is my-app returning 502?" runs diagnose_site: status, reachability, container state and recent logs in one call. rollback_site returns to the previous build; redeploy_site rebuilds after a fix; deployment_history lists what shipped when.
What breaks, and the fix
- The app listens on the wrong port
- The port is detected from the framework or Dockerfile; set_app_port over MCP fixes a custom one.
- Secrets are missing
- They were in a local .env Cursor never committed. Add each on the Environment tab or with set_env.
What it costs
- A Frontend pack from $1/mo; the pack most production apps pick is $5/mo (1 vCPU / 4 GB / 25 GB).
- A managed Postgres from $10/mo; a full-root Cloud Instance from $2/mo for apps that need more than one process.
- MCP access is part of your account. AI work done by HW is billed per credit; using your own Cursor model with our tools costs nothing extra.
App
$1/mo
Starter Frontend pack, 1 vCPU / 1 GB RAM / 10 GB
Database, users and files
$5/mo
Smallest dedicated Supabase pack; several projects fit on one
Questions
Can Cursor deploy directly?+
Yes, through MCP. Add the Hostwares server to Cursor's MCP settings, then ask the agent to deploy. It uses the same tools the dashboard uses, with an approval link for anything that costs money.
Do I need a Dockerfile?+
No. The framework is detected for the common stacks. If you have a Dockerfile it is used as-is, which is the safest route for an unusual stack.
Can the agent spend money without asking?+
No. Hosting is pay-first: a deploy or a new database creates an invoice and nothing is built until you pay it. Deleting data or erasing a machine returns an approval link every time.
What if the build fails?+
Ask "why did the build fail?": get_logs returns the build output and the agent fixes the cause in the code, then redeploy_site. Nothing is charged for reading logs.
Can I use Claude Code instead of Cursor?+
Yes. One command adds the server to Claude Code: claude mcp add --transport http hostwares https://mcp.hostwares.com --header "Authorization: Bearer <key>".
What does it cost?+
A Frontend pack from $1/mo, flat for the term. A managed database from $10/mo if the app needs one.
Related
Next guides
Sources: Northflank: deploy vibe-coded Cursor apps (2026-11-06) · Claude Code docs: MCP (2026-11-06)