ข้ามไปยังเนื้อหา

MCP Foundations

AI application ทุกตัวต้องการสิ่งเดียวกัน: อ่านไฟล์ของผู้ใช้, query database, ค้น issue tracker, เรียก internal API ก่อนมี MCP แต่ละแอปต้องสร้าง integration เหล่านี้เอง Claude Desktop เขียน GitHub connector ของตัวเอง, VS Code ก็เขียนของตัวเอง, agent ในบริษัทคุณก็เขียนอีกตัว สามแอป API เดียว แต่มี integration สามชุด — แล้วก็ต้องทำแบบนี้ซ้ำกับ data source อื่นทุกตัว

นี่คือ ปัญหา N×M: N application คูณ M data source ได้ N×M adapter ที่เขียนขึ้นเฉพาะกิจ แต่ละตัวต่างกันนิดหน่อย และแต่ละตัวมีคนดูแลคนละคน

flowchart LR
  A1["App 1"] --> S1["GitHub"]
  A1 --> S2["Postgres"]
  A1 --> S3["Files"]
  A2["App 2"] --> S1
  A2 --> S2
  A2 --> S3
  A3["App 3"] --> S1
  A3 --> S2
  A3 --> S3
ก่อนมี MCP: ทุกแอปต่อกับทุก source เอง

Model Context Protocol (MCP) เปลี่ยนตารางนี้ให้เป็นมาตรฐาน data source implement protocol ครั้งเดียวในฐานะ MCP server application implement protocol ครั้งเดียวในฐานะ MCP host จากนั้น host ไหนก็คุยกับ server ไหนก็ได้: เหลือ N + M implementation แทนที่จะเป็น N×M

flowchart LR
  A1["App 1 (host)"] --> P["MCP"]
  A2["App 2 (host)"] --> P
  A3["App 3 (host)"] --> P
  P --> S1["GitHub server"]
  P --> S2["Postgres server"]
  P --> S3["Filesystem server"]
เมื่อมี MCP: implement protocol ครั้งเดียวในแต่ละฝั่ง

คำเปรียบที่ใช้กันบ่อยคือ USB-C laptop ไม่ได้มีพอร์ตเฉพาะสำหรับจอ, drive และ keyboard แต่ละยี่ห้อ มันมีพอร์ตมาตรฐานพอร์ตเดียว แล้วอุปกรณ์ต่อพ่วงก็มีหัวเสียบที่เข้ากันได้ MCP คือพอร์ตนั้นสำหรับ AI application: host มี connector เดียว แล้ว context source ทุกอย่าง — database, SaaS API, ไฟล์ในเครื่องคุณ — เสียบเข้ามาได้หมด

คำเปรียบนี้ใช้ได้อีกมุมหนึ่งด้วย USB-C กำหนดแค่หัวเสียบกับการ negotiate ไม่ได้กำหนดว่าอุปกรณ์ทำอะไร MCP ก็กำหนดแค่ message, discovery และ transport ไม่ได้กำหนดว่า tool ของคุณทำอะไรหรือ host ใช้ model อย่างไร ขอบเขตที่จงใจจำกัดแบบนี้เป็นจุดแข็ง: protocol เล็กอยู่เสมอ และทุกอย่างที่เป็น domain-specific ไปอยู่ใน server ของคุณ

MCP ไม่ใช่ LLM API มันไม่ได้ส่ง prompt ไปหา model หรือ stream token กลับมา มันอยู่ข้าง ๆ model API เพื่อป้อน context ให้:

Layerคุยกับตัวอย่าง
LLM APImodelClaude Messages API, tool-use loop
MCP hostMCP server ผ่าน MCP clientClaude Desktop, Claude Code, VS Code, agent ของคุณ
MCP serverโลกภายนอกFilesystem, GitHub, Sentry, internal API ของคุณ

host ถาม MCP server ว่ามี tool อะไรบ้าง ส่ง tool definition เหล่านั้นให้ model และเมื่อ model ตัดสินใจเรียก tool ตัวไหน host ก็ route call ไปยัง server ที่ถูกต้องแล้วส่งผลลัพธ์กลับให้ model MCP ครอบคลุมครึ่ง host↔server ของ loop นี้ ส่วนครึ่ง host↔model เป็นเรื่องของ API ฝั่ง model provider

flowchart TB
  subgraph H["MCP Host (the AI application)"]
    C1["MCP Client 1"]
    C2["MCP Client 2"]
    C3["MCP Client 3"]
  end
  C1 --- S1["Local server: filesystem (stdio)"]
  C2 --- S2["Local server: database (stdio)"]
  C3 --- S3["Remote server: Sentry (Streamable HTTP)"]
host รัน MCP client หนึ่งตัวต่อ server หนึ่งตัว
  • Host — application ที่ผู้ใช้กำลังใช้อยู่จริง เป็นเจ้าของ model, UI และเป็นคนตัดสินใจว่าจะเปิดอะไรให้ model เห็น
  • Client — component ภายใน host ที่ถือ connection หนึ่งเส้นไปยัง server หนึ่งตัว host ที่มีสาม server ก็มีสาม client
  • Server — โปรแกรมที่เปิด context ให้ใช้: tools ไว้ลงมือทำ, resources ไว้อ่าน, prompts ไว้ใช้ซ้ำ รันเป็น subprocess บนเครื่องผู้ใช้ก็ได้ หรือเป็น service บนอินเทอร์เน็ตก็ได้
บทเรียนเรียนจบแล้วคุณจะ
What Is MCP?บอกชื่อผู้เล่นทั้งสามฝ่ายและ primitive ที่แต่ละฝั่งมีให้ได้
Architecture and Layersไล่ลำดับ discover → list → call → notify บน wire ได้ครบ
JSON-RPC and _metaอ่าน MCP message ตัวไหนก็ได้ และรู้ว่า field ไหนบังคับเพราะอะไร
Discovery and Versioningอธิบายได้ว่าทำไม MCP ถึง stateless และ negotiate version รายรีเควสต์อย่างไร
Setup and Your First Serverรัน server ที่ใช้งานได้จริงทั้ง TypeScript และ Python แล้ว inspect มัน

ทุกบทเรียนเริ่มจาก wire — JSON ที่วิ่งข้ามไปมาระหว่าง client กับ server จริง ๆ — แล้วค่อยแสดง SDK call ที่สร้างมันขึ้นมา คุณจะเห็น server ตัวเดียวกันเขียนด้วย TypeScript (@modelcontextprotocol/server) และ Python (mcp) เทียบกันในแท็บที่ sync กัน เลือกภาษาครั้งเดียวแล้วมันจะตามคุณไปทุกบท

คอร์สนี้อิง protocol revision 2026-07-28 ซึ่งเป็นเวอร์ชันปัจจุบัน ตรงไหนที่พฤติกรรมยุคเก่ายังสำคัญต่อ interoperability จะระบุชัดว่า legacy (2025-11-25 และก่อนหน้า) เพื่อไม่ให้คุณสับสน

MCP ถูกออกแบบมาเพื่อกำจัดปัญหาอะไร?
host สร้าง MCP client กี่ตัวเมื่อเชื่อมต่อกับ server สามตัว?
ข้อใดที่ MCP ไม่ได้กำหนด?