ChatGPT
What it takes to reach a Scalebrowser daemon from ChatGPT, and why a loopback daemon is not enough.
ChatGPT runs in OpenAI's cloud, so it can only reach an MCP server that is reachable from the internet. A daemon on 127.0.0.1 is not, and no setting changes that.
Before you start
Everything below assumes a daemon that is already running and a token to reach it with.
The app starts the daemon for you. The token is the contents of
%LOCALAPPDATA%\Scalebrowser\token, and the address it is listening on is the
native_addr field of %LOCALAPPDATA%\Scalebrowser\runtime.json. That is usually
127.0.0.1:8787, but the app moves up a port when something else already holds it.
scalebrowser-daemon --generate-token prints a token and stores it under
<data_dir>/token. The address is whatever bind_addr says, which is 127.0.0.1:8787
unless you changed it. See Install & run.
The token is a full-power credential. It reaches every profile, every stored session and the whole management API. Treat it like a password: keep it out of a repository, and prefer your client's environment-variable syntax over a literal in a config file that gets committed.
What this costs you
A loopback daemon cannot be connected to ChatGPT. Custom MCP servers in ChatGPT are
fetched over the public internet from OpenAI's side, so the endpoint has to be a public
HTTPS address. Every other client on this list runs on your own machine and reaches
127.0.0.1 directly.
That leaves two honest options, and they are different trades:
| Option | What it means |
|---|---|
| Run the daemon on a server | The self-hosted Linux daemon on a host with a real GPU and a public name. A non-loopback bind requires TLS and refuses to start without it, so that is the same gate rather than an extra step. |
| Tunnel your local daemon | A tunnel (Cloudflare, ngrok, Tailscale) gives your machine a public HTTPS name. Faster to set up, and it puts a full-power token on an address the whole internet can reach. |
Either way the daemon is answering to something other than loopback, so read
Ports first: TLS is mandatory there, and the MCP transport checks the
Host header, which means the public name has to be listed in [mcp] allowed_hosts.
Connect it
Developer mode is where custom MCP connectors live, on the web app. Add a connector with
your public endpoint, https://<your-host>/v1/mcp, and the bearer token as its
credential.
If you only want an agent to drive a browser on your own machine, one of the local clients is the shorter path: Claude, Cursor, Codex, GitHub Copilot or Antigravity. None of them needs an address that is reachable from outside.
What the agent can do now
Ask it to open a page and it will lease a profile, bind a tab and start reading. The tool set, the page map and the failure shapes are on MCP server; what the agent is allowed to do is decided by the daemon, not by the client, so see tool profiles.