LABSCO SUMMARY
Named servers turn one proxy into a whole fleet behind one port.
That is the feature that separates this from a one-shot bridge: a single JSON config in the mcpServers shape you already have gives each server its own /servers/NAME/ path, plus a /status endpoint to check them. Note the config file wins outright — when --named-server-config is supplied, the individual --named-server flags are ignored.
What it is
A Python transport proxy with two modes. One turns a remote SSE or Streamable HTTP server into a local stdio process, which is how a client like Claude Desktop reaches a server it cannot speak to natively. The other opens a port, spawns local stdio servers, and serves them over SSE.
What you get
- Stdio to SSE or Streamable HTTP, choosing the protocol with
--transportset tosseorstreamablehttp - Headers for authenticated remotes via
--headers, or theAPI_ACCESS_TOKENvariable as a shorthand for a bearer token - OAuth2 client credentials support through
--client-id,--client-secretand--token-url - SSE to stdio the other way, with
--sse-portand--sse-hostcontrolling where it listens and--envpassing variables to the spawned server - Named servers: several local servers behind one port, each at
/servers/NAME/, defined by repeated--named-serverflags or a single--named-server-configJSON file in the familiarmcpServersshape - A default server at the root paths alongside the named ones, and a global
/statusendpoint
Requirements
Python, installed from PyPI with uv or pip, from the GitHub repository for the latest, or as a container. The client launches mcp-proxy with the remote URL as the first argument; in the other direction the command for the local server goes after a -- separator. Version 0.12.0.
Setup effort
One command — uv tool install mcp-proxy
USE CASES
01
Connecting a desktop client to a remote MCP server it cannot reach
Run the proxy as the client's command with the remote URL, and pass the access token through the environment.
02
Making a local stdio server reachable over the network
Start the proxy with an SSE port and the server's command after the separator, and pass any environment variables it needs.
03
Serving several local servers from one host
Write one JSON config in the mcpServers shape; each server gets its own path under /servers/, and /status reports the lot.
04
Talking to a server that requires OAuth2
Supply the client id, client secret and token endpoint on the command line rather than minting tokens by hand.
BEFORE YOU INSTALL
What to know first
Requires
mcp-proxy on PATH
INSTALLATION
Connect your client
Server setup
TERMINAL
uv tool install mcp-proxyMCP Clients
Claude Desktop
CLAUDE DESKTOP · JSON
{
"mcpServers": {
"mcp-proxy": {
"command": "mcp-proxy",
"args": [
"http://example.io/sse"
],
"env": {
"API_ACCESS_TOKEN": "<YOUR_API_ACCESS_TOKEN>"
}
}
}
}http://example.io/sse is the SSE address of the remote server you want to reach, and <YOUR_API_ACCESS_TOKEN> its bearer token — leave out the env block if that server needs none. For a Streamable HTTP server, add "--transport=streamablehttp" to args.