Airsc is free for everyone. If it helps you, support it with $2–$20.

Support
MCP serverSafeAgent workflow & memoryAdvanced

mcp-proxy

sparfenyuk · sparfenyuk/mcp-proxy

A proxy tool that converts between different Model Context Protocol (MCP) server communication transports, like stdio and SSE/StreamableHTTP.

A bridge between Streamable HTTP and stdio MCP transports

2.8k stars270License: MITUpdated 4 days ago0 opens

Preview

▍

What you can do with it

  • Connect a Claude Desktop client (stdio) to an external MCP server that only supports SSE.
  • Enable an MCP server using StreamableHTTP to communicate with clients expecting stdio.
  • Develop and test MCP servers by adapting their communication protocols.

Safety check

Safe

No risky patterns found in the files we scanned.

Automated scan of the repo files. Always review code you run.

From the README

mcp-proxy

About

The mcp-proxy is a tool that lets you switch between server transports. There are two supported modes:

  1. stdio to SSE/StreamableHTTP
  2. SSE to stdio

1. stdio to SSE/StreamableHTTP

Run a proxy server from stdio that connects to a remote SSE server.

This mode allows clients like Claude Desktop to communicate to a remote server over SSE even though it is not supported natively.

graph LR
    A["Claude Desktop"] <--> |stdio| B["mcp-proxy"]
    B <--> |SSE| C["External MCP Server"]

    style A fill:#ffe6f9,stroke:#333,color:black,stroke-width:2px
    style B fill:#e6e6ff,stroke:#333,color:black,stroke-width:2px
    style C fill:#e6ffe6,stroke:#333,color:black,stroke-width:2px

1.1 Configuration

This mode requires providing the URL of the MCP Server's SSE endpoint as the program’s first argument. If the server uses Streamable HTTP transport, make sure to enforce it on the mcp-proxy side by passing --transport=streamablehttp.

Arguments

NameRequiredDescriptionExample
command_or_urlYesThe MCP server SSE endpoint to connect tohttp://example.io/sse
--headersNoHeaders to use for the MCP server SSE connectionAuthorization 'Bearer my-secret-access-token'
--transportNoDecides which transport protocol to use when connecting to an MCP server. Can be either 'sse' or 'streamablehttp'streamablehttp
--client-idNoOAuth2 client ID for authenticationyour_client_id
--client-secretNoOAuth2 client secret for authenticationyour_client_secret
--token-urlNoOAuth2 token endpoint URL for authenticationhttps://auth.example.com/oauth/token
--usernameNoUsername for authenticationuser
--passwordNoPassword for authenticationpassword
--digestNoUse digest authentication

Environment Variables

NameRequiredDescriptionExample
API_ACCESS_TOKENNoCan be used instead of --headers Authorization 'Bearer 'YOUR_TOKEN

1.2 Example usage

mcp-proxy is supposed to be started by the MCP Client, so the configuration must be done accordingly.

For Claude Desktop, the configuration entry can look like this:

{
  "mcpServers": {
    "mcp-proxy": {
      "command": "mcp-proxy",
      "args": [
        "http://example.io/sse"
      ],
      "env": {
        "API_ACCESS_TOKEN": "access-token"
      }
    }
  }
}

2. SSE to stdio

Run a proxy server exposing a SSE server that connects to a local stdio server.

This allows remote connections to the local stdio server. The mcp-proxy opens a port to listen for SSE requests, spawns a local stdio server that handles MCP requests.

graph LR
    A["LLM Client"] <-->|SSE| B["mcp-proxy"]
    B <-->|stdio| C["Local MCP Server"]

    style A fill:#ffe6f9,stroke:#333,color:black,stroke-width:2px
    style B fill:#e6e6ff,stroke:#333,color:black,stroke-width:2px
    style C fill:#e6ffe6,stroke:#333,color:black,stroke-width:2px

2.1 Configuration

This mode requires the --sse-port argument to be set. The --sse-host argument can be set to specify the host IP address that the SSE server will listen on. Additional environment variables can be passed to the local stdio server using the --env argument. The command line arguments for the local stdio server must be passed after the -- separator.

Arguments

| Name | Required | Description | Example

View source on GitHub