How to connect ChatGPT or Claude on the web to your own computer, without opening a port A developer built Local Commander, a hosted MCP service that lets web and mobile AI apps like ChatGPT and Claude reach tools on a user's own computer without opening a router port or running a tunnel. A small agent on each machine opens an outgoing WebSocket to localcmd.app, and AI apps connect to a remote MCP endpoint with OAuth sign-in, so no public URL points at the user's machine. The developer notes the trade-off is trust, since requests and results pass through the hosted service. You got a local MCP server working. Claude Desktop sees it, your editor sees it, and the model runs your build without you pasting anything. Then you open ChatGPT in a browser tab, or Claude on your phone on the way home, and the tools are gone. The chat is right there, the computer is right there, and the two never meet. Someone on r/mcp put it in one line: "ChatGPT and Claude web can't run local MCP servers." They can't, for a plain reason. Here's why, the two ways around it, and how to choose. When you add a connector in ChatGPT or Claude on the web, your browser doesn't talk to the MCP server. The provider's servers do: when the model wants a tool, their backend calls the URL you gave it. From there, localhost means their machine, not yours, and your PC usually sits behind a home router without a public address anyway. The phone apps work the same way. So the web and phone apps can only use an MCP server at a public HTTPS address. Desktop apps can start a local server as a child process and talk to it over stdio, which is why the same server works in one place and not the other. That leaves two ways to give your computer a reachable endpoint without forwarding a port on your router. A tunnel tool such as cloudflared or ngrok runs on your computer, opens an outgoing connection to the tunnel provider, and gives you a public HTTPS URL that forwards to a local port. I started this way myself: a small server on my PC, a tunnel, and a login so not just anyone could walk in. It worked. The steps, at a high level: 127.0.0.1 , not to every network interface. cloudflared tunnel --url http://localhost:8080 or ngrok http 8080 . Depending on the tool and setup, the URL may change on each start; a fixed hostname saves re-adding the connector. The risks come with the URL. The moment the tunnel is up, your tools have a public address. Without sign-in, anyone who finds the URL can call them, and a hard-to-guess URL isn't a password: URLs leak through logs, browser history and screenshots. Run the server as a normal user, never as administrator or root, so a bad call can't do more than that account can. Expose only the tools you need. Close the tunnel when you're done, not weeks later. The other pattern turns the connection around. A small agent on your computer opens an outgoing connection to a hosted MCP service and keeps it open. Your AI app connects to that service over HTTPS, with sign-in. When the model calls a tool, the service passes the request down the open connection to your computer, the agent runs it, and the result comes back the same way. Nothing on your computer listens on the internet, so there is no URL pointing at your machine to leak. The trade-off is trust: requests and their output pass through the hosted service, so you are trusting whoever runs it. I build Local Commander, which works this way, so I'm biased. The agent on each computer opens an outgoing WebSocket to localcmd.app and waits for work. Your AI app connects to https://localcmd.app/mcp and signs in with OAuth. From then on, a message typed into Claude on your phone can run on the PC under your desk: On Home PC, run the tests in my project folder and tell me what failed and why. The model reads files, runs commands, checks Git or asks a local web service whether it answers, on the computer you named. If more than one computer is online and you didn't say which, the server's instructions tell the model to ask instead of guessing. It works from ChatGPT, Claude, Cursor and other apps that support remote MCP with sign-in. Setup takes four steps and no code: npx local-commander-agent@latest . You need Node.js 20 or later, on Windows, macOS or Linux. https://localcmd.app/mcp as a remote MCP server in ChatGPT, Claude, Cursor or another app, and sign in with your Local Commander account. No router settings, no tunnel. If you have more than one computer, the same chat reaches all of them; I wrote about that in How to run one task on all your computers from a single ChatGPT or Claude chat https://netbka.hashnode.dev/how-to-run-one-task-on-all-your-computers-from-a-single-chatgpt-or-claude-chat . For the relay route, and for Local Commander in particular: Do I need to open a port on my router for either option? No. Both dial out from your computer. The difference is what ends up public: a tunnel gives your own server a public URL, while a relay gives your computer none. The public endpoint is the hosted service, behind sign-in. Does this work from the phone app? Yes, wherever the phone app supports the connector you added: it calls tools from the provider's side, like the web app. With Local Commander, the computer still has to be awake, online and running the agent. If you've hit this wall, I'd like to hear which route you took and where it got in your way. The setup steps are also on the guide page: https://localcmd.app/control-multiple-computers-with-ai https://localcmd.app/control-multiple-computers-with-ai . You can block commands and revoke a computer or an AI app at localcmd.app at any time.