อธิบายหลักการทำงานของ MCP และวิธีตั้งค่า เพื่อให้ Claude Code เชื่อมต่อกับฐานข้อมูล GitHub Slack และระบบภายนอกอื่นๆ ผ่าน MCP Server
Claude Code มีขอบเขตการทำงานที่กำหนดไว้โดยค่าเริ่มต้น: อ่านและเขียนไฟล์ในเครื่อง รันคำสั่ง terminal ใช้เครื่องมือที่ติดตั้งมาให้ แต่โปรเจกต์จริงมักต้องการมากกว่านั้น — ดึงข้อมูลจากฐานข้อมูล อ่านเอกสาร Notion ค้นหาข้อความ Slack หรือเรียกใช้ API ภายใน
MCP คือสิ่งที่แก้ปัญหานี้
MCP (Model Context Protocol) คือโปรโตคอลแบบเปิดจาก Anthropic ที่กำหนดวิธีที่โมเดล AI สื่อสารกับเครื่องมือภายนอกและแหล่งข้อมูลต่างๆ ลองนึกภาพว่ามันคือการติดตั้งปลั๊กอินให้ Claude Code — MCP Server แต่ละตัวคือบริการอิสระที่เปิดให้ใช้ชุดเครื่องมือ ซึ่ง Claude สามารถเรียกใช้ได้โดยตรงในระหว่าง session
ต่างจาก Hooks (ที่ทริกเกอร์สคริปต์เมื่อ Claude ทำบางอย่าง) MCP คือการขยายขอบเขตความสามารถของ Claude อย่างแข็งขัน: คุณเชื่อมต่ออะไร Claude ก็สามารถดำเนินการกับสิ่งนั้นได้
สถาปัตยกรรมตรงไปตรงมา:
Claude Code (Client) ←→ MCP Server ←→ ระบบภายนอก
กระบวนการทั้งหมดโปร่งใสสำหรับผู้ใช้ สิ่งที่คุณเห็นคือ Claude บอกว่า "ขอตรวจสอบในฐานข้อมูลก่อน" แล้วส่งคืนผลลัพธ์ โดย MCP จัดการการส่งต่อคำขออยู่เบื้องหลัง
MCP Server สามารถเปิดให้ใช้สามสิ่ง:
Tools (เครื่องมือ)
ฟังก์ชันที่ Claude สามารถเรียกใช้ได้แบบ active — "ดึงข้อมูลตาราง users" "ค้นหาเอกสาร" "ส่งข้อความ Slack" นี่คือประเภทที่ใช้บ่อยที่สุด ครอบคลุม 90% ของกรณีใช้งานจริง
Resources (ทรัพยากร)
ข้อมูลที่มีโครงสร้างซึ่ง Claude สามารถอ่านเป็น context — schema ของฐานข้อมูล เอกสาร API ไฟล์ config
Prompts (เทมเพลต prompt)
ชิ้นส่วน prompt ที่กำหนดไว้ล่วงหน้า ให้ผู้ใช้เรียกใช้ได้โดยตรง
ในทางปฏิบัติ คุณจะทำงานกับ Tools เกือบทั้งหมด
ลองใช้ Filesystem MCP อย่างเป็นทางการเป็นตัวอย่าง — Server นี้ให้ Claude เข้าถึงส่วนต่างๆ ของระบบไฟล์นอก working directory
ติดตั้ง
npm install -g @modelcontextprotocol/server-filesystem
ตั้งค่า
แก้ไข ~/.claude/settings.json:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/yourname/Documents"
]
}
}
}
ตรวจสอบ
รีสตาร์ท Claude Code แล้วลอง:
แสดงรายการไฟล์ PDF ทั้งหมดใน /Users/yourname/Documents
ถ้า Claude ส่งคืนผลลัพธ์แทนที่จะบอกว่า "ไม่สามารถเข้าถึงระบบไฟล์ได้" แสดงว่า MCP ทำงานแล้ว
{
"mcpServers": {
"ชื่อ-บริการ": {
"command": "คำสั่งเริ่มต้น",
"args": ["รายการ argument"],
"env": {
"API_KEY": "xxx"
}
}
}
}
command + args: คำสั่งที่ Claude Code ใช้เปิดโปรเซส MCP Serverenv สำหรับ API key และ config ที่ละเอียดอ่อน อย่า hardcode ในโค้ดการตั้งค่า MCP สามารถอยู่ในสามที่ เรียงตามลำดับความสำคัญจากน้อยไปมาก:
| ตำแหน่ง | ไฟล์ | เมื่อไหร่ใช้ |
|---|---|---|
| Global | ~/.claude/settings.json |
เครื่องมือที่ใช้ในทุกโปรเจกต์ |
| ระดับโปรเจกต์ | .claude/settings.json |
เครื่องมือเฉพาะโปรเจกต์นี้ |
| Local override | .claude/settings.local.json |
config ส่วนตัว ไม่ commit ลง git |
สำหรับการเชื่อมต่อฐานข้อมูลและ API ภายใน ใช้ config ระดับโปรเจกต์และ commit ไปพร้อมกับโค้ด สมาชิกทีมที่ clone repository มาจะได้สภาพแวดล้อม MCP เดียวกันโดยอัตโนมัติ
Anthropic ดูแล server อย่างเป็นทางการหลายตัว:
ชุมชนยังสร้าง implementation ของบุคคลที่สามอีกมากมาย ครอบคลุม Notion, Linear, Jira และฐานข้อมูลต่างๆ
| Hooks | MCP | |
|---|---|---|
| ถูกทริกเกอร์โดย | Claude ทำ action เฉพาะ | Claude เรียกใช้เครื่องมือแบบ active |
| วัตถุประสงค์ | สกัดกั้นหรือเสริมพฤติกรรมที่มีอยู่ | เพิ่มความสามารถใหม่ |
| กรณีทั่วไป | จัดรูปแบบเมื่อบันทึก ตรวจสอบก่อน commit | ดึงข้อมูล DB เรียก API ภายนอก |
| ความซับซ้อนในการตั้งค่า | ต่ำ | ปานกลาง |
ทั้งสองเสริมซึ่งกันและกัน Hooks ควบคุม วิธีที่ Claude ทำงาน MCP ควบคุม สิ่งที่ Claude ทำได้
บทความนี้เป็นบทนำแนวคิดของ MCP บทความถัดไปจะครอบคลุม:
ถ้าคุณมีระบบที่อยากเชื่อมต่ออยู่แล้ว ลองดูรายการ MCP Server ก่อน — มีโอกาสสูงที่มีคนสร้างสิ่งที่คุณต้องการไว้แล้ว