ชุมชน Model Context Protocol ( MCP ) กำลังต่อสู้กับข้อจำกัดสำคัญที่ป้องกันไม่ให้เครื่องมือใช้ dynamic dependent type schemas ความท้าทายทางเทคนิคนี้ได้จุดประกายการอภิปรายอย่างกระตือรือร้นในหมู่นักพัฒนาเกี่ยวกับแนวทางแก้ไขและวิธีการทำงานรอบข้าง
ปัญหานี้มีจุดศูนย์กลางอยู่ที่ความไม่สามารถของ MCP ในการจัดการสถานการณ์ที่ tool input schemas ต้องถูกกำหนดใน runtime โดยอิงจากพารามิเตอร์อื่น ๆ ต่างจาก custom AI chat interfaces ที่สามารถแก้ไข schemas แบบไดนามิกได้ เครื่องมือ MCP ต้องกำหนดโครงสร้าง input ล่วงหน้า ซึ่งสร้างปัญหาสำหรับแอปพลิเคชันที่ซับซ้อน
ข้อจำกัดปัจจุบันของ MCP :
- ไม่รองรับการแก้ไข JSON schema แบบไดนามิก
- เครื่องมือต้องกำหนด input schemas ตั้งแต่ตอนเริ่มต้น
- ไม่สามารถจัดการ dependent types ที่ schema ขึ้นอยู่กับค่าที่ได้จาก runtime
- การแก้ไขปัญหาต้องใช้กระบวนการหลายขั้นตอนหรือการเปลี่ยนแปลงรายการเครื่องมือแบบไดนามิก
![]() |
---|
ภาพหน้าจอนี้แสดงให้เห็นแผงคุณสมบัติของแบบจำลอง 3D ซึ่งเป็นตัวอย่างของความซับซ้อนที่เครื่องมือ MCP ต้องเผชิญในการกำหนด dynamic schemas |
ปัญหาหลักกับ Dependent Types
ข้อจำกัดนี้เห็นได้ชัดในกรณีการใช้งานที่ซับซ้อนเช่นเครื่องมือพัฒนาเกม เมื่อทำงานกับโมเดล 3D ที่อ้างอิงไฟล์รูปแบบและวัสดุต่าง ๆ แต่ละทรัพยากรสามารถมีคุณสมบัติที่แตกต่างกันอย่างมากขึ้นอยู่กับการกำหนดค่า โมเดลทรงกลมที่มีวัสดุเริ่มต้นจะมีคุณสมบัติที่แก้ไขได้แตกต่างไปจากทรงกลมเดียวกันที่ใช้วัสดุ physically-based rendering ( PBR )
สิ่งนี้สร้างสถานการณ์ที่เป็นไปไม่ได้สำหรับนักออกแบบเครื่องมือ MCP พวกเขาไม่สามารถกำหนดชุดคุณสมบัติที่เป็นไปได้ทั้งหมดใน schema เดียวล่วงหน้า แต่โปรโตคอลไม่มีกลไกในการสร้าง schemas แบบไดนามิกตามทรัพยากรเฉพาะที่กำลังแก้ไข
Dependent types หมายถึงระบบประเภทที่ประเภทของค่าขึ้นอยู่กับค่าอื่น ทำให้สามารถมีโครงสร้างข้อมูลที่แม่นยำและยืดหยุ่นมากขึ้น
แนวทางแก้ไขที่ชุมชนเสนอ
ชุมชนนักพัฒนาได้เสนอแนวทางหลายวิธีเพื่อแก้ไขข้อจำกัดนี้ วิธีหนึ่งเกี่ยวข้องกับการใช้ฟีเจอร์ listChanged
notification ที่เครื่องมือสามารถถูกเพิ่มเข้าไปในรายการเครื่องมือที่ใช้ได้แบบไดนามิกตามทรัพยากรเฉพาะ อย่างไรก็ตาม แนวทางนี้เผชิญกับอุปสรรคใหญ่ในการยอมรับ
ปัญหาคือ >90% ของ clients ในปัจจุบันไม่ได้ implement สิ่งนี้ - รวมถึงของ Anthropic ด้วย
แนวทางอื่นที่เสนอมาถือว่าปัญหานี้เป็น two-step workflow: ก่อนอื่นเลือกทรัพยากร จากนั้นใช้เครื่องมือแยกต่างหากเพื่อดึง schema ที่เหมาะสมก่อนทำการแก้ไข แม้ว่าสิ่งนี้จะทำงานได้ แต่ก็พึ่งพา AI agents ในการเชื่อมโยงการดำเนินการเหล่านี้เข้าด้วยกันอย่างถูกต้อง ซึ่งอาจลดความน่าเชื่อถือ
สมาชิกชุมชนบางคนชี้ไปที่ข้อกำหนดที่มีอยู่เช่น Arazzo ซึ่งแนะนำ runtime expressions สำหรับจัดการ dependent arguments ผ่าน composed workflows แนวทางนี้สามารถให้โซลูชันที่มีโครงสร้างมากขึ้นสำหรับปัญหา dependent type
แนวทางแก้ไขที่เสนอ:
- การแจ้งเตือน listChanged: เพิ่ม/ลบเครื่องมือแบบไดนามิก (รองรับไคลเอนต์อย่างจำกัด)
- เวิร์กโฟลว์แบบสองขั้นตอน: แยกการค้นหาสคีมาและการดำเนินการแก้ไข
- ข้อกำหนด Arazzo: นิพจน์รันไทม์สำหรับอาร์กิวเมนต์ที่ขึ้นต่อกัน
- การปรับปรุงโปรโตคอล: คุณสมบัติ MCP ใหม่สำหรับรองรับประเภทที่ขึ้นต่อกัน
![]() |
---|
หน้าต่างแชทที่แสดงการสนทนาในชุมชนนักพัฒนาเกี่ยวกับวิธีแก้ไขปัญหาสำหรับข้อจำกัดของ dynamic schema ในเครื่องมือ MCP |
การอภิปรายเรื่องความแม่นยำ
การอภิปรายได้เปิดเผยความตึงเครียดพื้นฐานระหว่างความยืดหยุ่นและความน่าเชื่อถือ ในขณะที่บางคนโต้แย้งว่าการปรับปรุงความแม่นยำของโมเดล AI จะแก้ปัญหาการประสานงานในที่สุด คนอื่น ๆ เน้นความแตกต่างสำคัญระหว่างความน่าเชื่อถือ 99% และ 100% ในระบบการผลิต
ฟีเจอร์ structured output ปัจจุบันในบริการ AI ชั้นนำให้การปฏิบัติตาม schema ที่รับประกันแล้ว ขจัดคุณสมบัติที่หลอนหลอกหรือฟิลด์ที่จำเป็นที่หายไป ชุมชน MCP ต้องการรักษาระดับความน่าเชื่อถือนี้ในขณะที่เพิ่มความสามารถ dynamic schema
การอภิปรายเน้นคำถามที่กว้างขึ้นเกี่ยวกับว่าจำเป็นต้องมีโซลูชันระดับโปรโตคอลหรือไม่ หรือปัญหาเกิดจากการฝึกอบรม language models ที่ไม่เพียงพอสำหรับการประสานงานเครื่องมือหลายขั้นตอน
สถานะการใช้งานของไคลเอนต์:
- ไคลเอนต์ MCP กว่า 90% ไม่รองรับการแจ้งเตือน
listChanged
- ไคลเอนต์อย่างเป็นทางการของ Anthropic ขาดความสามารถนี้
- การยอมรับที่จำกัดสร้างอุปสรรคสำหรับโซลูชันเครื่องมือแบบไดนามิก
มองไปข้างหน้า
เมื่อระบบนิเวศ MCP เติบโตขึ้น ความต้องการในการจัดการ schemas ที่ซับซ้อนและไดนามิกน่าจะเพิ่มขึ้น ชุมชนกำลังพิจารณาข้อเสนอการปรับปรุงข้อกำหนดอย่างเป็นทางการเพื่อแก้ไขข้อจำกัดเหล่านี้อย่างเป็นระบบแทนที่จะพึ่งพาวิธีการแก้ไขชั่วคราว
ผลลัพธ์ของการอภิปรายนี้อาจส่งผลกระทบอย่างมีนัยสำคัญต่อวิธีที่ AI agents โต้ตอบกับระบบซอฟต์แวร์ที่ซับซ้อน โดยเฉพาะในโดเมนเช่นการพัฒนาเกม เครื่องมือ CAD และแอปพลิเคชันอื่น ๆ ที่มีโครงสร้างข้อมูลที่ซับซ้อนและขึ้นอยู่กับบริบท
อ้างอิง: MCP tools with dependent types