Labsco
MCP SERVER

Remote MCP Proxy

by pezzos

Make local MCP servers reachable from Claude on the web and on your phone — each one gets its own subdomain, generated from a single config file.

MCP Plumbing: Proxies, Registries & Inspectors
Summary
It fills a gap that will eventually close.

The premise is temporary by design — most MCP servers still only run on a desktop, and the Remote MCP protocol is the fix that not every server has adopted yet. Until they do, this is how a stdio-only server becomes something you can use from a phone. Two debug endpoints do most of the troubleshooting work: `/listmcp` tells you whether a backend started, `/listtools` tells you whether its tools were discovered, and between them almost every failure is one or the other. The wildcard DNS record is the prerequisite people forget.

What it is

A Go proxy in a Docker container that speaks the Remote MCP protocol on one side and standard MCP JSON-RPC on the other. It launches your local servers as child processes, translates between HTTP/SSE and their stdio interfaces, and hosts several of them at once under separate URLs — so servers that were never built to be remote become usable from Claude's web UI and mobile app.

What you get
  • Several MCP servers hosted at once, each under its own path, from a `config.json` in the same shape as `claude_desktop_config.json`
  • Automatic subdomain routing: every server in the config becomes `https://{server-name}.mcp.{DOMAIN}/sse`, with the Traefik rules generated for you
  • Backend processes launched, monitored and cleaned up by the proxy, with a clean shutdown that does not leave orphans
  • A `/health` endpoint for status, plus `/listmcp` to see which servers are up and `/listtools/{name}` to confirm a given server's tools are being discovered
  • Scaling by editing JSON — add a server, redeploy, and the new URL is live with SSL and routing already configured
Requirements

Docker, a domain you control, and wildcard DNS: an A record for `*.mcp.your-domain.com` pointing at your server, which is what makes per-server subdomains work. Set `DOMAIN` in a `.env` file, put your servers in `config.json`, then `make install-deps` and `make up`, or run the container directly with the config mounted and port 8080 published. Optional environment settings cover log levels and retention for the system and MCP logs. On the Claude side, adding remote MCP integrations requires a Pro, Max, Teams or Enterprise plan.

Setup effort

Build from source — clone the repository and build it