การสร้าง Python MCP Server ตั้งแต่เริ่มต้น
Model Context Protocol (MCP) ได้กลายเป็นมาตรฐานของอุตสาหกรรมแล้ว โดยมียอดดาวน์โหลด SDK สูงถึง 97 ล้านครั้งต่อเดือน เครื่องมือ AI หลักๆ ทุกตัวต่างก็ใช้งานมัน คู่มือส่วนใหญ่มักจะสอนเพียงวิธีติดตั้งเซิร์ฟเวอร์ที่มีอยู่แล้ว แต่คู่มือนี้จะสอนวิธีสร้างเซิร์ฟเวอร์ของคุณเองโดยใช้ Python และ GitHub API
What is MCP? มันคือโปรโตคอลที่ช่วยให้ AI client สามารถเรียกใช้งานบริการภายนอกได้ เซิร์ฟเวอร์ของคุณจะทำหน้าที่จัดการคำขอ (requests) จากเครื่องมือต่างๆ เช่น Claude หรือ Cursor
ส่วนประกอบหลัก 3 ส่วนของ MCP:
- Tools: ฟังก์ชันที่ AI เรียกใช้เพื่อดำเนินการบางอย่างหรือดึงข้อมูล
- Resources: จุดเชื่อมต่อข้อมูลแบบอ่านอย่างเดียว (read-only) เช่น ไฟล์หรือบันทึกในฐานข้อมูล
- Prompts: เทมเพลตคำสั่งที่นำกลับมาใช้ใหม่ได้ เพื่อให้เวิร์กโฟลว์มีความสม่ำเสมอ
การตั้งค่าโปรเจกต์ของคุณ สร้างไดเรกทอรีและติดตั้งไลบรารีที่จำเป็นโดยใช้ uv:
mkdir github-mcp-server
cd github-mcp-server
uv init .
uv add "mcp[cli]" httpx
การสร้างเซิร์ฟเวอร์ ใช้ FastMCP เพื่อจัดการงานหนักๆ เซิร์ฟเวอร์ MCP ที่ดีจะประกอบด้วยไฟล์เฉพาะ 3 ไฟล์ ได้แก่: server.py, pyproject.toml และไฟล์ .env (ไม่บังคับ) สำหรับเก็บ GitHub token ของคุณ
เคล็ดลับระดับโปรสำหรับการพัฒนา:
- ใช้ Pydantic models สำหรับข้อมูลที่ส่งกลับจาก tool วิธีนี้จะช่วยให้ AI ได้รับข้อมูลที่มีโครงสร้าง แทนที่จะเป็นข้อความ (strings) ที่ยุ่งเหยิง
- เขียน docstrings ให้ชัดเจน AI จะอ่านสิ่งเหล่านี้เพื่อตัดสินใจว่าจะใช้ tool ของคุณเมื่อใด
- ควบคุมขอบเขตของข้อมูลตัวเลข (Clamp numeric inputs) เนื่องจากโมเดล AI มักจะส่งตัวเลขที่ไม่คาดคิดมา เช่น 0 หรือ 100
- จัดการกับ exception (Handle exceptions) เพราะหากเซิร์ฟเวอร์ของคุณค้างหรือล่ม อาจทำให้การเชื่อมต่อทั้งหมดขาดหายไปได้
การทดสอบและการปรับใช้ (Deployment) อย่ารอที่จะทดสอบใน Claude ให้ใช้ MCP Inspector ก่อน โดยรันคำสั่ง:
uv run mcp dev server.py
คำสั่งนี้จะเปิดอินเทอร์เฟซในเครื่องที่ http://localhost:5173 คุณสามารถทดสอบ tools, resources และ prompts ได้ในที่เดียว
การเชื่อมต่อกับ Claude Desktop:
อัปเดตไฟล์ config ของคุณเพื่อเพิ่มเซิร์ฟเวอร์เข้าไป โดยใช้ path เต็มไปยังไฟล์ server.py ของคุณ และควรใช้ uv run เสมอแทนการใช้คำสั่ง python เปล่าๆ เพื่อหลีกเลี่ยงข้อผิดพลาดด้าน environment
การเชื่อมต่อกับ Claude Code: ใช้คำสั่ง CLI:
claude mcp add github-tools -- uv run python /path/to/server.py
การสร้าง MCP server แบบกำหนดเองจะช่วยให้คุณสามารถนำข้อมูลแบบเรียลไทม์เข้าสู่เวิร์กโฟลว์ AI ของคุณได้
Source: https://dev.to/moksh/building-a-python-mcp-server-from-scratch-a-practical-github-api-guide-397k
Optional learning community: https://t.me/GyaanSetuAi