PM

punkpeye/mcp-proxy

Developer tools

Эта страница переведена автоматически. Технические детали смотрите в оригинале. Открыть оригинал

293 stars 0 forks Качество 46 Тренд 50

ТипScript потоковый HTTP и SSE прокси для MCP серверов, которые используют stdio транспорт.

Обзор

ТипScript потоковый HTTP и SSE прокси для MCP серверов, которые используют stdio транспорт. CORS включен по умолчанию с настраиваемыми опциями. Конфигурация CORS для деталей. Обратное — предоставление клиенту доступа только к удаленному MCP-серверу, включая интерактивный поток OAuth — см. MCP Proxy - это то, что FastMCP использует для обеспечения потокового HTTP и SSE. MCP Proxy обслуживает пересмотр протокола 2026-07-28 и пересмотры 2025 года (2024-10-07 до 2025-11-25) с той же конечной точки. Каждый POST для потоковой конечной точки HTTP классифицируется по своему собственному контенту — в версии 2026-07-28 на каждый запрос помещается конверт meta, а запросы без него обслуживаются сессионным механизмом 2025 года — поэтому старые и новые клиенты используют один URL-адрес, и ни один из них не должен знать, что другой существует. Уведомления о прогрессе и отмене пересекают прокси в обе эпохи: переадресованный вызов несет сигнал прерывания звонящего, а ретранслируемый прогресс повторно помечается маркером, отправленным звонящим.

Обзор (машинный перевод)

ТипScript потоковый HTTP и SSE прокси для MCP-серверов, которые используют транспорт stdio.

[!ПРИМЕЧАНИЕ] CORS включен по умолчанию с настраиваемыми опциями. Конфигурация CORS для деталей.

[!ПРИМЕЧАНИЕ] Для обратного — предоставление клиенту доступа только к удаленному MCP-серверу, включая интерактивный поток OAuth — см. mcp-remote.

[!ПРИМЕЧАНИЕ] MCP Proxy - это то, что FastMCP использует для обеспечения потокового HTTP и SSE.

Пересмотр протокола

MCP Proxy служит для пересмотра протокола 2026-07-28 и доработок 2025 года [[Т2]] через [[Т3]] от одной и той же конечной точки. Каждый пост в Конечная точка HTTP классифицируется по собственному контенту — 2026-07-28 Редакция ставит конверт _meta по каждому запросу, а запросы без одного Обслуживаемый сессионным оборудованием 2025 года, так что старые и новые клиенты имеют один URL-адрес. И никто не должен знать, что другой существует.

Клиенты 2025 года | 2026-07-28 клиентов |

[[Т5]] (потоковое) | да, сессионное | да, по запросу | | /sse (HTTP+SSE) | да | n/a — транспорта SSE не существует | [[Т7]][править править вики-текст]][править править код]

Эта страница переведена автоматически. Технические детали смотрите в оригинале.

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
Открыть полный README на GitHub

Установка

npx mcp-proxy --upstreamProtocol auto -- my-modern-mcp-server
Новичок в MCP? Начните с руководства на mcpskill.org →