MCP Proxy
A bidirectional MCP proxy connecting stdio and Server-Sent Events (SSE) with OAuth support.
mcp-proxy
A Rust bidirectional MCP proxy supporting SSE and Streamable HTTP transports with OAuth.
Features
- Multiple transports: SSE and Streamable HTTP
- OAuth authentication: Full OAuth flow with automatic token refresh
- Bidirectional proxy: Connect remote servers to local clients or expose local servers remotely
- Fast and lightweight: Built in rust for performance
Usage
Installing
# from crates.io
cargo install rmcp-proxy
# from github
cargo install --git https://github.com/stephenlacy/mcp-proxy
Building
cargo build --release
Running
The proxy can operate in two modes:
1. Remote Client Mode
Connect to a remote MCP server and expose it as a local stdio server. Supports both SSE and Streamable HTTP transports with automatic detection.
Transport Detection:
- URLs containing
/sse→ Uses SSE transport - All other URLs → Uses Streamable HTTP transport
- Override with
--transportflag
Basic Examples
# Streamable HTTP
mcp-proxy http://localhost:9090/mcp/instances_abc123
# SSE transport
mcp-proxy http://localhost:8080/sse
mcp-proxy --transport sse http://localhost:8080/events
# Specific
mcp-proxy --transport streamable-http http://localhost:9090/api
Using with Claude or Cursor
{
"mcpServers": {
"my-remote-server": {
"command": "mcp-proxy",
"args": ["http://example.com/mcp/instances_abc123"]
},
"sse-server": {
"command": "mcp-proxy",
"args": ["--transport", "sse", "http://example.com/sse"]
}
}
}
2. Local Server Mode
Connect to a local MCP server via stdio and expose it as a remote server. Supports both SSE and Streamable HTTP endpoints.
# Expose as SSE server
mcp-proxy --port 8080 -- your-command --arg1 value1 --arg2 value2
mcp-proxy --port 8080 python mcp_server.py
mcp-proxy --port 8080 -- npx -y @modelcontextprotocol/server-everything
# Or http+streamable
mcp-proxy --port 9090 --transport streamable-http -- python mcp_server.py
mcp-proxy --port 8080 -e KEY VALUE -e ANOTHER_KEY ANOTHER_VALUE -- your-command
Authentication Management
Clearing Auth Cache
If you encounter authentication issues, clear the auth cache:
# Clear all auth data
mcp-proxy reset
# Or manually delete the directory
rm -rf ~/.mcp-auth
Command Line Options
# Transport selection
--transport <TRANSPORT> # sse, streamable-http, or auto (default: auto)
# Server mode options
--port <PORT> # Port for local server mode (default: random)
--host <HOST> # Host to bind to (default: 127.0.0.1)
# Environment variables (server mode)
-e, --env <KEY> <VALUE> # Set environment variable
--pass-environment # Pass through all environment variables
# Headers (client mode)
-H, --headers <KEY> <VALUE> # Add custom headers
# Reset auth
mcp-proxy reset # Clear all stored auth data
Logging
The upstream rmcp crate dumps noisy logs unfortunately
Control log verbosity with the RUST_LOG environment variable:
# Minimal logging
RUST_LOG=error mcp-proxy http://example.com/mcp
RUST_LOG=debug mcp-proxy http://example.com/mcp
RUST_LOG=info mcp-proxy http://example.com/mcp
Library Usage
use rmcp_proxy::{
sse_client::run_sse_client,
streamable_http_client::run_streamable_http_client,
StreamableHttpClientConfig, SseClientConfig
};
// Streamable HTTP client
let config = StreamableHttpClientConfig {
url: "http://example.com/mcp/instances_abc123".to_string(),
headers: HashMap::new(),
};
run_streamable_http_client(config).await?;
// SSE client
let config = SseClientConfig {
url: "http://example.com/sse".to_string(),
headers: HashMap::new(),
};
run_sse_client(config).await?;
License
MIT
Related Servers
Scout Monitoring MCP
sponsorPut performance and error data directly in the hands of your AI assistant.
Alpha Vantage MCP Server
sponsorAccess financial market data: realtime & historical stock, ETF, options, forex, crypto, commodities, fundamentals, technical indicators, & more
Cursor History MCP
Best MCP server for browsing, searching, backup, and exporting Cursor AI chat history.
gurddy mcp
his repository contains a fully functional MCP (Model Context Protocol) server, providing solutions for Constraint Satisfaction Problems (CSP) and Linear Programming (LP). It is based on the gurddy package and supports solving a variety of classic problems.
Md2svg
Converts Markdown text to SVG images.
CodeToPrompt MCP Server
An MCP server for the codetoprompt library, enabling integration with LLM agents.
Swift Package Index
Search for Swift packages and retrieve their READMEs and metadata from the Swift Package Index.
Abstract MCP Server
Caches large tool responses to files and returns compact resource links to save LLM context window space.
MCP Tool Builder
An MCP server that allows LLMs to dynamically create new tools through MCP clients like Claude Desktop.
Shell MCP
Securely execute shell commands with whitelisting, resource limits, and timeout controls for LLMs.
Root Signals
Equip AI agents with evaluation and self-improvement capabilities with Root Signals.
MCP-ABI
Interact with Ethereum-compatible smart contracts using their ABI.