PM

punkpeye/mcp-proxy

Developer tools

このページは AI により自動翻訳されています。技術的な詳細は原文をご確認ください。 原文を見る

293 stars 0 forks 品質 46 トレンド 50

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
GitHub で README 全文を見る

インストール

npx mcp-proxy --upstreamProtocol auto -- my-modern-mcp-server
MCP 初心者?mcpskill.org のガイドから始めましょう →