Skip to main content

Your URL

Every account gets a reserved slug — two words, minted at first sign-in, and yours permanently:
It does not change between runs. That is the point: a connector you add to Claude.ai today still works tomorrow morning, and next week. You are not re-pasting a fresh random URL into six clients every time you restart. You can see yours on your profile page, or with heymcp whoami.

The three shapes

See Custom domains for the DNS side.

Slug rules

A slug is a DNS label, so:
  • 3 to 63 characters
  • lowercase letters, digits and hyphens only
  • no leading or trailing hyphen
  • no double hyphen anywhere (-- is reserved by IDNA for punycode)
  • not one of the reserved names — admin, api, app, docs, edge, inspector, oauth, relay, www and about thirty others that either already mean something on the domain or would let one account impersonate HeyMCP itself
If you ask for a slug that’s taken or invalid, the CLI tells you which, and your reserved slug still works.

What is shared

By default a tunnel forwards only the MCP route and well-known metadata: Anything containing .. is always refused, whatever your settings. This is deliberate. It keeps a HeyMCP tunnel from becoming free web hosting, and there is no cost to you: agents can’t click through an interstitial or browse your dev site anyway.

Why /.well-known/* is open

So that your own OAuth works. If your MCP server publishes /.well-known/oauth-protected-resource or /.well-known/oauth-authorization-server, clients discover it through the tunnel exactly as they would against a directly-hosted server. HeyMCP itself is not an authorization server — see Authentication.

Sharing everything

Now every path is forwarded. Useful when your MCP server shares a host with a health check, a docs page, or an auth flow you need reachable.
--all-paths makes your entire local server publicly reachable to anyone who knows the URL. Pair it with --bearer unless you genuinely mean “public”.

A non-default MCP route

If your server serves MCP somewhere other than /mcp:
--path currently needs --all-paths alongside it. The default path policy only forwards /mcp* and /.well-known/*, and --path does not widen it — so --path /api/mcp on its own advertises a URL that answers -32003. Passing --all-paths is the workaround today.
Alongside the public URL, the CLI prints a short link:
That’s the live timeline for this session. It’s private to your account — a session belongs to exactly one user and nobody else can subscribe to it.