PM

punkpeye/mcp-proxy

Developer tools

이 페이지는 AI로 자동 번역되었습니다. 기술적인 세부 사항은 원문을 확인하세요. 원문 보기

293 stars 0 forks 품질 46 트렌드 50

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
GitHub에서 전체 README 보기

설치

npx mcp-proxy --upstreamProtocol auto -- my-modern-mcp-server
MCP 초보자라면? mcpskill.org 가이드부터 시작하세요 →