mcp-proxy について
mcp-proxy は、OAuth に対応し SSE と Streamable HTTP トランスポートをサポートする、Rust 製の双方向 MCP プロキシです。リモートの MCP サーバーを stdio のローカルクライアントに接続し、ローカルのサーバーをネットワーク経由で公開できます。
主な機能
- 01SSE と Streamable HTTP トランスポート
- 02トークン自動更新を含む OAuth 認証
- 03双方向のプロキシ動作
- 04URL からのトランスポート自動判定
- 05RUST_LOG によるログレベルの制御
活用シーン
- 01リモート MCP サーバーの Claude や Cursor への接続
- 02ローカルの stdio MCP サーバーのネットワーク経由での公開
- 03認証キャッシュの削除による認証問題の解決
MCP 対応
このプロジェクトは MCP プロキシであり、stdio クライアントからリモート MCP サーバーへの接続を可能にし、ローカルの MCP サーバーを SSE または Streamable HTTP エンドポイントとして公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
mcp-proxy
SSE と Streamable HTTP トランスポートに対応し、OAuth をサポートする Rust 製の双方向 MCP プロキシです。
機能
- 複数のトランスポート:SSE と Streamable HTTP
- OAuth 認証:自動トークン更新に対応した完全な OAuth フロー
- 双方向プロキシ:リモートサーバーをローカルクライアントに接続するか、ローカルサーバーをリモートに公開します
- 高速かつ軽量:パフォーマンスを重視して Rust で構築されています
使用方法
インストール
# from crates.io
cargo install rmcp-proxy
# from github
cargo install --git https://github.com/stephenlacy/mcp-proxy
ビルド
cargo build --release
実行
このプロキシは 2 つのモードで動作します。
1. リモートクライアントモード
リモート MCP サーバーに接続し、ローカルの stdio サーバーとして公開します。SSE と Streamable HTTP の両トランスポートに対応し、自動検出します。
トランスポートの検出:
/sseを含む URL → SSE トランスポートを使用します- それ以外のすべての URL → Streamable HTTP トランスポートを使用します
--transportフラグで上書きできます
基本的な例
# 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
Claude または 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. ローカルサーバーモード
stdio 経由でローカル MCP サーバーに接続し、リモートサーバーとして公開します。SSE と Streamable HTTP のエンドポイントに対応しています。
# 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
認証の管理
認証キャッシュのクリア
認証の問題が発生した場合は、認証キャッシュをクリアしてください。
# Clear all auth data
mcp-proxy reset
# Or manually delete the directory
rm -rf ~/.mcp-auth
コマンドラインオプション
# 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
ログ
上流の rmcp クレートは残念ながら大量のログを出力します
RUST_LOG 環境変数でログの詳細度を制御します。
# 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
ライブラリの使用方法
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?;
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。