פרוטוקול הֶקְשֵׁר המודל (MCP) של אנת'רופיק מתחיל להתבסס כתקן מהפכני לחיבור מודלים גדולים של שפה (LLMs) לשירותים חיצוניים כמו Gmail, Slack, GitHub, חיפוש באינטרנט ועוד. באמצעות MCP, ניתן להעניק ל-LLMs יכולות מתקדמות, כמו למשל זיכרון ארוך טווח. בעוד שקיימים כבר שרתי MCP רבים המאפשרים חיבור לשירותים נפוצים, הכוח האמיתי טמון ביכולת לבנות שרתים מותאמים אישית. בניית שרתים כאלו מאפשרת לחבר סוכני AI לכל שירות רצוי, תוך שמירה על הפשטות והעוצמה של MCP.
למה לבנות שרתי MCP משלכם?
היכולת לבנות שרתי MCP מותאמים אישית פותחת עולם של אפשרויות. לעיתים, האופן שבו שרת MCP קיים מתקשר עם שירות מסוים (למשל, Brave Search) אינו תואם את הצרכים הספציפיים שלכם. במקרים אחרים, ייתכן שתרצו לחבר את ה-LLM לשירות שעדיין אין לו שרת MCP ייעודי. כאן נכנסת לתמונה היכולת לפתח שרתים משלכם, המאפשרת שליטה מלאה על האינטגרציה והתאמה אישית מקסימלית, ובכך להרחיב את עולם האוטומציות והאינטגרציות.
משאבים ללימוד ובניית שרתי MCP
כדי להתחיל ללמוד על MCP ולבנות שרתים, ניתן להיעזר במספר משאבים עיקריים:
- התיעוד הרשמי של MCP: מקור מצוין להבנה כללית של הפרוטוקול, כולל מדריכים לבניית שרתים ולקוחות.
- רשימת שרתי MCP קיימים ב-GitHub: מאגר שימושי לדוגמאות ולקבלת השראה לבניית שרתים חדשים.
- מאגר ה-GitHub הרשמי של Anthropic ל-Python SDK של MCP: חיוני למי שבונה שרתים בפייתון.
כיצד פועלים שרתי MCP?
שרתי MCP מאפשרים לכם להוסיף יכולות חדשות ל-LLMs בקלות. לדוגמה, ניתן להגדיר שרת MCP לחיפוש באינטרנט דרך Brave Search. את הגדרות השרת מטמיעים בקליינט MCP נתמך (כמו Windsurf, Cursor, N8N, Claude Desktop, או סוכן AI מותאם אישית). לאחר ההגדרה, ה-LLM יכול להשתמש ביכולת החיפוש כדי לענות על שאלות הדורשות מידע עדכני, החורג מידע האימון המקורי שלו.
היופי הוא ששרת MCP שתבנו בעצמכם יעבוד באותו אופן בדיוק כמו שרתים קיימים. לדוגמה, ניתן לבנות שרת MCP המתממשק עם ספריית Mem0 כדי להעניק ל-Claude Desktop זיכרון ארוך טווח, יכולת שאינה קיימת בו כברירת מחדל. קובץ התצורה של שרת כזה ייראה דומה מאוד לקבצי תצורה של שרתים אחרים.
תבנית Python לבניית שרתי MCP
כדי להקל על תהליך בניית שרתי MCP, פותחה תבנית Python ייעודית. תבנית זו משלבת את כל שיטות העבודה המומלצות (best practices) וחוסכת זמן ומאמץ בפיתוח. התבנית מבוססת על שרת Mem0 MCP כדוגמה קונקרטית ופרקטית, אך היא כללית מספיק כדי שניתן יהיה להתאים אותה בקלות לכל שירות אחר על ידי החלפת החלקים הספציפיים ל-Mem0.
התבנית כוללת קובץ README מפורט עם הוראות התקנה והרצה, ותומכת בפרוטוקולי התקשורת השונים של MCP, דבר שחשוב מאוד ושלעיתים נשכח בשרתים אחרים. חשוב להבין את המתרחש מאחורי הקלעים ולא להסתמך רק על "vibe coding", והתבנית מסייעת בכך.
בניית שרת MCP עם עוזרי קידוד מבוססי AI
ניתן להיעזר בעוזרי קידוד מבוססי AI כמו Windsurf או Cursor כדי לבנות שרתי MCP. ניתן להזין להם את התיעוד הרשמי של MCP (הזמין בפורמט Markdown) ואף את קוד התבנית המוצעת כדוגמה. שילוב זה יסייע לעוזר ה-AI להבין טוב יותר כיצד לבנות את השרת הרצוי. לדוגמה, ניתן לבקש ממנו לבנות שרת MCP שיתממשק עם LightRAG, כלי קוד פתוח ל-RAG מבוסס גרפי ידע.
מבנה שרת MCP בפייתון: הרכיבים המרכזיים
הבנת מבנה שרת MCP בפייתון, כפי שהוא ממומש בתבנית, חיונית לבנייה נכונה:
1. ניהול מחזור חיים (Lifespan Management)
רכיב קריטי שלעיתים חסר בשרתי MCP. מטרתו היא להגדיר משאבים (כמו חיבור למסד נתונים או קליינט של שירות חיצוני כמו Mem0 client) פעם אחת בלבד עם הפעלת השרת, ולהשתמש באותו מופע לאורך כל חיי השרת (בדומה לתבנית Singleton). בנוסף, הוא מאפשר לבצע פעולות ניקוי (cleanup) בסיום, כמו סגירה חיננית של חיבורים.
2. אתחול שרת FastMCP
לאחר הגדרת ה-lifespan, מאתחלים את מופע שרת ה-FastMCP. בהגדרה זו מציינים את שם השרת, תיאורו, את פונקציית ה-lifespan, ופרמטרים נוספים כמו הגדרות Host ו-Port עבור פרוטוקול התקשורת SSE (Server-Sent Events).
3. הגדרת כלים (Tools)
זהו לב ליבו של שרת ה-MCP. כלים מוגדרים כפונקציות Python המקושטות (decorated) עם @mcp.tool
. פונקציות אלו מייצגות את היכולות שהשרת מעניק ל-LLM.
- הקשר (Context): הפרמטר הראשון של כל פונקציית כלי הוא ה-context, המועבר באופן מרומז ומכיל את המשאבים שהוגדרו ב-lifespan (למשל, ה-Mem0 client).
- פרמטרים הנבחרים על ידי ה-LLM: שאר הפרמטרים של הפונקציה נבחרים ומוזנים על ידי ה-LLM בזמן הקריאה לכלי.
- Docstring: ה-docstring של הפונקציה הוא קריטי. הוא משמש כתיאור הכלי שמוצג ל-LLM, ומנחה אותו מתי ואיך להשתמש בכלי. חשוב שיהיה תיאורי ומדויק.
לדוגמה, בשרת Mem0, ניתן להגדיר כלים לשמירת זיכרון, אחזור כל הזיכרונות, או חיפוש זיכרונות ספציפיים. כלים אלו משתמשים ב-Mem0 client שהוגדר ב-lifespan.
4. הפונקציה הראשית (Main Function) ופרוטוקולי תקשורת
הפונקציה הראשית אחראית להפעלת השרת. נקודה חשובה כאן היא התמיכה בפרוטוקולי תקשורת שונים: Standard I/O ו-SSE (Server-Sent Events). שרתים רבים תומכים רק באחד מהם, אך תמיכה בשניהם חשובה למטרות שונות.
- Standard I/O: אידיאלי לתהליכים מקומיים כאשר השרת והקליינט רצים על אותה מכונה. הקליינט מנהל את השרת כתת-תהליך.
- SSE: דומה יותר ל-HTTP, מאפשר חיבור בין קליינט לשרת גם דרך הרשת. חיוני אם רוצים להריץ את השרת מרחוק או להתחבר מקליינטים כמו N8N, שלעיתים תומכים רק ב-SSE.
התבנית מאפשרת לבחור את פרוטוקול התקשורת באמצעות משתנה סביבה, מה שהופך אותה לגמישה מאוד.
הגדרת והרצת השרת המותאם אישית שלכם
לאחר פיתוח השרת, ניתן להריץ אותו. התבנית כוללת הוראות מפורטות להתקנה והרצה, הן באמצעות Python ישירות והן באמצעות Docker (אפשרות מומלצת לסטנדרטיזציה וקלות שימוש). יש להגדיר משתני סביבה בהתאם לשרת הספציפי שפיתחתם (למשל, מפתחות API לשירותים חיצוניים). לאחר שהשרת רץ, ניתן לחבר אליו כל קליינט MCP באמצעות קובץ תצורה מתאים, המציין את כתובת השרת ואופן ההתחברות (Standard I/O או SSE).
לדוגמה, לאחר הרצת שרת Mem0 מבוסס התבנית, ניתן לשאול את ה-LLM (דרך Claude Desktop או N8N) מהם הזיכרונות השמורים, לשמור זיכרונות חדשים, וכו'. כל הפעולות הללו יתבצעו דרך השרת המותאם אישית שבניתם, ויעצימו את סוכן ה-AI שלכם.
סיכום
בניית שרתי MCP משלכם היא דרך עוצמתית להרחיב את יכולותיהם של מודלי שפה גדולים ולחבר אותם באופן מותאם אישית למגוון רחב של שירותים ונתונים. באמצעות הבנה של עקרונות MCP והיעזרות בתבנית Python מובנית היטב, התהליך הופך לפשוט ונגיש יותר, ומאפשר לכם ליצור פתרונות AI מתוחכמים ויעילים יותר, ולהתקדם לקראת הדור הבא של סוכני AI.
תגובות
יש להתחבר כדי להגיב
מערכת התגובות מאתחלת, אנא המתן...
בודק חיבור לשרת...