คู่มือเอาตัวรอดสำหรับ MCP Release Candidate
MCP release candidate คือการอัปเดตครั้งใหญ่ที่สุดนับตั้งแต่เปิดตัวโปรโตคอล นี่คือบททดสอบสำหรับทุกคนที่กำลังสร้าง client, server และ tool เวอร์ชันสุดท้ายจะมาถึงในวันที่ 28 กรกฎาคม 2026 จงใช้เวลานี้ในการค้นหาปัญหาในการย้ายระบบ (migration)
การเปลี่ยนแปลงที่สำคัญที่สุดคือตอนนี้ MCP เป็นแบบ stateless แล้ว
หากการติดตั้งใช้งาน (implementation) ของคุณมีการใช้ session ID หรือขั้นตอนการเริ่มต้นระบบ (initialization steps) คุณต้องเปลี่ยนโค้ดของคุณ ตอนนี้แต่ละ request จะต้องแนบข้อมูล version และ capability มาใน metadata ด้วย
การเปลี่ยนแปลงนี้ช่วยในเรื่องโครงสร้างพื้นฐาน (infrastructure) โดย load balancer สามารถส่ง request ไปยัง server instance ใดก็ได้ โดยไม่จำเป็นต้องรักษาการเชื่อมต่อ (connection) ไว้กับ server เครื่องใดเครื่องหนึ่งโดยเฉพาะ
วิธีจัดการกับ state:
- อย่าซ่อน state ไว้ในการเชื่อมต่อ
- ย้าย state ไปไว้ที่ application handle
- ให้ tool ส่งคืน ID เช่น
basket_id - model สามารถส่ง ID นี้กลับมาในการ call ครั้งถัดไปได้
การส่ง request ที่เริ่มจากฝั่ง server (server-initiated requests) ก็มีการเปลี่ยนแปลงเช่นกัน โดย server จะสามารถเริ่ม request ได้เฉพาะในขณะที่กำลังประมวลผล client call เท่านั้น หาก server ต้องการข้อมูลเพิ่มเติม จะต้องส่ง InputRequiredResult กลับไป จากนั้น client จะต้องลองเรียกใช้งานใหม่พร้อมกับข้อมูลชุดใหม่
MCP Apps มาถึงแล้ว ตอนนี้ server สามารถให้บริการ HTML interface ได้ โดย host จะทำการ render สิ่งเหล่านี้ใน sandboxed iframe ซึ่งจะช่วยปรับปรุงประสบการณ์ผู้ใช้งาน (user experience) แต่ก็ต้องแลกมาด้วยความปลอดภัยที่เข้มงวด
การตรวจสอบสิทธิ์ (Authorization) เข้มงวดขึ้นกว่าเดิม
- ใช้ OAuth 2.0 และ OpenID Connect
- client ต้องตรวจสอบความถูกต้องของ parameter
issuer - ตอนนี้ authorization server จะต้องส่ง parameter
issuerมาด้วย
สิ่งที่กำลังจะถูกยกเลิกการใช้งาน (Deprecations) ที่ต้องระวัง:
- Roots, Sampling และ Logging กำลังจะถูกยกเลิกการใช้งาน
- ในตอนนี้ยังสามารถใช้งานได้อยู่ แต่ไม่ควรนำไปใช้ในโปรเจกต์ใหม่
- ย้าย roots ไปไว้ใน tool parameters
- ย้าย sampling ไปใช้ direct model provider APIs
- ย้าย logging ไปใช้ OpenTelemetry หรือ stderr
การอัปเดต Schema:
- tool schema ตอนนี้ใช้ JSON Schema 2020-12 แบบเต็มรูปแบบ
- คุณสามารถใช้ logic ที่ซับซ้อนอย่าง
oneOfหรือanyOfได้ - server ต้องจำกัดความลึกของ schema เพื่อหลีกเลี่ยงข้อผิดพลาด
- อัปเดตการจัดการข้อผิดพลาด (error handling) ของคุณ โดย error "missing resource" จะใช้รหัส JSON-RPC มาตรฐานคือ
-32602
หากคุณพบปัญหา สามารถเปิด issue ใน specification repository หรือสอบถามในช่อง Discord contributor ได้
ชุมชนการเรียนรู้เพิ่มเติม: https://t.me/GyaanSetuAi
