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
관련 서버
Alpha Vantage MCP Server
스폰서Access financial market data: realtime & historical stock, ETF, options, forex, crypto, commodities, fundamentals, technical indicators, & more
Remote MCP Server (Authless)
An example of a remote MCP server deployable on Cloudflare Workers, without authentication.
mcpproxy-go
Open-source local MCP proxy server. Routes multiple MCP servers through a single endpoint with BM25 tool filtering, quarantine security, activity logging, and web UI.
iOS Development Bridge (idb)
Interact with iOS simulators and devices using Facebook's iOS Development Bridge (idb).
Shipyard
The Shipyard CLI provides an MCP server for agents to manage Shipyard environments directly: by pulling logs, comparing branches, running tests, and stopping/starting environments..
AppControl Windows System History
An MCP server that gives AI agents like Claude, Cursor, and Gemini access to historical Windows CPU, GPU, temperature, and privacy data gathered by the AppControl Windows app.
MCP Servers
A collection of reference implementations for the Model Context Protocol (MCP), demonstrating how to give LLMs secure access to tools and data using Typescript and Python SDKs.
CodebaseIQ Pro
Provides AI assistants with a comprehensive, one-time analysis for complete codebase context and understanding.
Odoo XML-RPC MCP Server
Interact with Odoo instances using the XML-RPC API. Requires configuration via environment variables or config files.
oclif MCP Server Plugin
An oclif CLI plugin that automatically discovers and serves commands via the Model Context Protocol (MCP).
Software Planning Tool
A tool for structured software development planning, helping to break down projects into tasks and track progress.