Wysyłanie postępu długich zadań
Strumieniuj do klienta informacje o procentowym ukończeniu.
Wysyłanie postępu długich zadań to bezpłatna lekcja MCP Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej MCP Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs MCP Academy zawiera 4 lekcji w sumie.
Dlaczego postęp ma znaczenie
Gdy działanie narzędzia trwa sekundy lub minuty, klient nie powinien po prostu się zawiesić. MCP pozwala serwerowi wysyłać aktualizacje postępu, aby użytkownik widział, że praca trwa.
Token postępu
Klient wyraża zgodę na to, dołączając progressToken do żądania. Bez tego tokenu serwer po prostu nie wysyła aktualizacji.
Uzyskaj dostęp do obiektu kontekstu
W Python SDK narzędzie otrzymuje obiekt Context. Jest to uchwyt umożliwiający komunikację z klientem w trakcie wywołania, w tym raportowanie postępu.
from mcp.server.fastmcp import Context
@mcp.tool()
async def crunch(n: int, ctx: Context) -> str:
return "done"Wywołaj report_progress
Aby wysłać aktualizację, wywołaj ctx.report_progress. Każde wywołanie informuje klienta, jak daleko posunęła się praca.
await ctx.report_progress(progress=3, total=10)Postęp i całość
Argument total wyznacza punkt końcowy. Klient może podzielić wartość postępu przez total, aby wyświetlić użytkownikowi pasek procentowego wykonania.
await ctx.report_progress(progress=5, total=10) # 50%Aktualizuj wewnątrz pętli
Naturalnym miejscem raportowania jest pętla loop wykonująca pracę. Po zakończeniu każdej partii wyślij jedną aktualizację, aby pasek stale się przesuwał.
for i, item in enumerate(items):
process(item)
await ctx.report_progress(i + 1, len(items))Postęp bez wartości końcowej
Czasami nie da się z góry określić całości. Możesz pominąć tę wartość; klient wyświetli wtedy nieokreślony wskaźnik zamiast precyzyjnego paska.
await ctx.report_progress(progress=42) # total unknownDodaj opcjonalny komunikat
Wiele wersji SDK pozwala dołączyć do wywołania krótką wiadomość, na przykład „Indexing files”, aby przekazać użytkownikowi przyjazny, zrozumiały kontekst.
await ctx.report_progress(2, 5, message="Fetching pages")To jest powiadomienie
Postęp jest przesyłany jako powiadomienie JSON-RPC, więc nie ma odpowiedzi i nigdy nie blokuje działania. Narzędzie nadal pracuje, gdy aktualizacje są wysyłane.
Aktualizuj z umiarem
Nie zasypuj klienta tysiącami drobnych aktualizacji. Raportuj na znaczących etapach, aby strumień pozostał użyteczny i lekki.
Postęp i wynik
Powiadomienia o postępie są niezależne od wartości zwracanej przez narzędzie. Wysyłaj aktualizacje w trakcie pracy, a na końcu zwróć wynik końcowy.
await ctx.report_progress(10, 10)
return "index built"Szybkie sprawdzenie
Sprawdź, czy rozumiesz, jak rozpoczyna się raportowanie postępu.
Podsumowanie: postęp
Dowiedziałeś się, jak wywoływać ctx.report_progress z wartościami progress i total, jak aktualizować postęp w pętli oraz jak pozwolić klientowi wyświetlać pasek na żywo. Dobra robota!
Często zadawane pytania
Czy lekcja „Wysyłanie postępu długich zadań” jest bezpłatna?
Tak — pełny tekst „Wysyłanie postępu długich zadań” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu MCP Academy, przejdź na CoddyKit PRO. Kurs MCP Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Wysyłanie postępu długich zadań”?
Strumieniuj do klienta informacje o procentowym ukończeniu. Ćwiczysz MCP Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć MCP Academy?
Nie wymagamy żadnego doświadczenia. MCP Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „Wysyłanie postępu długich zadań”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji MCP Academy?
Tak. Każda lekcja MCP Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Wysyłanie postępu długich zadań
- Obsługa żądań anulowania
- Ustrukturyzowane logowanie do klienta
- Ustawianie poziomów logowania w czasie działania