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 methods for the Model Context Protocol (MCP). It specifically solves the problem of incompatibility between MCP clients and servers that use different communication protocols, such as when a client only supports standard input/output (stdio) but needs to connect to a remote server using Server-Sent Events (SSE) or Streamable HTTP.

How it works

The tool operates in two primary modes:

  1. stdio to SSE/StreamableHTTP: It acts as a local bridge. The MCP client (e.g., Claude Desktop) communicates with mcp-proxy via stdio, and the proxy forwards those requests to a remote MCP server via SSE or Streamable HTTP.
  2. SSE to stdio: It acts as a server. It opens a network port to listen for SSE requests from an 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 MCP servers or expose local MCP servers to remote clients, regardless of the który transport protocol is natively supported.

Highlights

  • Bidirectional Transport Conversion: Seamlessly converts between stdio and SSE/Streamable HTTP.
  • Flexible Authentication: Supports various authentication methods including OAuth2, basic auth, digest auth, and custom headers.
  • Named Server Routing: Can host multiple stdio servers behind a single SSE endpoint using a configuration file or CLI arguments.
  • CORS Support: Includes options to allow specific origins and expose custom headers for SSE servers.
  • Containerized Deployment: Provided as a Docker image for easier setup and extensibility.

Related

  • Project
  • Project
  • Project
  • Project
  • Dispatch