
punkpeye/mcp-proxy
Developer toolsЭта страница переведена автоматически. Технические детали смотрите в оригинале. Открыть оригинал
Тип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
Установка
npx mcp-proxy --upstreamProtocol auto -- my-modern-mcp-server