LABSCO SUMMARY
Transport translation plus a per-server tool allowlist, in one small binary.
The reason to reach for this over a bigger gateway is what it does not ask of you: the config is the Claude-style file you already have, and each server entry can carry allow and deny lists so a proxied server offers only the tools you picked. Because it drops the streaming requirement, the hosting side can be as simple as a single container.
What it is
A thin Go proxy that connects to your MCP servers and exposes them to clients over HTTP without a streaming transport.
What you get
- Clients connect over plain HTTP — no streaming transport needed on the host
- One config file in the same shape your client already uses, in JSON or YAML
- $VARNAME in the config is substituted from the environment, so secrets stay out of the file
- Per-server tool filtering under _extensions.tools, with allow and deny lists
- Deny takes precedence, so a blanket allow with a few exclusions works
Requirements
Install with go install github.com/ubie-oss/mcp-proxy, then run it with a config path and a port. The config lists each server's command, args and env just as a client config would.
Setup effort
Build from source — git clone https://github.com/ubie-oss/mcp-proxy
USE CASES
Hosting MCP servers on infrastructure that cannot stream
Run the proxy in front of them and let clients connect over ordinary HTTP.
Cutting a noisy server down to the two tools you want
List them under that server's allow entry; everything else stops being offered.
Keeping credentials out of the config file
Write $SERVER1_VAR1 in the config and let the environment supply the value.
BEFORE YOU INSTALL
What to know first
Requires
go on PATH
INSTALLATION
Connect your client
This one is built from source rather than installed with a single command.
Server setup
git clone https://github.com/ubie-oss/mcp-proxy
cd mcp-proxyCreate config.json listing the servers to put behind the proxy, in the same mcpServers shape as a Claude config (command, args, env). $VARNAME values are read from the environment, YAML works too, and each server can carry _extensions.tools allow and deny lists
go run . -config config.json -port 9090Point an MCP client that speaks HTTP at http://localhost:9090/ — the proxy answers MCP JSON-RPC POSTs at /, without a streaming transport