Labsco
MCP SERVER

MCP Proxy Server

by TBXark

Aggregate many MCP servers behind one HTTP entrypoint, hold their OAuth tokens for you, and filter which of their tools get through.

MCP Plumbing: Proxies, Registries & Inspectors
Summary
Authorize the downstream server once, then let everything reach it.

The OAuth handling is what separates this from a plain aggregator: a server that demands an interactive login gets authorized at the proxy, and every caller behind it uses that held, refreshed token without repeating the flow.

What it is

A Go proxy that connects to a list of MCP servers and re-exposes their tools, prompts and resources over Server-Sent Events or Streamable HTTP. Downstream servers can be stdio, SSE or streamable-http.

What you get
  • One endpoint fronting many servers, aggregating tools, prompts and resources across all of them
  • A choice of transport for callers — SSE by default, or streamable HTTP
  • OAuth client support: authorize once against a downstream server that requires an interactive flow, such as Notion, and the proxy holds and refreshes the token for every caller afterwards
  • Per-server `toolFilter` with `block` or allow modes, so a downstream server contributes only the tools you meant
  • Auth tokens at two levels — proxy-wide defaults and per-server overrides — plus per-server `panicIfInvalid`, `logEnabled` and `disabled` switches
  • A browser-based converter that generates a Claude configuration from your proxy config
Requirements

Build from source with `make build`, install with `go install github.com/tbxark/mcp-proxy@latest`, or run the published image `ghcr.io/tbxark/mcp-proxy:latest` on port 9090 — the image includes support for launching MCP servers through `npx` and `uvx`. Configuration is a JSON file passed with `--config`, either a local path or a remote URL. The current schema uses `mcpProxy` for the proxy block and `mcpServers` for the downstream list, with each server's options nested under `options`; the older `server` and `clients` schema has been removed, so an older config needs renaming and each client's `config` object lifting into the entry itself. MIT licensed.

Setup effort

One command — go install github.com/tbxark/mcp-proxy@latest