sparfenyuk/mcp-proxy

A bridge between Streamable HTTP and stdio MCP transports

What it solves

mcp-proxy allows users to switch between different server transport protocols for the Model Context Protocol (MCP). It specifically solves the problem of incompatibility between clients and servers that use different communication methods, such as when a client only supports stdio but needs to connect to a remote server using SSE (Server-Sent Events) or StreamableHTTP.

How it works

The tool operates in two primary modes:

  1. stdio to SSE/StreamableHTTP: It acts as a local bridge. A client (like Claude Desktop) communicates with the proxy via stdio, and the proxy forwards those requests to a remote MCP server over SSE or StreamableHTTP.
  2. SSE to stdio: It acts as a server. The proxy opens a network port to listen for SSE requests from a remote LLM client and then spawns a local stdio-based MCP server to handle those requests.

It also supports "Named Servers," allowing a single proxy instance to manage and route requests to multiple different stdio servers based on the URL path.

Who it’s for

Developers and users of MCP-compatible LLM clients who need to connect to remote servers or expose local tools to remote clients, particularly when the native transport support of the client or server is limited.

Highlights

  • Bidirectional Transport Switching: Supports both stdio → SSE/StreamableHTTP and SSE → stdio.
  • Named Server Routing: Can host multiple stdio servers under unique URL paths (e.g., /servers/fetch/sse).
  • Authentication Support: Includes built-in options for OAuth2 (client ID, secret, token URL) and custom HTTP headers for remote connections.
  • Flexible Deployment: Available via PyPI, GitHub, or as a multi-platform Docker container.
  • CORS Configuration: Allows specifying allowed origins and exposed headers for SSE server mode.

Related

  • Project
  • Project
  • Project
  • Project
  • Dispatch