InstaBox MCP
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
instabox-mcp
A remote MCP server for InstaBox cloud machines, made for web clients (Claude.ai, ChatGPT) that can't run the InstaBox CLI. It speaks Streamable HTTP and has its own single-user OAuth login, so connecting a client is: paste the URL → enter your password → done.
Tools
Area | Tools |
Account |
|
Machines |
|
Lifecycle |
|
Commands & files |
|
Snapshots |
|
Public ports |
|
Secrets |
|
Desktop (computer use) |
|
Lifecycle tools wait up to ~45s (web clients time out around a minute) and otherwise return the
operation ID to follow with get_operation. Long commands should use run_command with
background: true, which logs to ~/.mcp-jobs/<job>.log in the machine.
delete_machine and delete_snapshot send InstaBox's X-Confirm-Delete header with the ID
(or machine name) the tool was called with, as the API now requires. If InstaBox still answers
409 delete_confirmation_required, the tool returns that error and nothing is deleted.
Related MCP server: remote-access-mcp
Computer use
Machines have an optional Linux desktop (Xfce + Chromium). The model can see and drive it:
desktop_start: installs the desktop on first use (~30s, once) and starts it.desktop_actionwithopen_url,click,double_click,right_click,move,drag,scroll,typeorkey(e.g.ctrl+l). It returns a screenshot afterwards by default, so each step is one round trip.desktop_screenshotany time. Images are JPEG by default (format: "png"for sharp text).
desktop_stream_url gives you a live link to watch along in your own browser (view-only by
default). Input runs through xdotool on display :1, the same way the official SDK does it.
Secrets
Org Secrets keep API keys out of your machines' files. Two delivery modes:
proxy (recommended): the machine only sees a placeholder. InstaBox's egress proxy swaps in the real value on HTTPS requests to the hosts you allow (e.g.
api.openai.com), so the key never enters the machine.env: the real value is installed as an environment variable in machines that select it.
Pick Secrets for a new machine with secrets / envSecrets on create_machine, or later with
set_machine_secrets followed by refresh_machine_secrets. Reads never return values.
Writing or deleting values (set_secret, import_secrets, delete_secret) needs the org
owner/admin API key (workspace:admin); a personal org key gets 403 missing_scope, while the
read and selection tools work with any key. A value you hand to set_secret passes through the
chat, so for high-value credentials prefer the InstaBox dashboard or CLI and let the model only
select them.
Configuration
Variable | Required | |
| yes | Public HTTPS URL, no trailing slash. MCP endpoint is |
| yes | From the InstaBox dashboard → API keys |
| yes | What you type on the login page |
| yes | ≥32 chars, |
| no | Default 3000 (Railway sets it) |
| no | Default 1h / 30d |
| no | Default 45 |
| no | Static bearer (≥32 chars) that |
| no | Default |
| no | Comma-separated hosts allowed to serve client metadata (e.g. |
Deploy
Every push to main builds ghcr.io/<owner>/instabox-mcp:latest (amd64 + arm64) plus a
sha-xxxxxxx tag; a v1.2.3 git tag also publishes 1.2.3 and 1.2.
If the repo is private, the GHCR package is private too: either make the package public
(GitHub → Packages → instabox-mcp → Package settings) or give your host registry credentials.
Railway: New project → Deploy from GitHub repo (it builds the Dockerfile), or Docker image
ghcr.io/<owner>/instabox-mcp:latest. Add the env vars, generate a domain, set PUBLIC_URL to it,
health check path /healthz.
VPS: cp .env.example .env, fill it in, then DOMAIN=mcp.example.com docker compose up -d.
Caddy gets the HTTPS certificate automatically.
Already running nginx, Traefik or another proxy? Delete the caddy service and its volume, publish
the app on localhost only (ports: ["127.0.0.1:3000:3000"]) and proxy your domain to it. Give the
proxy a read timeout above 60s (lifecycle waits run up to ~45s) and keep it to one proxy hop,
since the app trusts exactly one X-Forwarded-For hop for the login rate limit.
Connect a client
The MCP URL is https://<your-domain>/mcp. Clients identify themselves automatically and pop up
this server's login page, where you enter AUTH_PASSWORD. The page shows the client's name and
where it will send you back to, so check that before you type the password.
Two ways of identifying are supported:
Client ID Metadata Documents (CIMD), which Claude prefers: the client's
client_idis an HTTPS URL (e.g.https://claude.ai/oauth/mcp-oauth-client-metadata). The server fetches that JSON once and caches it (5 min to 24 h, followingCache-Control). If a later refetch fails, it keeps using the last good copy for up to 7 days. The fetch is SSRF-guarded: https only, public IPs only (pinned against DNS rebinding), no redirects,application/jsononly, 16 KB and 5 s limits. Claude Code's loopback callbacks (http://localhost:<any port>/callback,http://127.0.0.1:<any port>/callback) match without the port.Dynamic client registration (DCR), the fallback, used by ChatGPT and older clients.
If Claude's sign-in fails with invalid_client ... Could not load client metadata document, look
for a [cimd] line in the server log. Cloudflare sometimes answers 403 to requests for
claude.ai's metadata that come from datacenter IPs
(anthropics/claude-ai-mcp#650). Set
CIMD_ENABLED=false and reconnect: Claude then falls back to DCR.
Claude.ai: Settings → Connectors → Add custom connector → paste the URL. If asked, choose Sign in now and the Register auth client (not Claude identity, not an API key).
ChatGPT (Plugins, no developer mode needed):
Open chatgpt.com/plugins, select +, then Add custom MCP server.
Name it (e.g. InstaBox) and paste the URL under Connection.
Authentication: OAuth. Leave the client ID and secret empty so ChatGPT registers itself.
Tick I understand and want to continue, select Create as a plugin, and sign in.
In a chat, type
@and pick the plugin. Selection lasts one message, so @mention it again for follow-ups that need the machines.
Write tools (create, run, delete...) need a ChatGPT Business or Enterprise/Edu workspace, where only admins/owners (or RBAC-granted members) can add servers. Pro accounts get read/fetch only, which leaves this server of little use there. ChatGPT freezes the tool list when the plugin is created, so after upgrading the server, refresh the tools in workspace app settings (or recreate the plugin) to pick up new ones.
Claude Code: OAuth works as-is (claude mcp add --transport http instabox https://<your-domain>/mcp,
then /mcp to sign in). If you'd rather skip the browser, set MCP_BEARER_TOKEN and pass it as a header:
claude mcp add --transport http instabox https://<your-domain>/mcp \
--header "Authorization: Bearer $MCP_BEARER_TOKEN"Scripts / curl (needs MCP_BEARER_TOKEN):
curl -s https://<your-domain>/mcp \
-H "Authorization: Bearer $MCP_BEARER_TOKEN" \
-H "Content-Type: application/json" -H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'Local development
npm install
cp .env.example .env # PUBLIC_URL=http://localhost:3000
npm run build && node --env-file=.env dist/index.js
npm test # builds, then runs test/*.test.mjs against a mock InstaBox APITest with npx @modelcontextprotocol/inspector against http://localhost:3000/mcp.
Security notes
Anyone who logs in can run commands on your machines, so use a long password. The login form is rate limited (10 tries per 15 min per IP).
MCP_BEARER_TOKENnever expires and skips the login page, so treat it like the password: long, random, and rotated if it leaks (change the env var and restart). It is compared in constant time. OAuth tokens keep working alongside it.OAuth state is stateless (HMAC-signed with
TOKEN_SECRET), so redeploys never sign you out.Requires HTTPS in production; the OAuth library refuses a non-HTTPS issuer except on localhost.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
This server cannot be deployed
Maintenance
Related MCP Connectors
Remote streamable-HTTP MCP server running on a single Cloudflare Worker. Your assistant gets live Airbnb, Amazon, Booking.com, Google Flights, Maps and Reddit data, social search on X, Instagram and TikTok, the Meta Ad Library, and image/video generation without any keys. Connect your own accounts to let it send WhatsApp or Telegram messages, work an IMAP inbox, manage Meta Ads campaigns and publish to X and LinkedIn. OAuth 2.1 with PKCE; stored credentials are AES-256-GCM encrypted.
Remote MCP server exposing your Node Command fleet (files, shell, processes, browser) to AI hosts.
Connect ChatGPT and Claude to your Mac, Windows or Linux with secure MCP remote access.
Linux server administration over OAuth MCP: shell, Docker, systemd, files and monitoring.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceA production-grade MCP server that lets AI cloud services control and manage your Linux server securely via HTTP/SSE.-
- AlicenseNot gradedqualityBmaintenanceTurns any Linux server into an AI-agent-accessible machine over HTTPS, allowing MCP clients like ChatGPT, Claude, and Grok to securely control files, run shell commands, inspect system state, query SQLite, and work with git behind a bearer token.76 npm4MIT
- AlicenseNot gradedqualityBmaintenanceEnables MCP clients such as ChatGPT and Claude to administer Linux or macOS hosts through authenticated Streamable HTTP, including running shell commands, reading and writing files within a workspace, listing directories, and retrieving system metrics.1MIT

AgentVPSofficial
AlicenseNot gradedqualityBmaintenanceTurns your own VPS into an agent's remote computer, exposing shell and code execution, persistent workspace files, Bash PTYs, a Chromium browser, notes, scheduled tasks, and a streamed Linux desktop over MCP. Clients such as Claude Code or Codex can also use an authenticated REST API, CLI, and web console to drive the same shared workspace.17 npm26MIT