/ ディレクトリ / プレイグラウンド / mcp-proxy
● コミュニティ sparfenyuk ⚡ 即起動

mcp-proxy

作者 sparfenyuk · sparfenyuk/mcp-proxy

stdio MCPをSSE/Streamable HTTPに(またはその逆に)ブリッジする — トランスポートを相互運用させるシンプルなPythonツールです。

sparfenyuk/mcp-proxyはトランスポートブリッジです。2つのモードがあります:(1) リモートSSE/HTTP MCPに接続するstdioクライアント — Claude Desktopがリモートサーバーと通信できるようになります;(2) ローカルstdio MCPをラップするSSEサーバー — HTTP、CORS、認証、複数の名前付きサーバーで公開します。

なぜ使うのか

主な機能

ライブデモ

実際の動作

proxy.replay ▶ 準備完了
0/0

インストール

クライアントを選択

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "proxy": {
      "command": "uvx",
      "args": [
        "mcp-proxy"
      ],
      "_inferred": true
    }
  }
}

Claude Desktop → Settings → Developer → Edit Config を開く。保存後、アプリを再起動。

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "proxy": {
      "command": "uvx",
      "args": [
        "mcp-proxy"
      ],
      "_inferred": true
    }
  }
}

Cursor は Claude Desktop と同じ mcpServers スキーマを使用。プロジェクト設定はグローバルより優先。

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "proxy": {
      "command": "uvx",
      "args": [
        "mcp-proxy"
      ],
      "_inferred": true
    }
  }
}

Cline サイドバーの MCP Servers アイコンをクリックし、"Edit Configuration" を選択。

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "proxy": {
      "command": "uvx",
      "args": [
        "mcp-proxy"
      ],
      "_inferred": true
    }
  }
}

Claude Desktop と同じ形式。Windsurf を再起動して反映。

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "proxy",
      "command": "uvx",
      "args": [
        "mcp-proxy"
      ]
    }
  ]
}

Continue はマップではなくサーバーオブジェクトの配列を使用。

~/.config/zed/settings.json
{
  "context_servers": {
    "proxy": {
      "command": {
        "path": "uvx",
        "args": [
          "mcp-proxy"
        ]
      }
    }
  }
}

context_servers に追加。保存時に Zed がホットリロード。

claude mcp add proxy -- uvx mcp-proxy

ワンライナー。claude mcp list で確認、claude mcp remove で削除。

ユースケース

実用的な使い方: mcp-proxy

Claude DesktopでリモートSSE MCPサーバーを使用する方法

👤 チームでホストされているMCPゲートウェイを持つ開発者向け ⏱ ~10 min beginner

使うタイミング: チームがhttps://mcp.team.internalでゲートウェイを実行していますが、Claude Desktopはstdioのみに対応しています。

前提条件
  • uv またはpipx — brew install uv
フロー
  1. mcp-proxyをインストール
    実行:uv tool install mcp-proxy✓ コピーしました
    → mcp-proxyがPATHに存在
  2. Claude Desktopを設定
    MCPエントリを追加:command=mcp-proxy, args=['--headers','Authorization','Bearer $TOKEN','https://mcp.team.internal/sse']。✓ コピーしました
    → 再起動時にClaude Desktopが接続
  3. 確認
    Claudeで質問:どんなツールを持っていますか?✓ コピーしました
    → リモートツールが一覧表示される

結果: stdio専用クライアントからリモートサーバーを使用可能。

注意点
  • 認証ヘッダーが認識されない — --headersの構文を正確に使用してください;クライアントによっては環境変数の補間を破損させることがあります — トークンを自分で展開してください
組み合わせ: mcphub

ローカルstdio MCPをHTTP経由でリモートの同僚に公開する方法

👤 ローカルツールを一時的に共有している開発者向け ⏱ ~15 min intermediate

使うタイミング: カスタムstdio MCPを構築し、リモートの同僚が試したいと考えています。

フロー
  1. インバウンドモードでプロキシを実行
    mcp-proxy --sse-host 0.0.0.0 --sse-port 3333 --named-server my-tool 'uvx my-tool-mcp'✓ コピーしました
    → SSEエンドポイント::3333/my-tool/sse
  2. トンネリング
    ngrokまたはcloudflareddを使用して3333をパブリックURLで公開します。✓ コピーしました
    → 共有可能なURL
  3. チームメンバーが接続
    クライアントにURLを追加します(mcp-proxy経由、またはクライアントがSSEをサポートしている場合は直接)。✓ コピーしました
    → 共有セッションが機能

結果: ローカルツールのアドホック共有。

注意点
  • デフォルトで認証がない — --bearer-tokenを使用するか、Caddy基本認証の背後に配置してください

1つのプロキシポートから複数のローカルMCPを提供する方法

👤 ホームラボの愛好家向け ⏱ ~15 min intermediate

使うタイミング: github、filesystem、postgres MCPを提供する1つのゲートウェイが必要です。

フロー
  1. 複数の--named-serverの引数で開始
    mcp-proxy --sse-port 3333 --named-server gh 'uvx mcp-server-github' --named-server fs 'uvx mcp-server-filesystem ~/src'✓ コピーしました
    → エンドポイント /gh/sse と /fs/sse
  2. クライアントで各々を接続
    MCPクライアントで各々を別々のサーバーとして追加します。✓ コピーしました
    → 両方からのツールが表示される

結果: 1つのプロセス、複数のMCP。

注意点
  • 名前付きサーバーはプロキシのリソース予算を共有 — 軽量なMCPと同じプロキシに重いMCPを配置しないでください
組み合わせ: mcphub

組み合わせ

他のMCPと組み合わせて10倍の力を

proxy + mcphub

mcp-proxyを使用してstdio MCPを公開し、MCPHubがHTTP経由で集約できるようにします

mcp-proxyを使用してローカルのgithub stdio MCPをHTTPにブリッジし、MCPHubの'dev'グループに登録してください。✓ コピーしました
proxy + unla

mcp-proxyの最後一マイルのstdioブリッジの上にUnlaの公開ゲートウェイを使用します

mcp-proxyでstdio MCPをブリッジし、OAuth +マルチテナンシーのためにUnlaを前面に配置してください。✓ コピーしました

ツール

このMCPが提供する機能

ツール入力呼び出すタイミングコスト
(proxy) stdio-to-sse remote_url, headers?, bearer? stdio クライアントをリモートSSEサーバーに接続 free
(proxy) sse-to-stdio named_server spec stdio MCPをHTTP経由で公開 free

コストと制限

運用コスト

APIクォータ
なし
呼び出しあたりのトークン
測定可能なオーバーヘッドなし
金額
無料(MIT)
ヒント
クライアントが他のトランスポートをネイティブに対応している場合は、プロキシをスキップしてください — 部品が少なくなります。

セキュリティ

権限、シークレット、影響範囲

最小スコープ: リモートURLへのネットワーク送信(アウトバウンドモード) インバウンドポートバインディング(インバウンドモード)
認証情報の保管: ヘッダー/トークンはCLI引数または環境変数経由で渡される
データ送信先: ブリッジされたMCPが行うことは何でも;プロキシ自体は透過的です
絶対に付与しない: 認証なしで0.0.0.0でインバウンドモードを公開しないでください シェル履歴にトークンをログ出力しないでください — 環境変数を使用してください

トラブルシューティング

よくあるエラーと対処法

接続が直ちに閉じられた

リモートURLパスが間違っています — SSEエンドポイントは通常/sseで終わります。

確認: curl -N <url>
ブラウザクライアントのCORSエラー

mcp-proxyを--allow-originで起動するか、CORSヘッダーを備えたリバースプロキシの背後に配置してください。

--bearer-tokenを使用しても401エラー

リモートは別のヘッダーのトークンを期待しています(例:X-API-Key)。--headersを使用してカスタマイズしてください。

60秒後にSSEがドロップ

ロードバランサーのアイドルタイムアウト。これを上げるか、Streamable HTTPを使用してください。

代替案

mcp-proxy 他との比較

代替案代わりに使う場面トレードオフ
MCPHubブリッジだけでなく、マルチサーバー集約+ルーティングが必要ですより重い — UI、DB、OAuthがすべてバンドルされている
UnlaREST-to-MCP変換+ゲートウェイが必要です異なる問題空間
supergatewayJavaScriptのstdio-to-SSEブリッジを好む場合Nodeの依存関係

その他

リソース

📖 GitHub の公式 README を読む

🐙 オープンな issue を見る

🔍 400以上のMCPサーバーとSkillsを見る