MCP Academy · บทเรียน

ร้องขอ Roots ของไคลเอ็นต์

ขอรายการไดเรกทอรีทำงานที่อนุญาต

บทเรียน 2 จาก 413 ขั้นตอน

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

คราวนี้มาขอรายการกัน

การรู้ว่ามีรูตอยู่เป็นเพียงขั้นแรก ขั้นที่สองคือขอรายการปัจจุบันจากไคลเอ็นต์จริง ๆ เพื่อให้เซิร์ฟเวอร์ตัดสินใจได้ว่าจะอ่านหรือเขียนที่ใด 📨

เซิร์ฟเวอร์เป็นผู้เริ่มต้น

ในกรณีนี้ทิศทางจะสลับกันคือ เซิร์ฟเวอร์ส่งคำขอ และไคลเอ็นต์ตอบกลับ วิธีการที่เรียกคือ roots/list ซึ่งใช้ขอรายการทั้งหมดที่ไคลเอ็นต์เปิดเผยอยู่ในขณะนั้น

{ "method": "roots/list" }

เข้าถึงรูตผ่านบริบท

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

async def my_tool(ctx: Context):
    ...

เรียกใช้งานอย่างสะดวก

จากบริบทนั้น ให้เรียก list_roots() และรอผลลัพธ์ SDK จะส่ง roots/list ให้คุณเอง และส่งคำตอบของไคลเอ็นต์กลับมาเป็นผลลัพธ์ที่มีชนิดกำกับ

result = await ctx.session.list_roots()

สิ่งที่ส่งกลับมา

คำตอบจะมีรายการรูต แต่ละรายการมี uri และชื่อที่ไม่จำเป็นต้องมี ซึ่งเป็นโครงสร้างเล็ก ๆ แบบเดียวกับที่เห็นก่อนหน้านี้ และพร้อมให้คุณวนซ้ำตรวจสอบ

for root in result.roots:
    print(root.uri, root.name)

รายการอาจว่างเปล่า

คำตอบที่ถูกต้องอาจเป็นรายการว่าง ซึ่งหมายความว่าขณะนี้ไคลเอ็นต์ไม่มีรูตให้ใช้งาน ดังนั้นควรวางแผนทางเลือกสำรองที่เหมาะสม แทนการสันนิษฐานว่ามีโฟลเดอร์อยู่

ตรวจสอบความสามารถก่อน

การเรียก list_roots จะมีความหมายก็ต่อเมื่อไคลเอ็นต์รองรับรูต เซิร์ฟเวอร์ที่ทำงานอย่างสุภาพจะตรวจสอบความสามารถที่ประกาศไว้ก่อนขอข้อมูล เพื่อหลีกเลี่ยงข้อผิดพลาดบนโฮสต์ที่ไม่มีความสามารถนี้

ขอข้อมูลในเวลาที่เหมาะสม

ดึงข้อมูลรูตเมื่อจำเป็นต้องใช้ เช่น ตอนเริ่มต้นเครื่องมือจัดการไฟล์ การขอข้อมูลเมื่อจำเป็นช่วยให้ข้อมูลเป็นปัจจุบัน หากผู้ใช้เพิ่งเปิดโฟลเดอร์อื่น

แปลงรูตเป็นพาธ

uri ของรูตอาจเป็นสตริงอย่าง file:///home/ada หากต้องการใช้งาน ให้แยกวิเคราะห์ URI file:// เป็นพาธระบบไฟล์จริงก่อนเปิดสิ่งใดภายในนั้น

from urllib.parse import urlparse
path = urlparse(root.uri).path

รับฟังการเปลี่ยนแปลง

หากไคลเอ็นต์รองรับ ไคลเอ็นต์สามารถส่งการแจ้งเตือนเมื่อรูตเปลี่ยนแปลงได้ การดักจับการแจ้งเตือนนี้ทำให้คุณดึงรายการใหม่แทนการทำงานจากข้อมูลเก่าที่ไม่เป็นปัจจุบัน

notifications/roots/list_changed

จัดการความล้มเหลวอย่างนุ่มนวล

คำขอยังคงล้มเหลวหรือหมดเวลาได้ ให้ครอบการเรียกไว้เพื่อให้คำตอบที่หายไปส่งผลเป็นข้อความที่ชัดเจนสำหรับเครื่องมือ แทนที่จะเกิดการหยุดทำงาน 🛟

ตรวจสอบอย่างรวดเร็ว

เลือกวิธีที่ถูกต้องในการรับรูตของไคลเอ็นต์ผ่าน SDK

สรุป: การขอรูต

คุณรอผลลัพธ์จาก list_roots() บนเซสชัน วนซ้ำผ่านรูตที่ส่งกลับมา แยกวิเคราะห์ uri file:// แต่ละรายการ และจัดการคำตอบที่ว่างเปล่าหรือล้มเหลว เมื่อรูตเปลี่ยนแปลง ให้ขอข้อมูลใหม่ ✅

เริ่มต้นได้ฟรี

เรียนรู้ Python ด้วย AI tutor — ฟรี

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

คอร์ส
30
บทเรียน
120

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

บทเรียน “ร้องขอ Roots ของไคลเอ็นต์” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “ร้องขอ Roots ของไคลเอ็นต์”

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

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

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

บทเรียน “ร้องขอ Roots ของไคลเอ็นต์” ใช้เวลานานแค่ไหน

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

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

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

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

  1. Roots บอกอะไรแก่เซิร์ฟเวอร์
  2. ร้องขอ Roots ของไคลเอ็นต์
  3. เจรจาความสามารถ
  4. เคารพขอบเขตของไคลเอ็นต์
← กลับไปที่ MCP Academy