การพัฒนา Model Context Protocol ( MCP ) server ใหม่ที่เขียนด้วย Bash ทั้งหมดได้จุดประกายการถกเถียงเกี่ยวกับสิ่งที่ถือว่าเป็น zero-overhead ในการพัฒนาซอฟต์แวร์ โปรเจกต์นี้มีเป้าหมายเพื่อให้ทางเลือกที่เบากว่าการใช้งาน Node.js และ Python แบบดั้งเดิมสำหรับการรวม AI tool
ความต้องการของระบบ:
- Bash shell
- jq สำหรับการประมวลผล JSON
- ความเข้าใจพื้นฐานเกี่ยวกับโปรโตคอล JSON-RPC 2.0
ความขัดแย้งเรื่อง Zero-Overhead
การอ้างสิทธิ์ทางการตลาดของโปรเจกต์นี้ได้รับการตรวจสอบจากชุมชนนักพัฒนา นักวิจารณ์ชี้ให้เห็นว่าการเรียกมันว่า zero runtime นั้นทำให้เข้าใจผิดเนื่องจาก Bash เองก็เป็น runtime environment รวมถึง external dependencies อย่าง jq สำหรับการประมวลผล JSON
สิ่งนี้น่าสนใจแต่ 'zero runtime' เป็นคำที่ใช้ผิด Bash เป็น runtime ไม่ต้องพูดถึง external tools ที่ใช้ใน shell scripts อย่าง jq
การถกเถียงนี้เน้นย้ำถึงการสนทนาที่กว้างขึ้นเกี่ยวกับวิธีที่นักพัฒนากำหนด overhead ในระบบซอฟต์แวร์สมัยใหม่ บางคนโต้แย้งว่าคำนี้หมายถึงการหลีกเลี่ยง dependency chains ที่ซับซ้อนและระบบการจัดการประเภทที่พบในภาษาโปรแกรมมิ่งสมัยใหม่ มากกว่าการกำจัด runtime components ทั้งหมดโดยสิ้นเชิง
การใช้งานทางเทคนิคและความสามารถในการอ่าน
แม้จะมีการถกเถียงเรื่องคำศัพท์ แต่นักพัฒนาได้ชื่นชมการใช้งานนี้สำหรับคุณค่าทางการศึกษา วิธีการ Bash ได้ลอกชั้นของ abstraction หลายชั้นออกไป ทำให้ MCP protocol พื้นฐานมองเห็นและเข้าใจได้มากขึ้น ความโปร่งใสนี้มีคุณค่าเป็นพิเศษสำหรับนักพัฒนาที่พยายามเข้าใจว่า protocol ทำงานอย่างไรในทางปฏิบัติ
สถาปัตยกรรมแยก concerns อย่างชัดเจน ด้วย core protocol handler และไฟล์ business logic แยกต่างหาก การออกแบบนี้ช่วยให้นักพัฒนาสามารถสร้าง custom MCP servers ได้โดยเพียงแค่เขียน Bash functions ที่ปฏิบัติตาม naming convention และจัดเตรียมไฟล์การกำหนดค่า JSON
องค์ประกอบสถาปัตยกรรม:
mcpserver_core.sh
: จัดการ JSON-RPC และโปรโตคอล MCP- ไฟล์ business logic: ประกอบด้วยการใช้งานเครื่องมือที่กำหนดเอง
assets/
: ไฟล์กำหนดค่า JSON สำหรับเครื่องมือและการตั้งค่าเซิร์ฟเวอร์- การค้นหาเครื่องมือแบบไดนามิกผ่านแนวทางการตั้งชื่อฟังก์ชัน
การใช้งานจริงและข้อจำกัด
การใช้งานนี้พบการใช้งานจริงในสภาพแวดล้อมการพัฒนาต่างๆ รวมถึงการรวมกับ VS Code และ GitHub Copilot อย่างไรก็ตาม โปรเจกต์ยอมรับข้อจำกัดที่สำคัญรวมถึงการขาด concurrency การจัดการหน่วยความจำที่จำกัด และความไม่เหมาะสมสำหรับสถานการณ์ที่ต้องการ high-throughput
ข้อจำกัดเหล่านี้ทำให้เหมาะสมที่สุดสำหรับ AI assistant tools และสภาพแวดล้อมการพัฒนาในเครื่องมากกว่าระบบการผลิตที่ต้องการลักษณะประสิทธิภาพที่แข็งแกร่ง
ข้อจำกัดสำคัญ:
- ไม่มีการประมวลผลแบบขนาน/พร้อมกัน
- การจัดการหน่วยความจำมีข้อจำกัด
- ไม่มีการตอบสนองแบบสตรีมมิ่ง
- ไม่ได้ออกแบบมาสำหรับปริมาณงานสูง
- เหมาะสมเฉพาะสำหรับผู้ช่วย AI และการใช้งานเครื่องมือในเครื่องเป็นหลัก
การตอบสนองของชุมชนและวิธีการทางเลือก
โปรเจกต์นี้ได้สร้างแรงบันดาลใจให้เกิดการเปรียบเทียบกับการใช้งานแบบเบาอื่นๆ และจุดประกายการสนทนาเกี่ยวกับความสมดุลระหว่างความเรียบง่ายและการทำงาน นักพัฒนาบางคนได้สังเกตเห็นโปรเจกต์ที่คล้ายกันซึ่งเสนอคุณสมบัติเพิ่มเติมเช่น sandboxed execution เพื่อเพิ่มความปลอดภัย
การใช้งานนี้ทำหน้าที่เป็นทั้งเครื่องมือที่ใช้งานได้จริงและทรัพยากรทางการศึกษา แสดงให้เห็นว่า protocols ที่ซับซ้อนสามารถใช้งานได้ด้วยวิธีการที่เรียบง่ายอย่างน่าประหลาด แม้ว่าการตลาด zero-overhead อาจจะอ้างเกินจริงก็ตาม
อ้างอิง: MCP Server in Bash