One command
mcptunnel expose -- <your MCP server> spawns any stdio MCP server, bridges it to Streamable HTTP, and prints a public URL. Nothing to deploy.
mcptunnel expose -- npx -y @modelcontextprotocol/server-everything# → https://tunnel.mcptunnels.xyz/t/q-3k9x2mab7c/s/mcp# password: 9f2c1ab4e7d03815a6c02b94mcptunnel expose -- <your MCP server> spawns any stdio MCP server, bridges it to Streamable HTTP, and prints a public URL. Nothing to deploy.
No signup, no login, no config files. The hosted relay at tunnel.mcptunnels.xyz is the default — or self-host your own tunneld.
Public endpoints are gated behind a password the CLI generates. Clients like ChatGPT, Claude, and Cursor discover the OAuth flow automatically. --no-auth for open URLs.
Tunnels live for 24 hours, then they’re gone. Ctrl-C deletes the tunnel server-side immediately — the URL and password die with your process.
Generic tunnels forward raw TCP/HTTP. mcptunnels is MCP-shaped.
| mcptunnels | ngrok | cloudflared | bore | |
|---|---|---|---|---|
| Takes an MCP server command | ✅ | ❌ (ports only) | ❌ | ❌ |
| stdio → Streamable HTTP bridging | ✅ | ❌ | ❌ | ❌ |
| No account required | ✅ | ❌ | ❌ (named tunnels) | ✅ |
| Self-hostable relay | ✅ | ❌ | ❌ | ✅ |
| Ephemeral-by-default URLs | ✅ (24h TTL) | ❌ | ❌ | ✅ |
If you already have an MCP server listening on a port with its own HTTP transport, a generic tunnel works fine. mcptunnels removes the stdio bridging step and everything around it.
Status: v1. The tunnel data plane is covered by end-to-end tests; compatibility with every major hosted MCP client is not yet exhaustively verified. Bug reports welcome on GitHub.
Where mcptunnels is headed. Roughly ordered; no dates — this is a spare-time project and priorities follow real user pain.
mcptunnel expose – <cmd> → public URL.–no-auth for open URLs).tunneld: single binary + SQLite, ACME TLS, Docker or bare-metal.The MVP’s ephemerality is the feature that lets us skip accounts — and the first thing real users will outgrow.
/<you>/<name> once, keep it across restarts, reboots, and laptop sleeps.Today expose bolts a public URL onto a single local process. The destination is making MCP servers easy to run and scale as Streamable HTTP services.
Per-tunnel OAuth 2.1 (discovery metadata, DCR, PKCE) shipped with the MVP. What comes later:
https://tunnel.mcptunnels.xyz for convenience — it’s free and best-effort, and self-hosting
stays a first-class path.)File an issue describing your use case — especially if the MVP’s 24h model is the thing blocking you. That’s the signal that permanent tunnels should move up.