
punkpeye/mcp-proxy
Developer tools이 페이지는 AI로 자동 번역되었습니다. 기술적인 세부 사항은 원문을 확인하세요. 원문 보기
Stdio 수송을 사용하는 MCP 서버에 대한 TypeScript streamable HTTP 및 SSE 프록시.
개요
Stdio 수송을 사용하는 MCP 서버에 대한 TypeScript streamable HTTP 및 SSE 프록시. CORS는 configurable 옵션과 기본적으로 활성화됩니다. 자세한 내용은 CORS 구성을 참조하십시오. inverse의 경우, 대화형 OAuth 플로우를 포함한 원격 MCP 서버에 stdio 전용 클라이언트 액세스를 제공합니다. mcp-remote를 참조하십시오. MCP 프록시는 FastMCP가 HTTP와 SSE를 간소화할 수 있도록 하는 것입니다. MCP 프록시는 프로토콜 개정 2026-07-28 및 2025-era 개정 (2024-10-07를 통해 2025-11-25)을 동일한 엔드포인트에서 제공합니다. 모든 POST에서 streamable HTTP 엔드 포인트는 자신의 내용에 의해 분류됩니다. - 2026-07-28 개정은 모든 요청에 meta envelope를 넣어, 하나없이 요청은 2025-era 세션 기계 - 너무 오래되고 새로운 클라이언트는 하나의 URL을 공유하고 다른 존재를 알 필요가 없습니다. 진행 알림 및 취소는 두 시대에 프록시를 가로 웁니다. 전달된 통화는 콜러의 복부 신호를 운반하고, 릴레이된 진행은 콜러가 전송된 토큰으로 다시 태그됩니다.
개요(AI 번역)
MCP 서버의 TypeScript streamable HTTP 및 SSE 프록시는 stdio 전송을 사용한다.
[!노트] CORS는 configurable 선택권에 기본적으로 활성화됩니다. 자세한 내용은 CORS 구성을 참조하십시오.
[!노트] inverse의 경우 - 대화형 OAuth 흐름을 포함하여 원격 MCP 서버에 stdio 전용 클라이언트 액세스를 제공합니다. mcp-remote를 참조하십시오.
[!노트] MCP 프록시는 FastMCP가 HTTP와 SSE를 간소화할 수 있도록 하는 것입니다.
프로토콜 개정
MCP 프록시는 프로토콜 개정 2026-07-28과 2025-era 개정을 제공합니다
(2024-10-07] 를 통해 2025-11-25]) 같은 엔드포인트에서. 모든 POST에
streamable HTTP 엔드 포인트는 자신의 내용에 의해 분류됩니다 — 2026-07-28
개정은 _meta] 각 요청에 대한 봉투, 하나없이 요청은
2025-era 세션 기계에 의해 제공 - 너무 오래되고 새로운 클라이언트는 하나의 URL을 공유
다른 존재를 알 수 없습니다.
| | 2025-era 클라이언트 | 2026-07-28 클라이언트 |
| --------------------- | ---------------------------- |
| /mcp (streamable) | 네, 세션 | 네, 퀘스트 |
| /sse(HTTP+SSE) | 예 | n/a - 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