สวัสดีครับ วันนี้ผมจะพาเพื่อนๆ ที่ไม่เคยมีประสบการณ์เรื่อง API มาก่อนเลย ไปลองสร้าง MCP Server ด้วยภาษา Python กันครับ บอกตรงๆ ว่าตอนแรกผมก็งงมาก แต่พอเข้าใจแล้วรู้สึกว่ามันไม่ได้ยากอย่างที่คิด ขอแค่ทำตามทีละขั้นก็ได้แล้ว บทความนี้ผมจะเขียนให้เหมือนนั่งทำไปด้วยกัน มีจุดไหนต้องดูหน้าจอตรงไหนผมจะบอกเป็นภาพให้เห็นในหัวเลย
MCP คืออะไร พูดแบบบ้านๆ ให้เข้าใจง่าย
MCP ย่อมาจาก Model Context Protocol ครับ ถ้าจะอธิบายให้เห็นภาพ ให้คิดว่า Claude เป็นเด็กฉลาดที่นั่งอยู่ในห้อง แต่ไม่มีมือไม่มีตาไปหยิบของข้างนอก MCP ก็คือ "สะพาน" ที่เปิดประตูให้ Claude วิ่งออกไปหยิบเครื่องมือต่างๆ มาใช้ได้ เช่น คำนวณเลข ดึงข้อมูลจากเว็บ เปิดไฟล์ เป็นต้น
ฝั่งที่เปิดประตูให้ Claude วิ่งเข้ามาเรียกใช้เราเรียกมันว่า "MCP Server" ครับ ซึ่งเราจะเขียนมันขึ้นมาเองด้วย Python แค่ไฟล์เดียวก็ได้
เตรียมเครื่องให้พร้อมก่อนเริ่ม
- Python 3.10 ขึ้นไป: เปิดเทอร์มินัลแล้วพิมพ์
python --versionถ้าเห็นเวอร์ชันก็โอเค ถ้ายังไม่มีให้ไปดาวน์โหลดที่ python.org - โปรแกรมแก้ไขโค้ด: แนะนำ VS Code เพราะฟรีและใช้ง่าย เปิดมาแล้วเห็นหน้าจอโล่งๆ มีแถบเมนูด้านซ้าย กด File แล้ว New File
- API Key สำหรับเรียก Claude: ผมแนะนำให้ใช้ของ HolySheep AI เพราะราคาถูกมาก ค่าเงินหยวน 1 บาทเท่ากับ 1 ดอลลาร์ ประหยัดได้เกิน 85% รองรับ WeChat/Alipay จ่ายง่าย ความหน่วงต่ำกว่า 50ms และที่สำคัญคือลงทะเบียนแล้วได้เครดิตฟรีทันที
ติดตั้งเครื่องมือที่ต้องใช้
เปิดเทอร์มินัล (บน Windows ใช้ PowerShell หรือ cmd บน Mac ใช้ Terminal) แล้วพิมพ์คำสั่งนี้:
pip install mcp anthropic httpx
จะเห็นตัวอักษรวิ่งๆ ในเทอร์มินัล รอจนเสร็จครับ ถ้าสำเร็จจะเห็นคำว่า Successfully installed ตามด้วยชื่อแพ็กเกจ
เขียน MCP Server ไฟล์แรกของเรา
สร้างไฟล์ชื่อ my_first_server.py แล้วเขียนโค้ดตามนี้:
import asyncio
from mcp.server import Server
from mcp.server.stdio import stdio_server
from mcp.types import Tool, TextContent
สร้าง server ขึ้นมา
app = Server("my-first-mcp")
@app.list_tools()
async def list_tools():
"""บอก Claude ว่าเรามีเครื่องมืออะไรให้ใช้บ้าง"""
return [
Tool(
name="add_numbers",
description="บวกเลขสองตัวให้ Claude",
inputSchema={
"type": "object",
"properties": {
"a": {"type": "number", "description": "ตัวเลขแรก"},
"b": {"type": "number", "description": "ตัวเลขที่สอง"}
},
"required": ["a", "b"]
}
),
Tool(
name="get_weather_advice",
description="แนะนำเสื้อผ้าตามอุณหภูมิ",
inputSchema={
"type": "object",
"properties": {
"temperature": {"type": "number", "description": "อุณหภูมิองศาเซลเซียส"}
},
"required": ["temperature"]
}
)
]
@app.call_tool()
async def call_tool(name: str, arguments: dict):
"""ทำงานตามที่ Claude ขอมา"""
if name == "add_numbers":
result = arguments["a"] + arguments["b"]
return [TextContent(type="text", text=f"ผลบวกคือ {result}")]
elif name == "get_weather_advice":
temp = arguments["temperature"]
if temp < 20:
advice = "ใส่เสื้อแขนยาวหนาๆ หน่อยนะครับ"
elif temp < 30:
advice = "เสื้อแขนสั้นสบายๆ พอดี"
else:
advice = "ร้อนมาก ใส่เสื้อบางๆ แล้วดื่มน้ำเยอะๆ"
return [TextContent(type="text", text=advice)]
raise ValueError(f"ไม่รู้จักเครื่องมือชื่อ {name}")
async def main():
"""รัน server รอให้ Claude มาเรียก"""
async with stdio_server() as (read_stream, write_stream):
await app.run(read_stream, write_stream, app.create_initialization_options())
if __name__ == "__main__":
asyncio.run(main())
บันทึกไฟล์แล้วลองรันดูครับ พิมพ์ python my_first_server.py ในเทอร์มินัล ถ้าไม่มี error แสดงว่าทำงานได้แล้ว
เชื่อมต่อ MCP Server เข้ากับ Claude
ตอนนี้เรามี server แล้ว ขั้นต่อไปคือให้ Claude รู้จักมัน ผมจะแนะนำการเชื่อมต่อผ่าน Claude Desktop ครับ:
- เปิดโปรแกรม Claude Desktop
- ไปที่ Settings (รูปเฟือง) แล้วเลือก Developer
- กด Edit Config จะเปิดไฟล์ JSON ขึ้นมา
- เพิ่มข้อความนี้ลงไป
{
"mcpServers": {
"my-first-mcp": {
"command": "python",
"args": ["/full/path/to/my_first_server.py"]
}
}
}
อย่าลืมเปลี่ยน path ให้เป็นที่อยู่จริงของไฟล์บนเครื่องเรานะครับ บน Windows จะหน้าตอนประมาณ C:\\Users\\ชื่อผู้ใช้\\Documents\\my_first_server.py
รีสตาร์ท Claude Desktop แล้วจะเห็นรูปไขควงเล็กๆ ที่มุมล่างขวาของหน้าต่างแชท ถ้าขึ้นแสดงว่าเชื่อมต่อสำเร็จ
ทดสอบใช้งานจริง
ลองพิมพ์คุยกับ Claude ว่า "ช่วยบวกเลข 125 กับ 378 ให้หน่อย" Claude จะเรียกใช้เครื่องมือ add_numbers ของเราอัตโนมัติ แล้วตอบกลับมาว่า 503 ครับ ถ้าพิมพ์ว่า "วันนี้อากาศ 35 องศา ควรใส่เสื้อยังไง" ก็จะได้คำแนะนำกลับมา
ข้อมูลราคาโมเดลปี 2026 (ราคาต่อ 1 ล้าน token)
ถ้าต้องเรียกใช้ Claude บ่อยๆ แนะนำให้ดูเรื่องค่าใช้จ่ายด้วยครับ ตารางนี้คือราคาผ่าน HolySheep AI ซึ่งถูกกว่าตลาดมาก:
- GPT-4.1: 8 ดอลลาร์
- Claude Sonnet 4.5: 15 ดอลลาร์
- Gemini 2.5 Flash: 2.50 ดอลลาร์
- DeepSeek V3.2: 0.42 ดอลลาร์
เทียบกับของตรงแล้วประหยัดได้หลายเท่าตัวเลยครับ
ข้อผิดพลาดที่พบบ่อยและวิธีแก้ไข
ตอนผมเริ่มทำใหม่ๆ เจอปัญหาเยอะมาก เลยรวมมาให้เพื่อนๆ ที่เจอเหมือนกัน
1. ModuleNotFoundError: No module named 'mcp'
ปัญหานี้เกิดตอนรัน server แล้วเทอร์มินัลฟ้องว่าหาโมดูล mcp ไม่เจอ สาเหตุส่วนใหญ่คือติดตั้ง pip ไปอีก environment นึง แต่ตอนรันไปอีกอันนึง
# วิธีแก้: ติดตั้งใหม่ให้ถูก environment
ถ้าใช้ venv อยู่ ให้ activate ก่อน
Windows
.\\venv\\Scripts\\activate
Mac/Linux
source venv/bin/activate
แล้วค่อยติดตั้ง
pip install mcp
เช็คว่าติดตั้งถูกที่
pip show mcp
2. Claude Desktop ไม่เห็นเครื่องมือ
รีสตาร์ทแล้วยังไม่เห็นรูปไขควง หรือเห็นแล้วแต่เรียกใช้ไม่ได้ ให้ตรวจ 3 จุดนี้:
- ทดสอบรัน python my_first_server.py ในเทอร์มินัลดูก่อน ถ้ามี error ให้แก้ให้หาย
- เช็ค path ใน config ว่าชี้ไปที่ไฟล์ถูกต้อง ลองคลิกขวาที่ไฟล์แล้วดู Location
- ดู log ของ Claude Desktop ที่เมนู Help แล้วเลือก Show Logs
# วิธีแก้ path ที่ถูกต้องต้องใช้ absolute path
Windows ตัวอย่าง
"args": ["C:\\Users\\somchai\\Documents\\my_first_server.py"]
Mac ตัวอย่าง
"args": ["/Users/somchai/Documents/my_first_server.py"]
ห้ามใช้ path แบบ relative เช่น ./my_first_server.py
3. JSON parse error ตอนบันทึก config
แก้ไฟล์ config แล้ว Claude เปิดไม่ขึ้นเลย ฟ้อง parse error ปัญหานี้ส่วนใหญ่มาจากลืมลูกน้ำ หรือมีเครื่องหมายผิด
# JSON ที่ผิด (ลืมลูกน้ำ)
{
"mcpServers": {
"my-first-mcp": {
"command": "python"
"args": ["/path/to/server.py"] // ขาดลูกน้ำตรงนี้
}
}
}
JSON ที่ถูก
{
"mcpServers": {
"my-first-mcp": {
"command": "python",
"args": ["/path/to/server.py"]
}
}
}
แนะนำให้เปิดไฟล์ config ด้วย VS Code จะเห็นสีแดงทันทีถ้ามีจุดผิด
สรุปสิ่งที่ได้เรียนรู้
ผมหวังว่าบทความนี้จะช่วยให้เพื่อนๆ ที่ไม่เคยแตะ API มาก่อนได้ลองสร้าง MCP Server เป็นของตัวเองครับ จริงๆ แล้วมันแค่เขียนฟังก์ชัน Python ธรรมดา แล้วบอก Claude ว่ามีฟังก์ชันอะไรให้ใช้บ้าง พอ Claude เรียกมา เราก็ทำงานแล้วส่งคำตอบกลับไป เท่านั้นเอง
ถ้าเริ่มติดปัญหาเรื่องค่าใช้จ่ายในการเรียก Claude บ่อยๆ ลองสมัคร HolySheep AI ดูได้ครับ ราคาถูกกว่าทางตรงหลายเท่า จ่ายผ่าน WeChat หรือ Alipay ก็ได้ ตอบสนองไวกว่า 50ms แล้วเครดิตฟรีตอนสมัครก็เอาไปทดลองเล่นได้สบายๆ