MCP — โปรโตคอลการเข้าถึง
ผู้ช่วยของเราพึ่งเครื่องมือมากขึ้นเรื่อย ๆ — ถึงเวลา ทำให้การเข้าถึงข้อมูล/การกระทำเป็นมาตรฐาน นั่นคือสิ่งที่ MCP (Model Context Protocol) ทำ และจุดที่คนส่วนใหญ่พลาด: MCP ไม่ได้มีแค่ “tools” แต่มีสามแบบ — tools · resources · prompts — แต่ละแบบบอกว่า ใครเป็นคนคุม
พูดแบบเข้าใจง่าย
MCP คือมาตรฐานเปิดสำหรับต่อแอป LLM เข้ากับความสามารถภายนอก มี 3 บทบาท: HOST (แอปที่ผู้ใช้รัน เช่น Claude Code), CLIENT (ตัวเชื่อมในโฮสต์ หนึ่งตัวต่อเซิร์ฟเวอร์), และ SERVER (สิ่งที่เปิดเผยความสามารถ) และเซิร์ฟเวอร์เปิดเผยได้ 3 แบบ — เส้นแบ่งคือ “ใครคุม”:
- Tools = โมเดลคุม — โมเดลตัดสินใจเรียก (เขียน event, อ่านสถานะห้อง) · read-only ก็ยังเป็น tool ถ้าโมเดลต้องเลือกเรียกเอง
- Resources = แอปคุม — context อ่านอย่างเดียวที่โฮสต์ “แนบ” ให้ (คู่มือ, ผังหลักสูตร)
- Prompts = ผู้ใช้คุม — เทมเพลตที่ผู้ใช้เลือกหยิบมาใช้ (“สรุปใบเกรดนี้”)
กับดักความปลอดภัยชื่อดัง: confused deputy — เซิร์ฟเวอร์เอา token สิทธิ์สูงของตัวเองไปใช้แทนใครก็ตามที่เรียกมา และ scope guard ไม่ใช่การพิสูจน์ตัวตน
ในระบบของเรา — เซิร์ฟเวอร์ที่เป็น “tools-only”
เซิร์ฟเวอร์ MCP ของเรา อ่านแค็ตตาล็อกใหม่ทุกครั้งที่ถาม (แก้รายการแล้วเห็นผลทันทีโดยไม่ต้องรีสตาร์ต) — เป็น discovery ที่ถูกต้องตามสเปก แต่มันเป็น tools-only: คู่มือนักศึกษาซึ่ง ควรเป็น resource กลับเข้าถึงได้ทาง tool ค้นหาเท่านั้น และ ผัง OBE ของหลักสูตร (Classroom → LLO → CLO → PLO) คือตัวอย่างที่เหมาะจะเป็น “resource ตัวแรก” ของเรา — กราฟอ้างอิงที่โฮสต์แนบให้อ่านได้ตรง ๆ แทนที่จะต้องให้โมเดลเรียก tool มาประกอบเอง
ทำพลาด vs ทำถูก
ลองเอง — จัดความสามารถเข้า tools / resources / prompts
สรุปบทที่ 11
- MCP = มาตรฐานเปิด · 3 บทบาท (host/client/server) · 3 แบบความสามารถ
- เส้นแบ่ง tools/resources/prompts คือ “ใครคุม” (โมเดล/แอป/ผู้ใช้) ไม่ใช่ read/write
- เกือบทุกเซิร์ฟเวอร์จริงเป็น tools-only — ระบบเราก็เช่นกัน (56 tools · 0 resources · 0 prompts)
- ทักษะคือมองออกว่า “อันนี้ควรเป็น resource” (ผัง OBE) + ระวัง confused deputy
📋 build-your-harness checklist · บรรทัดที่ 10 “ทำการเข้าถึงให้เป็นมาตรฐาน (MCP) + เลือกชนิดให้ถูก: tools (โมเดลคุม) · resources (แอปแนบ) · prompts (ผู้ใช้เลือก)”