Бета · редакция 2026.10-beta1 · MCP 2026-07-28

Progress и cancellation

L17 · MCP 2026-07-28 · открытая бета · редакция 2026.10-beta1

Я хочу показывать ход операции, но прогресс не должен становиться обещанием точного оставшегося времени. Изменение счётчика помогает человеку понять, что работа идёт; завершение подтверждается окончательным результатом.

Предварительно: L13 · L14

Как я это использую

Привяжите обновления к конкретной операции и проверяйте порядок значений. Для современного HTTP отмена связана с закрытием SSE-запроса; в stdio применяется предусмотренное протоколом уведомление отмены. Отмена означает просьбу прекратить работу, а не гарантированный откат уже выполненного внешнего действия. Сервер должен освобождать ресурсы при отключении.

Самодостаточный HTTP запрос

Разбираем конкретный контракт

Это учебный fixture: поля с доменом .example и идентификаторы вымышлены. Если показан фрагмент, его нужно поместить в соответствующий envelope выбранного профиля.

{
  "timeline": [
    "accepted",
    "reading: 1/3",
    "writing: 2/3",
    "complete: 3/3"
  ],
  "cancelAt": 2,
  "question": "Была ли запись уже выполнена?"
}

Лаборатория · L17

Измените условия, проверьте результат и разберите ошибку. Все адреса и данные учебные.

Что легко сломать

В лаборатории время виртуальное: можно остановить операцию на шаге, когда запись уже произошла. Это показывает, зачем нужны идемпотентность и отдельное подтверждение результата, вместо оптимистичной надписи «всё отменено».

Практика и самопроверка

Перемотать операцию, отменить её и исследовать гонку с завершением. Сравнить stdio и HTTP по нормативным сценариям.

Я советую сначала предсказать результат, затем изменить один параметр в лаборатории и объяснить разницу. Сохраните небольшой fixture с нормальным и ошибочным случаем для своего проекта. Тренажёр открыт без регистрации; для сохранения ответов на тесты и завершения урока войдите в аккаунт.

В конце страницы — три вопроса. После правильных ответов можно завершить урок; ошибка в следующей тренировке не стирает уже полученное подтверждение этой редакции теста.

На что я опирался

Профиль и ссылки проверены 15 октября 2026. Core, deprecated compatibility и extensions в этом курсе помечены отдельно. Примеры объясняют выбранные сценарии; для реализации сверяйте нормативные MUST/SHOULD и schema соответствующей версии.

Проверка знаний

Читайте свободно. Войдите, чтобы отвечать и сохранять прогресс.

Является ли progress финальным результатом?

Гарантирует ли cancel откат внешней записи?

Что делать серверу при отключении?