{"slug": "show-hn-mcptunnels-ngrok-for-mcp-with-basic-oauth", "title": "Show HN: Mcptunnels – ngrok for MCP with basic OAuth", "summary": "Mcptunnels v1, an open-source tool from developer terragohan, exposes any stdio MCP server as a public Streamable HTTP URL with a single command, featuring built-in OAuth 2.1, no account requirement, and ephemeral 24-hour tunnels. The tool bridges MCP servers to HTTP for clients like ChatGPT, Claude, and Cursor, and supports self-hosted relays, with the hosted relay at tunnel.mcptunnels.xyz as the default.", "body_md": "### One command\n\n`mcptunnel expose -- <your MCP server>`\n\nspawns any stdio MCP server, bridges it to Streamable HTTP, and prints a public URL. Nothing to deploy.\n\n`mcptunnel expose -- <your MCP server>`\n\nspawns any stdio MCP server, bridges it to Streamable HTTP, and prints a public URL. Nothing to deploy.\n\nNo signup, no login, no config files. The hosted relay at `tunnel.mcptunnels.xyz`\n\nis the default — or self-host your own `tunneld`\n\n.\n\nPublic endpoints are gated behind a password the CLI generates. Clients like ChatGPT, Claude, and Cursor discover the OAuth flow automatically. `--no-auth`\n\nfor open URLs.\n\nTunnels live for 24 hours, then they’re gone. Ctrl-C deletes the tunnel server-side immediately — the URL and password die with your process.\n\nGeneric tunnels forward raw TCP/HTTP. mcptunnels is MCP-shaped.\n\n| mcptunnels | ngrok | cloudflared | bore | |\n|---|---|---|---|---|\n| Takes an MCP server command | ✅ | ❌ (ports only) | ❌ | ❌ |\n| stdio → Streamable HTTP bridging | ✅ | ❌ | ❌ | ❌ |\n| No account required | ✅ | ❌ | ❌ (named tunnels) | ✅ |\n| Self-hostable relay | ✅ | ❌ | ❌ | ✅ |\n| Ephemeral-by-default URLs | ✅ (24h TTL) | ❌ | ❌ | ✅ |\n\nIf 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.\n\n**Status: v1.** The tunnel data plane is covered by end-to-end tests; compatibility\nwith every major hosted MCP client is not yet exhaustively verified. Bug reports welcome on\n[GitHub](https://github.com/terragohan/mcptunnels/issues).\n\nWhere mcptunnels is headed. Roughly ordered; no dates — this is a spare-time project and priorities follow real user pain.\n\n`mcptunnel expose – <cmd>`\n\n→ public URL.`–no-auth`\n\nfor open URLs).`tunneld`\n\n: 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.\n\n`/<you>/<name>`\n\nonce, keep it across restarts, reboots, and laptop sleeps.Today `expose`\n\nbolts a public URL onto a single local process. The destination is making MCP servers easy to *run and scale* as Streamable HTTP services.\n\nPer-tunnel OAuth 2.1 (discovery metadata, DCR, PKCE) shipped with the MVP. What comes later:\n\n`https://tunnel.mcptunnels.xyz`\n\nfor convenience — it’s free and best-effort, and self-hosting\nstays a first-class path.)[File an issue](https://github.com/terragohan/mcptunnels/issues) describing your use case —\nespecially if the MVP’s 24h model is the thing blocking you. That’s the signal that permanent\ntunnels should move up.", "url": "https://wpnews.pro/news/show-hn-mcptunnels-ngrok-for-mcp-with-basic-oauth", "canonical_source": "https://terragohan.github.io/mcptunnels/", "published_at": "2026-09-01 20:34:55+00:00", "updated_at": "2026-09-01 20:52:40.131928+00:00", "lang": "en", "topics": ["developer-tools", "ai-infrastructure", "ai-tools"], "entities": ["Mcptunnels", "terragohan", "ChatGPT", "Claude", "Cursor", "GitHub"], "alternates": {"html": "https://wpnews.pro/news/show-hn-mcptunnels-ngrok-for-mcp-with-basic-oauth", "markdown": "https://wpnews.pro/news/show-hn-mcptunnels-ngrok-for-mcp-with-basic-oauth.md", "text": "https://wpnews.pro/news/show-hn-mcptunnels-ngrok-for-mcp-with-basic-oauth.txt", "jsonld": "https://wpnews.pro/news/show-hn-mcptunnels-ngrok-for-mcp-with-basic-oauth.jsonld"}}