
punkpeye/mcp-proxy
Developer toolsこのページは AI により自動翻訳されています。技術的な詳細は原文をご確認ください。 原文を見る
Stdio トランスポートを使用する MCP サーバーの TypeScript の HTTP および SSE プロキシを合理化できます.
概要
Stdio トランスポートを使用する MCP サーバーの TypeScript の HTTP および SSE プロキシを合理化できます。 設定可能なオプションでデフォルトで CORS が有効になっています。 詳細は CORS の構成を参照してください。 逆に — 対話型 OAuth フローを含むリモート MCP サーバーへの stdio 専用クライアントアクセス — mcp-remote を参照してください。 MCP プロキシは、FastMCP が HTTP と SSE をストリーム可能にするために使用するものです。 MCP プロキシは、同じエンドポイントからプロトコルのリビジョン 2026-07-28 および 2025-era リビジョン (2024-10-07 から 2025-11-25) を提供します。 ストリーム可能なHTTPエンドポイントへのすべてのPOSTは、独自のコンテンツによって分類されます。 2026-07-28 リビジョンは、すべてのリクエストに対して meta envelopeを置き、誰も2025-eraセッションの機械によって提供されていないリクエストは、1つのURLを共有し、もう1つのURLを知らない。 進行通知とキャンセルは、両方の時代にプロキシを渡します: 転送された呼び出しは、発信者の退屈な信号を運び、中継された進捗状況は、送信された呼び出し元がトークンで再タグ付けされます.
概要(AI 翻訳)
TypeScript は stdio] トランスポートを使用する MCP サーバーの HTTP と SSE プロキシを合理化できます。
[!NOTE] CORSは設定可能なオプションでデフォルトで有効になっています。 詳細は CORS の構成を参照してください。
[!NOTE] 逆の場合 — 対話型 OAuth フローを含むリモート MCP サーバーへの stdio 専用クライアントアクセス — mcp-remote を参照してください。
[!NOTE] MCP プロキシは、FastMCP が HTTP と SSE をストリーム可能にするために使用するものです。
プロトコルリビジョン
MCP プロキシは、プロトコルリビジョン [2026-07-28] と 2025 era リビジョンを実行します。
([2024-10-07]) を同じエンドポイントから[[2025-11-25]] で行います。 すべてのポストに
ストリーム可能なHTTPエンドポイントは、独自のコンテンツによって分類されます。 2026-07-28
リビジョンは[[_meta]をすべてのリクエストにエンベロープし、1つのないリクエストを
2025年のセッション機械によって提供されるので、古いクライアントは1つのURLを共有します
そして、他の存在を知る必要はありません。
| | 2025 era クライアント | 2026-07-28 クライアント |
| --------------------- | -------------------------- |
| [T5 | あり | あり | あり | 問答別 |
| [/sse(HTTP+SSE) | はい | n/a — no SSE 輸送は存在しません |
| stdio(startStdioServer) | はい | 只今 | 詳細はこちら |
このページは AI により自動翻訳されています。技術的な詳細は原文をご確認ください。
README
以下は原文 README の抜粋です。原文を見る。
MCP Proxy
A TypeScript streamable HTTP and SSE proxy for MCP servers that use stdio transport.
[!NOTE] CORS is enabled by default with configurable options. See CORS Configuration for details.
[!NOTE] For the inverse — giving a stdio-only client access to a remote MCP server, including the interactive OAuth flow — see mcp-remote.
[!NOTE] MCP Proxy is what FastMCP uses to enable streamable HTTP and SSE.
Protocol revisions
MCP Proxy serves protocol revision 2026-07-28 and the 2025-era revisions
(2024-10-07 through 2025-11-25) from the same endpoint. Every POST to the
streamable HTTP endpoint is classified by its own content — the 2026-07-28
revision puts a _meta envelope on every request, and requests without one are
served by the 2025-era session machinery — so old and new clients share one URL
and neither has to know the other exists.
| 2025-era clients | 2026-07-28 clients | |
|---|---|---|
/mcp (streamable) |
yes, sessionful | yes, per-request |
/sse (HTTP+SSE) |
yes | n/a — no SSE transport exists |
stdio (startStdioServer) |
yes | not yet — see below |
| Change notifications | unsolicited | subscriptions/listen stream |
Progress notifications and cancellation cross the proxy in both eras: a forwarded call carries the caller’s abort signal, and relayed progress is re-tagged with the token the caller sent.
Use --no-modern to serve only 2025-era clients; a 2026-07-28 client is then
answered by the 2025-era machinery, which does not recognise its request. The
modern leg lives on the streamable HTTP endpoint, so it is also absent when that
endpoint is disabled (--server sse, or streamEndpoint: null).
The upstream connection — the server MCP Proxy spawns — negotiates its own
revision independently, so any combination works. It uses the 2025 initialize
handshake by default; pass --upstreamProtocol auto to probe with
server/discover first (needed to front a 2026-07-28 server) or
--upstreamProtocol modern to require it.
# front a 2026-07-28 stdio server, serving both eras downstream
npx mcp-proxy --upstreamProtocol auto -- my-modern-mcp-server
What does not cross the proxy
These are consequences of one design decision — the proxy multiplexes every downstream connection onto a single upstream connection — and are called out rather than half-solved.
- Anything that asks the client for input (elicitation, sampling, roots). A 2025-era server pushes its request out of band, carrying nothing that says which caller it belongs to, so relaying it means guessing whose screen to put the prompt on. A 2026-07-28 upstream is not ambiguous that way — the request
インストール
npx mcp-proxy --upstreamProtocol auto -- my-modern-mcp-server