בניית Python MCP Server מאפס
Model Context Protocol (MCP) הוא כעת סטנדרט בתעשייה. הוא הגיע ל-97 מיליון הורדות SDK בחודש. כל כלי AI מרכזי משתמש בו. רוב המדריכים מראים רק איך להתקין שרתים קיימים. המדריך הזה יראה לך איך לבנות משלך באמצעות Python ו-GitHub API.
מה זה MCP? זהו פרוטוקול המאפשר ללקוחות AI לקרוא לשירותים חיצוניים. השרת שלך מטפל בבקשות מכלים כמו Claude או Cursor.
שלושת חלקי הליבה של MCP:
- Tools (כלים): פונקציות שה-AI קורא להן כדי לבצע פעולה או לקבל נתונים.
- Resources (משאבים): נקודות קצה (endpoints) של נתונים לקריאה בלבד, כמו קבצים או רשומות בבסיס נתונים.
- Prompts (הנחיות): תבניות הוראות ניתנות לשימוש חוזר עבור תהליכי עבודה עקביים.
הגדרת הפרויקט שלך צור ספרייה והתקן את הספריות הדרושות באמצעות uv:
mkdir github-mcp-server
cd github-mcp-server
uv init .
uv add "mcp[cli]" httpx
בניית השרת
השתמש ב-FastMCP כדי לבצע את העבודה הקשה. שרת MCP טוב משתמש בשלושה קבצים ספציפיים: server.py, pyproject.toml, וקובץ .env אופציונלי עבור ה-GitHub token שלך.
טיפים מקצועיים לפיתוח:
- השתמש במודלים של Pydantic עבור ערכי החזרה של הכלים (tool returns). זה מספק ל-AI נתונים מובנים במקום מחרוזות (strings) מבולגנות.
- כתוב docstrings ברורים. ה-AI קורא אותם כדי להחליט מתי להשתמש בכלי שלך.
- הגבל (Clamp) קלטים מספריים. מודלי AI שולחים לעיתים קרובות מספרים לא צפויים כמו 0 או 100.
- טפל בחריגות (exceptions). קריסה בשרת שלך עלולה לקטוע את כל החיבור.
בדיקה ופריסה
אל תחכה לבדוק ב-Claude. השתמש קודם ב-MCP Inspector. הרץ:
uv run mcp dev server.py
זה פותח ממשק מקומי בכתובת http://localhost:5173. תוכל לבדוק כלים, משאבים והנחיות במקום אחד.
חיבור ל-Claude Desktop:
עדכן את קובץ ההגדרות (config file) שלך כך שיכלול את השרת שלך. השתמש בנתיב המלא לקובץ server.py שלך. השתמש תמיד ב-uv run במקום בפקודת python ישירה כדי למנוע שגיאות סביבה.
חיבור ל-Claude Code:
השתמש בפקודת ה-CLI:
claude mcp add github-tools -- uv run python /path/to/server.py
בניית שרתי MCP מותאמים אישית מאפשרת לך להכניס נתונים חיים לתהליכי העבודה של ה-AI שלך.
מקור: https://dev.to/moksh/building-a-python-mcp-server-from-scratch-a-practical-github-api-guide-397k
קהילת למידה אופציונלית: https://t.me/GyaanSetuAi