เจรจาความสามารถ
ตรวจสอบว่าทั้งสองฝ่ายรองรับฟีเจอร์ใดบ้าง
เจรจาความสามารถ เป็นบทเรียน MCP Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน MCP Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส MCP Academy มีบทเรียนทั้งหมด 4 บทเรียน
ไม่ใช่ทุกฝ่ายจะรองรับทุกความสามารถ
MCP มีความสามารถมากมาย แต่ไม่มีไคลเอ็นต์หรือเซิร์ฟเวอร์ใดรองรับทั้งหมด ดังนั้นเมื่อเริ่มต้น ทั้งสองฝ่ายจะเจรจาตกลงว่าตนมีความสามารถใดบ้าง เช่นเดียวกับอุปกรณ์สองเครื่องที่ตกลงกันว่าทำอะไรได้ 🤝
เกิดขึ้นระหว่างการเริ่มต้น
ข้อตกลงนี้เกิดขึ้นระหว่างการจับมือเริ่มต้น ซึ่งเป็นการแลกเปลี่ยนครั้งแรกสุด หลังจากนั้นแต่ละฝ่ายจะรู้ว่าอีกฝ่ายมีอะไรให้ใช้ และอะไรที่ไม่สามารถใช้ได้
ชุดความสามารถสองชุด
ไคลเอ็นต์ประกาศ clientCapabilities และเซิร์ฟเวอร์ประกาศ serverCapabilities แต่ละชุดเป็นเพียงแผนผังของเครื่องหมายความสามารถและตัวเลือกเล็ก ๆ
สิ่งที่เซิร์ฟเวอร์ประกาศ
เซิร์ฟเวอร์จะแสดงรายการสิ่งที่ตนให้บริการ เช่น เครื่องมือ ทรัพยากร และพรอมต์ หากไม่มีคีย์ใดอยู่ ไคลเอ็นต์ก็จะรู้ว่าไม่ควรคาดหวังความสามารถพื้นฐานนั้นจากคุณ
"capabilities": { "tools": {}, "resources": {} }สิ่งที่ไคลเอ็นต์ประกาศ
ไคลเอ็นต์จะแสดงรายการความสามารถที่ให้บริการกลับมาได้ เช่น รูต การสุ่มตัวอย่าง และการขอข้อมูลเพิ่มเติม นี่คือวิธีที่เซิร์ฟเวอร์ของคุณรู้ว่าตนสามารถขอรูตได้หรือไม่
"capabilities": { "roots": {}, "sampling": {} }เครื่องหมายย่อยช่วยเพิ่มรายละเอียด
ความสามารถหนึ่งรายการอาจมีตัวเลือกเพิ่มเติมได้ ตัวอย่างเช่น รูตอาจมี listChanged: true ซึ่งหมายความว่าไคลเอ็นต์จะแจ้งให้คุณทราบเมื่อชุดรูตเปลี่ยนแปลง
"roots": { "listChanged": true }ไม่มีหมายถึงไม่รองรับ
กฎนั้นเรียบง่าย: หากไม่มีความสามารถ ให้ถือว่าฟีเจอร์นั้นไม่พร้อมใช้งาน อย่าเรียกใช้สิ่งที่อีกฝ่ายไม่เคยรับปากว่าทำได้
เวอร์ชันต้องมาก่อน
นอกจากฟีเจอร์ต่าง ๆ แล้ว ทั้งสองฝ่ายยังส่ง protocolVersion ด้วย ทั้งคู่ต้องตกลงใช้เวอร์ชันร่วมกัน มิฉะนั้นเซสชันจะถูกปฏิเสธก่อนเริ่มงานจริง
SDK จัดการงานส่วนใหญ่ให้
คุณแทบไม่ต้องสร้างแผนผังเหล่านี้เอง Python SDK จะเติมข้อมูลความสามารถของเซิร์ฟเวอร์จากเครื่องมือและทรัพยากรที่คุณลงทะเบียนไว้ แล้วแลกเปลี่ยนข้อมูลให้คุณ
อ่านเครื่องหมายของอีกฝ่าย
หลังจากเริ่มต้นแล้ว คุณสามารถตรวจสอบความสามารถของไคลเอ็นต์ที่เซสชันของคุณเก็บไว้ได้ การตรวจสอบนี้เป็นสิ่งที่ป้องกันการเรียกใช้แบบเสริม เช่น list_roots
caps = ctx.session.client_params.capabilitiesเจรจาครั้งเดียว แล้วเชื่อถือได้ตลอดเซสชัน
ความสามารถต่าง ๆ จะถูกกำหนดไว้ตอนเริ่มต้นและคงอยู่ตลอดเซสชัน คุณจึงเชื่อถือข้อมูลเหล่านี้ได้ตลอดอายุการเชื่อมต่อ โดยไม่ต้องเจรจาใหม่ทุกครั้งที่เรียกใช้
ตรวจสอบอย่างรวดเร็ว
ทบทวนว่าเมื่อใดและอย่างไรที่ฟีเจอร์ต่าง ๆ ได้รับการตกลงร่วมกัน
สรุป: ข้อตกลงเรื่องความสามารถ
ในขั้นตอนเริ่มต้น ไคลเอ็นต์และเซิร์ฟเวอร์จะแลกเปลี่ยนแผนผังความสามารถและเวอร์ชันโพรโทคอล เครื่องหมายที่หายไปหมายถึงไม่รองรับ และ SDK จะสร้างและอ่านข้อมูลเหล่านี้ให้คุณ 🎯
คำถามที่พบบ่อย
บทเรียน “เจรจาความสามารถ” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “เจรจาความสามารถ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส MCP Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส MCP Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “เจรจาความสามารถ”
ตรวจสอบว่าทั้งสองฝ่ายรองรับฟีเจอร์ใดบ้าง คุณปฏิบัติ MCP Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน MCP Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน MCP Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “เจรจาความสามารถ” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน MCP Academy นี้ได้ไหม
ได้ บทเรียน MCP Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ