การสร้าง 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