מאגר זה מכיל מימוש בפייתון של פרוטוקול הקשר למודל (MCP), המדגים כיצד ליצור גם שרת וגם אפליקציית לקוח התקשורת באמצעות תקן MCP.
מימוש ה-MCP מורכב משני רכיבים עיקריים:
-
שרת MCP (
server.py) - שרת שמספק:- כלים: פונקציות שניתן לקרוא להן מרחוק
- משאבים: נתונים שניתן לשלוף
- הנחיות: תבניות ליצירת הנחיות למודלים לשוניים
-
לקוח MCP (
client.py) - אפליקציית לקוח שמתחברת לשרת ומשתמשת בתכונותיו
מימוש זה מדגים מספר תכונות מרכזיות של MCP:
completion- מייצר השלמות טקסט ממודלים של בינה מלאכותית (מדומה)add- מחשבון פשוט שמוסיף שני מספרים
models://- מחזיר מידע על מודלי הבינה המלאכותית הזמיניםgreeting://{name}- מחזיר ברכה מותאמת אישית לשם נתון
review_code- מייצר הנחיה לסקירת קוד
כדי להשתמש במימוש MCP זה, התקן את החבילות הנדרשות:
pip install mcp-server mcp-clientהפעל את השרת בחלון טרמינל אחד:
python server.pyניתן גם להפעיל את השרת במצב פיתוח באמצעות MCP CLI:
mcp dev server.pyאו להתקין ב-Claude Desktop (אם זמין):
mcp install server.pyהפעל את הלקוח בחלון טרמינל נוסף:
python client.pyזה יתחבר לשרת וידגים את כל התכונות הזמינות.
הלקוח (client.py) מדגים את כל יכולות ה-MCP:
python client.pyזה יתחבר לשרת ויבצע את כל התכונות כולל כלים, משאבים והנחיות. הפלט יציג:
- תוצאת כלי המחשבון (5 + 7 = 12)
- תגובת כלי ההשלמה לשאלה "מה משמעות החיים?"
- רשימת מודלי הבינה המלאכותית הזמינים
- ברכה מותאמת אישית ל-"MCP Explorer"
- תבנית הנחיה לסקירת קוד
השרת ממומש באמצעות API של FastMCP, המספק אבסטרקציות ברמה גבוהה להגדרת שירותי MCP. הנה דוגמה מפושטת לאופן הגדרת הכלים:
@mcp.tool()
def add(a: int, b: int) -> int:
"""Add two numbers together
Args:
a: First number
b: Second number
Returns:
The sum of the two numbers
"""
logger.info(f"Adding {a} and {b}")
return a + bהלקוח משתמש בספריית הלקוח של MCP כדי להתחבר לשרת ולקרוא לו:
async with stdio_client(server_params) as (reader, writer):
async with ClientSession(reader, writer) as session:
await session.initialize()
result = await session.call_tool("add", arguments={"a": 5, "b": 7})למידע נוסף על MCP, בקר בכתובת: https://modelcontextprotocol.io/
כתב ויתור:
מסמך זה תורגם באמצעות שירות תרגום מבוסס בינה מלאכותית Co-op Translator. למרות שאנו שואפים לדיוק, יש לקחת בחשבון כי תרגומים אוטומטיים עלולים להכיל שגיאות או אי-דיוקים. המסמך המקורי בשפת המקור שלו נחשב למקור הסמכותי. למידע קריטי מומלץ להשתמש בתרגום מקצועי על ידי מתרגם אנושי. אנו לא נושאים באחריות לכל אי-הבנה או פרשנות שגויה הנובעת משימוש בתרגום זה.