Состояние и масштабирование в StreamableHTTP

Урок 13 из 18 курса «MCP: продвинутые темы»: официальный курс Anthropic Academy (Антропик) на русском языке. Урок входит в платный доступ; первые уроки курса бесплатно.

Кадр из видеоурока

О чём урок

Добро пожаловать в раздел продвинутых тем Model Context Protocol (MCP)! В этом уроке мы углубимся в критически важные аспекты развертывания серверов MCP в производственной среде, особенно когда речь идет о масштабировании и управлении коммуникациями. Мы рассмотрим, как флаги конфигурации могут фундаментально изменить поведение вашего сервера, влияя на его способность обрабатывать запросы, взаимодействовать с клиентами и интегрироваться с такими моделями, как Claude. Понимание этих концепций имеет решающее значение для любого, кто планирует развертывать MCP-серверы в масштабе, обеспечивая их стабильность, производительность и соответствие конкретным требованиям вашего приложения. Сегодняшний фокус — это транспорт StreamableHTTP и связанные с ним флаги, которые определяют, как ваш сервер обрабатывает состояние и потоковую передачу данных. Прежде чем мы перейдем к продвинутым темам, давайте вспомним, как клиенты MCP взаимодействуют с сервером. В своей стандартной конфигурации MCP разработан как сохраняющий состояние (stateful) протокол. Это означает, что сервер отслеживает каждого подключенного клиента, поддерживая "сессию" для каждого из них. Для этого клиентам MCP обычно требуются два отдельных типа соединений с сервером: Соединение GET SSE (Server-Sent Events) для получения запросов от сервера к клиенту. Это используется для таких вещей, как уведомления о прогрессе, логи и другие асинхронные обновления, инициируемые сервером. Запросы POST для вызова инструментов (tools) и получения ответов. Это основной канал для клиента, чтобы отправлять данные и получать результаты выполнения задач. Эта двусторонняя, сохраняющая состояние связь является мощной, позволяя серверу активно взаимодействовать с клиентом, например, отправлять промежуточные отчеты о прогрессе во время длительных операций или уведомлять о событиях. Однако, как мы увидим, она может создавать сложности при попытке масштабирования. Представьте, что ваш MCP-сервер становится невероятно популярным. Изначально вы могли бы иметь несколько клиентов, подключающихся к одному экземпляру сервера. Но по мере роста трафика, когда тысячи клиентов пытаются подключиться, один экземпляр сервера просто не сможет справиться с нагрузкой.

План урока

  1. Состояние и Транспорт StreamableHTTP в MCP: Продвинутые Темы
  2. Основы Коммуникации MCP: Состояние и Соединения
  3. Проблема Масштабирования Сохраняющих Состояние Серверов MCP
  4. Решение: Режим Stateless HTTP (stateless_http=True)
  5. Управление Форматом Ответа: Флаг json_response=True
  6. Когда Использовать Эти Флаги?
  7. Используйте stateless_http=True, когда
  8. Используйте json_response=True, когда

Урок входит в полный доступ. Полный текст и видео открываются после оплаты. Первые уроки каждого курса бесплатны.

Полезные гиды