LABSCO SUMMARY
A transport adapter, not a source of tools.
It adds nothing to the tool list — it carries whatever the remote server already offers into a client that only knows how to spawn a local process. Worth knowing before you install it: the protocol version the server announces is not always one the client accepts, which is exactly what the override flag is for.
What it is
A single Rust binary that sits between a STDIO based MCP client and an HTTP based MCP server. It speaks SSE according to the 2024-11-05 specification as well as streamable HTTP according to the 2025-03-26 specification, so a client that can only launch a local command can still reach a server that lives behind a URL.
What you get
- A remote MCP server reachable from a stdio-only client: the client's
commandpoints at the binary, and the server URL goes inargs - Both remote transports covered — SSE per
2024-11-05and streamable HTTP per2025-03-26 - A way past a version mismatch when the client does not support the version the server sends —
--override-protocol-versionreports a different one - A bound on reconnection attempts while disconnected —
--max-disconnected-time, which defaults to infinity when not set - Debug messages on stderr with
--debug - Prebuilt binaries for Apple Silicon and Intel macOS, x86 and aarch64 Linux (musl), and Windows (msvc), plus
cargo build --releasefrom source
Requirements
Nothing to sign up for — no account, no key. What it needs is the URL of the SSE MCP server, passed as the argument or set in SSE_URL. The released binaries are not notarized, so a copy downloaded through the browser will not open on macOS; clear the flag with xattr -d com.apple.quarantine /path/to/mcp-proxy. Building it yourself needs Rust and cargo, and puts the binary at target/release/mcp-proxy.
Setup effort
One command — curl -sL https://github.com/tidewave-ai/mcp_proxy_rust/releases/latest/download/mcp-proxy-aarch64-apple-darwin.tar.gz | tar xv
USE CASES
01
Reaching a hosted MCP server from a client that only speaks stdio
Point the client's command at the binary and pass the server's SSE URL as its argument, or set SSE_URL instead.
02
Getting past a protocol version the client rejects
Start the proxy with --override-protocol-version so it reports the version the client expects rather than the one the server sent.
03
Stopping a dropped connection from retrying forever
Set --max-disconnected-time to bound the reconnect window; left unset it retries indefinitely.
04
Seeing why a connection is not coming up
Add --debug and read the debug messages the proxy writes to stderr.
INSTALLATION
Connect your client
Server setup
Download the prebuilt binary for your platform from the releases page (macOS Apple Silicon / Intel, Linux x86_64 / aarch64 musl, Windows x86_64-msvc) — e.g. curl -sL https://github.com/tidewave-ai/mcp_proxy_rust/releases/latest/download/mcp-proxy-aarch64-apple-darwin.tar.gz | tar xv
On macOS, if downloaded via browser, clear quarantine:
TERMINAL
xattr -d com.apple.quarantine <YOUR_PATH_TO_MCP_PROXY>Alternatively build from source with Rust: cargo build --release (binary ends up at target/release/mcp-proxy)
Point your STDIO MCP client at the binary using the mcpServers config block, passing the SSE URL as the argument
MCP Clients
Claude Desktop — macOS, Linux
CLAUDE DESKTOP — MACOS, LINUX · JSON
{
"mcpServers": {
"my-server": {
"command": "<YOUR_PATH_TO_MCP_PROXY>",
"args": [
"http://localhost:4000/tidewave/mcp"
]
}
}
}