Most bridges only go one way — remote server to local stdio client. Being able to run it the other way, publishing a local stdio server on a port, is what makes it useful for sharing one server with a team or reaching it from a container. The OAuth handling is the other quiet win: token refresh happens in the proxy rather than in each client, and `reset` is the documented escape hatch when a cached login goes bad.
A bidirectional MCP proxy. In remote-client mode it connects to a remote MCP server and presents it locally over stdio, so a client that only speaks stdio can use a hosted server. In local-server mode it launches your stdio server as a subprocess and publishes it as an SSE or Streamable HTTP endpoint. Transport is detected from the URL and can be overridden.
- A remote server presented to a stdio-only client, with the transport chosen automatically — URLs containing `/sse` use SSE, everything else uses Streamable HTTP, and `--transport` forces either
- A local stdio server published over the network with `--port`, in SSE or, with `--transport streamable-http`, Streamable HTTP
- The full OAuth flow with automatic token refresh, and `mcp-proxy reset` to clear stored auth when a login goes wrong
- Environment variables injected into the proxied server with `-e KEY VALUE`, or the whole environment passed through with `--pass-environment`
- Custom headers added on the client side with `-H`, and a bind host chosen with `--host`, which defaults to `127.0.0.1`
- Log verbosity controlled through `RUST_LOG`, since the upstream crate is noisy by default
- A Rust library surface — `run_sse_client` and `run_streamable_http_client` with their config structs — for embedding the same behaviour
No account and no key for the proxy itself; whatever the server behind it requires still applies. Install with `cargo install rmcp-proxy`, or `cargo install --git https://github.com/stephenlacy/mcp-proxy`, or build with `cargo build --release`. In client mode the command is `mcp-proxy <url>`; in server mode it is `mcp-proxy --port <port> -- <your command and args>`. Auth data is cached under `~/.mcp-auth`, which `mcp-proxy reset` clears.
One command — cargo install rmcp-proxy
