InstaServer
Uses Cloudflare quick tunnels to expose deployed pods with public HTTPS URLs, including retry handling for tunnel registration.
Manages deployable pods as Docker containers, including creating, starting, stopping, deleting, uploading files, executing commands, and retrieving logs.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@InstaServer deploy a static site from ./dist and give me the URL"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
InstaServer
A free, open-source, self-hosted alternative to InstaPods, Vercel, and other centralized deploy platforms.
InstaServer is an MCP server that gives an AI agent (Claude Code, or any MCP client) the same kind of tools InstaPods offers — deploy_pod, exec_command, get_logs, read_file/write_file, and so on — except every "pod" is a real Docker container running on your own machine, with a public HTTPS URL from a free Cloudflare quick tunnel. No account, no signup, no payment method, no per-deploy billing, no platform-imposed rate limit.
Why this exists
Centralized platforms (Vercel, Netlify, InstaPods, etc.) are convenient until their free/hobby tier throttles you — a burst of a dozen pushes in an hour can trip a build-rate limit and silently freeze your production deploys for days, with no obvious signal that it happened. InstaServer trades platform convenience for owning the whole stack: your machine, your Docker engine, your uptime, no ceiling.
Trade-off, stated plainly: your machine has to be on for the pod to be reachable, and the free Cloudflare quick tunnel is explicitly best-effort (Cloudflare's own words: "no uptime guarantee"). This is the right tool for local development, demos, side projects, and internal tools — not a drop-in replacement for production hosting of a business-critical site with an SLA.
Related MCP server: localmcpcoder
Requirements
Node.js 20+
colima (or Docker Desktop) — provides the Docker engine
cloudflared — provides free quick tunnels
brew install colima docker cloudflared
colima start --cpu 2 --memory 4 --disk 20Install
git clone <this repo> instaserver
cd instaserver
npm install
npm run buildRegister it as an MCP server
With the Claude Code CLI:
claude mcp add instaserver -- node /absolute/path/to/instaserver/dist/index.jsOr add it manually to your MCP client's config (e.g. ~/.claude.json under mcpServers, or a project's .mcp.json):
{
"mcpServers": {
"instaserver": {
"command": "node",
"args": ["/absolute/path/to/instaserver/dist/index.js"]
}
}
}Tools
Tool | What it does |
| List runtime presets ( |
| Register a new pod (volume only, nothing running yet) |
| Main tool. Create-if-missing, upload files, install deps, (re)start, open a public URL, verify it answers |
| List all pods and status |
| Get one pod's details/URL/status |
|
|
| Remove a pod's container, volume, and tunnel |
| Run a shell command inside a pod |
| Recent stdout/stderr from the pod's app |
| Inspect and edit files without a full redeploy |
Presets
static —
nginx:alpine, serves the uploaded files as-is. Entry:index.html.nodejs —
node:20-alpine, runsnpm installifpackage.jsonis present, thennode <entry>. Entry:server.js/index.js/app.js.PORT=8080is set for you.python —
python:3.12-alpine, runspip install -r requirements.txtif present, thenpython <entry>. Entry:main.py/app.py/server.py.PORT=8080is set for you.
How it works
Each pod is a named Docker volume (persistent app storage) + a named container built from the preset's image, with the volume mounted at the app root and the container's port published to a free host port. deploy_pod stages your files locally, docker cps them into the container, and boots it with sh -c "<install> && exec <start>". A cloudflared quick tunnel is opened against the host port to get a public https://*.trycloudflare.com URL — reachability is verified before the URL is handed back, retrying with a fresh hostname up to 3 times if Cloudflare's registration doesn't come up cleanly (this happens occasionally; it's a known characteristic of the free tier, not a bug).
Pod state lives in ~/.instapod-free/state.json so the MCP server can restart without losing track of what's running.
Limitations (read before relying on this)
Your machine needs to be on and awake for pods to be reachable.
Free Cloudflare quick tunnels are best-effort — no SLA, hostnames can occasionally need a retry.
No built-in TLS cert management beyond what the tunnel provides, no custom domains, no multi-region.
Presets are minimal by design (three runtimes). Extending
src/presets.tsis straightforward if you need another.
License
MIT — see LICENSE.
Available Tools
12 toolscreate_podA
Create a new empty pod (a persistent Docker container + volume) without deploying app files yet. Usually you can skip this and call deploy_pod directly.
Inputs: name (required), preset (required).
delete_podA
Permanently delete a pod: removes its container, volume, and tunnel.
Inputs: name (required).
deploy_podA
Deploy files to a pod. Creates the pod if it doesn't exist, uploads the given files, installs dependencies, (re)starts the app, opens a public HTTPS URL via a Cloudflare quick tunnel, and checks it answers. This is the main tool — one call to go from source files to a live URL.
Inputs: name (required), files (required), preset.
exec_commandA
Run a shell command inside a pod's container and return stdout/stderr/exit code.
Inputs: name (required), command (required).
get_logsB
Get the recent stdout/stderr logs from a pod's app process.
Inputs: name (required), lines.
get_podB
Get details for one pod, including its public URL and status.
Inputs: name (required).
list_filesB
List files under a path inside a pod's app root.
Inputs: name (required), path.
list_podsA
List all pods and their status.
Inputs: no named parameters.
list_presetsA
List the runtime presets InstaServer can deploy (static/nginx, nodejs, python) and what each expects.
Inputs: no named parameters.
manage_podB
Start, stop, restart, or reload (alias for restart) a pod's container.
Inputs: name (required), action (required).
read_fileB
Read a text file from inside a pod's app root.
Inputs: name (required), path (required).
write_fileA
Write (or overwrite) a single file inside a pod's app root without a full redeploy.
Inputs: name (required), path (required), content (required), encoding.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 12 tools
Most tools have clearly distinct purposes, but create_pod overlaps with deploy_pod since deploy_pod can also create the pod. The descriptions explicitly call this out, so an agent can still choose correctly, but the boundary is slightly fuzzy.
All tool names follow a consistent verb_noun snake_case pattern: list_, create_, get_, manage_, delete_, exec_, read_, write_. The naming style is uniform and predictable across the entire set.
12 tools is well-scoped for a deployment and pod-management server. Each tool maps to a distinct lifecycle operation or inspection task, and none feel redundant or unnecessary.
The tool surface covers the full pod lifecycle: deploy, list, inspect, manage, delete, execute, log, and file operations. There are no obvious dead ends, and the provided tools are sufficient to go from source files to a live managed URL.
Maintenance
Related MCP Connectors
Hosting for AI agents: your AI client deploys Docker apps to live HTTPS URLs over MCP.
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Deploy AI-generated HTML/CSS/JS to instant public HTTPS URLs from any MCP-compatible agent.
MCP server that lets your AI assistant build and deploy apps, hosting each one at a live URL.
Related MCP Servers
- AlicenseBqualityCmaintenanceEnables AI agents to manage Docker containers, images, Compose stacks, health checks, and logs through a unified MCP interface, ensuring containers stay running with self-healing capabilities.31113 npm4MIT
- AlicenseNot gradedqualityDmaintenanceEnables remote MCP clients like ChatGPT to run shell commands and manage files on your local machine via a Cloudflare tunnel, exposing tools for file operations, search, and task management.7MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to expose and control local and self-hosted tools via MCP, with isolated workers, long-running task management, persisted state, and modular integrations for reverse engineering and development workflows.MIT
- AlicenseNot gradedqualityCmaintenanceExposes a local machine as a remotely accessible MCP server via Cloudflare Tunnel, enabling web agents to read/write files, run PowerShell, use local skills, bridge to other MCP servers, search the web, and collaborate on tasks with local agents.13 npm2MIT