0Pricing
MCP Academy · Урок

Отправка сведений о ходе длительных задач

Передавайте клиенту обновления о проценте выполнения.

«Отправка сведений о ходе длительных задач» — бесплатный урок MCP Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения MCP Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс MCP Academy содержит 4 уроков всего.

Почему важен прогресс

Когда выполнение инструмента занимает секунды или минуты, клиент не должен просто зависать. MCP позволяет серверу отправлять обновления прогресса, чтобы пользователь видел ход работы.

Токен прогресса

Клиент выражает согласие, добавляя к запросу progressToken. Без этого токена сервер просто не отправляет обновления.

Обращение к объекту контекста

В Python SDK инструмент получает объект Context. Это ваш способ обращаться к клиенту во время вызова, в том числе для передачи прогресса.

from mcp.server.fastmcp import Context

@mcp.tool()
async def crunch(n: int, ctx: Context) -> str:
    return "done"

Вызов report_progress

Чтобы отправить обновление, вызовите ctx.report_progress. Каждый вызов сообщает клиенту, насколько продвинулась работа.

await ctx.report_progress(progress=3, total=10)

Прогресс и общий объём

Аргумент total задаёт конечную точку. Клиент может разделить прогресс на общий объём и показать пользователю шкалу с процентом выполнения.

await ctx.report_progress(progress=5, total=10)  # 50%

Обновляйте данные внутри цикла

Естественное место для отправки сообщений — рабочий цикл. После завершения каждой части отправляйте одно обновление, чтобы шкала постепенно заполнялась.

for i, item in enumerate(items):
    process(item)
    await ctx.report_progress(i + 1, len(items))

Прогресс без общего объёма

Иногда невозможно заранее узнать общий объём. Его можно не указывать; тогда клиент покажет индикатор неопределённого прогресса вместо точной шкалы.

await ctx.report_progress(progress=42)  # total unknown

Добавьте необязательное сообщение

Многие версии SDK позволяют прикрепить к вызову прогресса короткое сообщение, например «Индексация файлов», чтобы дать пользователю понятный контекст.

await ctx.report_progress(2, 5, message="Fetching pages")

Это уведомление

Прогресс передаётся как уведомление JSON-RPC, поэтому у него нет ответа и он никогда не блокирует выполнение. Ваш инструмент продолжает работать, пока обновления отправляются.

Отправляйте обновления с разумной частотой

Не заваливайте клиента тысячами крошечных обновлений. Отправляйте сообщения на значимых этапах, чтобы поток оставался полезным и лёгким.

Прогресс и результат

Уведомления о прогрессе отделены от значения, возвращаемого инструментом. Передавайте обновления по мере работы, а в конце верните итоговый результат.

await ctx.report_progress(10, 10)
return "index built"

Быстрая проверка

Проверьте, насколько хорошо вы поняли начало передачи прогресса.

Итог: прогресс

Вы научились вызывать ctx.report_progress с прогрессом и общим объёмом, отправлять обновления в цикле и позволять клиенту отображать живую шкалу. Отличная работа!

Часто задаваемые вопросы

Урок «Отправка сведений о ходе длительных задач» бесплатный?

Да — полный текст урока «Отправка сведений о ходе длительных задач» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс MCP Academy, подпишись на CoddyKit PRO. Курс MCP Academy содержит 4 уроков всего.

Чему я научусь в уроке «Отправка сведений о ходе длительных задач»?

Передавайте клиенту обновления о проценте выполнения. Ты практикуешь MCP Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать MCP Academy?

Предыдущий опыт не требуется. MCP Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Отправка сведений о ходе длительных задач»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке MCP Academy?

Да. Каждый урок MCP Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Отправка сведений о ходе длительных задач
  2. Обработка запросов на отмену
  3. Структурированное журналирование для клиента
  4. Настройка уровней журналирования во время работы
← Назад к MCP Academy