0Pricing
MCP Academy · บทเรียน

ส่งความคืบหน้าสำหรับงานที่ใช้เวลานาน

สตรีมการอัปเดตเปอร์เซ็นต์ความคืบหน้าไปยังไคลเอ็นต์

ส่งความคืบหน้าสำหรับงานที่ใช้เวลานาน เป็นบทเรียน MCP Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน MCP Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส MCP Academy มีบทเรียนทั้งหมด 4 บทเรียน

เหตุใดความคืบหน้าจึงสำคัญ

เมื่อเครื่องมือใช้เวลาหลายวินาทีหรือหลายนาที ไคลเอ็นต์ไม่ควรหยุดค้างเฉย ๆ MCP ช่วยให้เซิร์ฟเวอร์ส่งการอัปเดตความคืบหน้า เพื่อให้ผู้ใช้เห็นว่างานกำลังดำเนินไป

โทเค็นความคืบหน้า

ไคลเอ็นต์เลือกเข้าร่วมโดยแนบ progressToken มากับคำขอ หากไม่มีโทเค็นนี้ เซิร์ฟเวอร์ของคุณจะข้ามการส่งการอัปเดต

เข้าถึงวัตถุบริบท

ใน Python SDK เครื่องมือจะได้รับวัตถุบริบท ซึ่งเป็นช่องทางให้คุณสื่อสารกลับไปยังไคลเอ็นต์ระหว่างการเรียกใช้ รวมถึงการรายงานความคืบหน้า

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 พร้อมความคืบหน้าและยอดรวม การวนซ้ำเพื่อส่งการอัปเดต และการให้ไคลเอ็นต์แสดงแถบแบบทันที ทำได้ดีมาก

คำถามที่พบบ่อย

บทเรียน “ส่งความคืบหน้าสำหรับงานที่ใช้เวลานาน” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “ส่งความคืบหน้าสำหรับงานที่ใช้เวลานาน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส MCP Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส MCP Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “ส่งความคืบหน้าสำหรับงานที่ใช้เวลานาน”

สตรีมการอัปเดตเปอร์เซ็นต์ความคืบหน้าไปยังไคลเอ็นต์ คุณปฏิบัติ MCP Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน MCP Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน MCP Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “ส่งความคืบหน้าสำหรับงานที่ใช้เวลานาน” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน MCP Academy นี้ได้ไหม

ได้ บทเรียน MCP Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. ส่งความคืบหน้าสำหรับงานที่ใช้เวลานาน
  2. จัดการคำขอยกเลิก
  3. การบันทึกแบบมีโครงสร้างไปยังไคลเอ็นต์
  4. ตั้งระดับบันทึกขณะทำงาน
← กลับไปที่ MCP Academy