Глубокое погружение в потокову... Заметка
Сообщество RSS DEV

Глубокое погружение в потоковую передачу HTTP в MCP

Стандарт Model Context Protocol (MCP) стандартизирует связь между AI-клиентами и серверами с использованием HTTP. MCP использует Streamable HTTP, обеспечивая как запрос/ответ, так и потоковую связь через единую конечную точку, обычно `/mcp`. Клиенты инициализируют сессию, отправляя POST-запрос на `/mcp`, обмениваясь возможностями для установления общей функциональности. Затем клиенты могут отправлять запросы через POST на ту же конечную точку для выполнения задач. Серверы отвечают либо стандартными JSON-ответами, либо потоковыми Server-Sent Events (SSE) для длительных операций. SSE позволяет серверам отправлять инкрементные обновления, обозначаемые заголовком `Content-Type: text/event-stream`. Клиенты могут использовать библиотеку `sseclient` для обработки потоковых ответов. Клиенты могут опционально открыть SSE-соединение, используя GET-запрос к конечной точке `/mcp` для непрерывных обновлений. Streamable HTTP упрощает подход по сравнению с устаревшими моделями с отдельными конечными точками. Протокол не имеет состояния на транспортном уровне, но учитывает состояние сессии на уровне протокола. HTTP предпочтителен для быстрых, одиночных ответов, в то время как SSE идеально подходит для обновлений хода выполнения и текущих результатов. Этот подход способствует простоте реализации, отладки и дальнейшему расширению протокола.
CdXz5zHNQW_UzVYWLUiz3.webp