הסבר מהיר ופשוט על Model Context Protocol – MCP

פרוטוקול חדש שמאפשר לחבר שירותים שונים לבינה מלאכותית ולאפשר לה להשתמש בהם.

יש המון המון טרנדים בתחום ה-LLM (מודל שפה גדול, המוח מאחורי מה שהציבור קורא לו ״בינה מלאכותית״) ובכלל בתחום ה-AI. מאד קשה לעקוב אחרי כל חדשה מתפרצת על יכולות אלו ואחרות. אבל הטרנד של MCP – שהם ראשי תבות של Model Context Protocol, כבר הולך ומתפשט ואפשר להתחיל לעבוד איתו. במיוחד כאשר עוד ועוד ספקיות LLM – ועכשיו גם OpenAI, הודיעו על תמיכה בו.

יש סרטון שמלווה את הפוסט, אם יותר מעניין ומתאים לכם:

מה זה?

בגדול מדובר על פרוטוקול שמאפשר תקשורת בין שרת שמספק שירות, פעולה או מידע לבין LLM. זה נשמע קצת מפוצץ אז אני אסביר. LLM יודע מידע עד הנקודה שבה אימנו אותו. אבל הוא לא יכול לדעת מה מזג האוויר מחר. גם אני לא יכול לדעת. אז כשהבוס שלי שואל אותי, אני פותח אתר אינטרנט ובודק. אבל עם LLM זה קצת קשה – אבל אני יכול לספק למודל שרת שהוא יכול לשאול אותו ״מה מזג האוויר מחר?״ ולקבל את התשובה.

זה נהיה יותר מעניין כאשר מדובר על פעולות. למשל, היום הLLM יכוה להציע לי נוסח למייל לרואה החשבון שלי שמבקש ממנו בדיקה על שאלת מס מסוימת. אבל אם שרת המייל שלי מאפשר למודל סוג של ממשק שבו המודל יכול לשלוח את המייל – זה מפוצץ את הראש.

אני אמחיש זאת באמצעות שיחה עם כלי בינה מלאכותית – למשל ChatGPT:

דיאלוג עם ChatGPT:
שאלה של משתמש:
שלח לי מייל לרואה החשבון שלי בנוגע להאם קניית מסרק זקן מוזהב זו הוצאה מוכרת
תשובה של הבינה המלאכותית:
להלן המייל שאני רוצה לשלוח:
״הי, תגיד, האם מסרק זקן מוזהב זו הוצאה מוכרת לפי פקודת מס ההכנסה 59 א׳ סעיף קטן ג׳? אני אשמח לתשובה מוסמכת כדי להערך בהתאם לתחזית העסק שלי. כמובן שהתשובה צריכה להיות ממוסמכת ומוסברת היטב״״
האם לשלוח?

נשמע מאד מדליק ושימושי ואכן זה אמור להיות. מי שהציעה את הפרוטוקול הזה היא חברת אנטרופיק (זו שמפתחת את קלוד) והיא מימשה אותו מייד באפליקצית הדסקטופ שלה. זה קרה בנובמבר 2024 ולקח זמן שזה התרומם. כרגע יש המון המון שרתים שממשים MCP. הייתי יכול לצלול לארכיטקטורה, אבל בגדול… אני מעדיף ללמוד נושאים חדשים עם הידיים. בואו ונראה איך זה עובד בפועל! אני עושה את זה בפייתון, אבל אין מניעה לעבוד בטייפסקריפט, גו או כל שפה מודרנית אחרת.

לממש MCP – התוכנית

אנחנו נעבוד עם קליינט פשוט – ה-CLI בטרמינל, זה יאפשר לנו להמנע כרגע מממשק גרפי ולעבוד באופן שמאד נוח למתכנתים לעבוד איתו. אני רוצה לחבר LLM של OpenAI לשרת MCP שרץ אצלי מקומית על המחשב וקורא קבצים. כך למשל אני אוכל לשאול את ה-LLM שאלה על הקבצים שיש אצלי במחשב ולקבל תשובה בהתאם לתוכן.

כלומר ה-MCP Client, זה שבו רץ ה-LLM יחד עם החיבור ל-MCP וכל שרתי ה-MCP שאני רוצה להשתמש בהם, ירוצו על ה-CLI המקומי.

ה-MCP Server שהוא יחובר אליו הוא גם ירוץ מקומית ויקבל גישה לקבצים שלי בתיקיה מסוימת.

ה-MCP Client וה-Servers עובדים גם עם Node.js וגם עם פייתון – יש לוודא שעל המחשב שלכם יש פייתון ו-Node.js.

ה-Client

בגדול הקליינט הוא איפה שאני מקליד את השאלות/דרישות שלי מהבינה המלאכותית. הקליינט לוקח את מה שהקלדתי, לוקח את רשימת שרתי ה-MCP שגם הגדרתי לו מראש ואז רץ אל בינה מלאכותית כלשהי שמנחה אותו להתחבר או לא להתחבר ל-MCP.

במקרה הזה, אני אשתמש בקליינט של CLI. יש הרבה סוגים של קליינטים שיכולים להתחבר ל-MCP והבולט שבהם הוא קלוד דסקטופ. אבל אני לא רוצה להשתמש בקלוד אלא במשהו שממש יאפשר לי לראות ״בידיים״ את מה שאני עושה. אני אשתמש בפרויקט חמוד שמעולה לצרכים לימודיים בשם MCP CLI.

נעשה לו clone:

git clone git@github.com:chrishayuk/mcp-cli.git

נכנס אל הפרויקט באמצעות cd mcp-cli ונתקין את תלויות הפייתון עם uv (אם אתם לא מכירים את uv, אז כדאי!)

uv sync --reinstall

אפשר גם להתקין עם pip:

pip install -e ".[cli,dev]"

אחרי ההתקנה (עם uv זה באמת עניין של שניות), אפשר להפעיל את הפרויקט באמצעות uv:

uv run mcp-cli --help

זהו, הקליינט מוכן. עכשיו צריך לחבר אותו ל-OpenAI, אפשר לחבר אותו לספק אחר אם רוצים. נלך לחשבון שלנו ב-OpenAI וניצור טוקן חדש להתחברות. נכנסים אל https://platform.openai.com/api-keys – אם יש צורך נרשמים ורוכשים בכמה דולרים קרדיטים ואז יוצרים טוקן חדש.

ממשק של OpenAI עם Create new secret key - תמונת המחשה בעיקר.

נכניס אותו כמקובל למשתנה סביבה באמצעות:

export OPENAI_API_KEY="sk-proj-YOUR-API-KEY"

כאשר ה-sk-proj-YOUR-API-KEY – זה המפתח שלכם. ברגע שאתם מקלידים את הפקודה הזו, משתנה הסביבה נכנס לזכרון של הטרמינל ואפשר לעבוד איתו. עד שסוגרים את הטרמינל כמובן.

ה-server

למרבה השמחה, mcp-cli מכיל כבר כמה שרתי דוגמה, אחד מהם הוא שרת לטיפול בקבצים: קריאה וכתיבה. אני ממליץ לא לתת לו הרשאה לכל הקבצים אלא לתיקיה מבודדת בלבד. אפשר אפילו תיקית הפרויקט. נפתח את server_config.json – מדובר בקובץ המספק את רשימת הMCP Servers שהקליינט שלנו מחובר אליהם. אפשר לראות שיש שם חלק שבו מוגדר שרת הקבצים. השרת הוא @modelcontextprotocol/server-filesystem והוא כתוב בNode אבל כרגע זה לא מעניין אותנו. הפרמטר האחרון הוא שם התיקיה שאני מנגיש. תבחרו תיקיה כלשהי ותעתיקו את שם הנתיב המדויק (אפשר באמצעות pwd) אליה.

      "filesystem": {
        "command": "npx",
        "args": [
          "-y",
          "@modelcontextprotocol/server-filesystem",
          "/Users/barzik/local/demos/mcp-cli"
        ]
      },

אני בחרתי פשוט בתיקיה של הפרויקט של mcp cli. אבל זו יכולה להיות כל תיקיה.

ההפעלה הגדולה

מוכנים לניסוי? עכשיו נפעיל את הכל! נשתמש ב-mcp cli ונבחר ב-chat ונבחר גם שהשרת filesystem יופעל.

uv run mcp-cli chat --server filesystem

ו… נקבל צ׳אט! אפשר לקיים שיחה רגילה עם המודל הדפולטיבי (4o) – כל עוד אין צורך בהפעלת שרת ה-MCP, זה שאחראי על הקבצים, הכל כרגיל. אבל… אם אני אבקש ממנו שאלה בנוסח give me a list of files in the directory – הכלי של MCP ייכנס לפעולה ו… אני אקבל רשימה של הקבצים בתיקיה שהגדרתי!

צילום מסך של בקשת טרמינל מה-AI להצגת קבצים בתיקייה, ולאחריה רשימה מסודרת של שמות קבצים ותיקיות.

זה ממש מהמם אבל… מה שכיף פה זה שאפשר להנות מהיתרונות של ה-LLM – למשל, לומר לו ליצור מרשימת הקבצים המשמימה פואמה.

פואמה מטופשת שה-LLM יצר:
וואו, איזה טקסט מקסים! הנה תרגום פיוטי לעברית של השיר **"In the Garden of Code"**:

---

### בגן הקוד

בגן הקוד שם שוכן ה־README.md,  
נרקמת לה אגדה תחת שמיים בלי גבול.  
ה־.env.example לוחש סודות של תקווה,  
וה־Makefile מזמזם מנגינה כה שקולה.

מתחת לעץ ה־.git במסתור,  
היסטוריה של שינויים שופעת כמו אור.  
ה־.gitignore שומר נאמן ונבון,  
מרחיק את הבלתי־רצוי, יוצר איזון.

עם גרסת פייתון קבועה ונכונה,  
הסקריפטים רוקדים בשמחה שקטה.  
ה־TODO.md נושא חלומות ותשוקות,  
כל משימה – שער להזדמנויות רבות.

ה־license.md מגן על כל יצירה,  
ומשמר את הברק באור השראה.  
מה־server_config.json עפים הגדרות,  
וה־test.db שומר זיכרונות.

בעמק ה־src, היכן שהלב פועם,  
הסקריפטים שוזרים קסמים בלב שלם.  
ה־uv.lock מחזיק בחיבוק יציב,  
ומביא לסימפוניה סדר עדין ומרכיב.

אז לחיים לקבצים, בפריחתם הדיגיטלית,  
בונים עולמות בדמיון וביצירתיות בלתי־נדלית.  
בגן הקוד, בו רעיונות פורחים באור,  
הם יחד יוצרים חלום שמתגשם במהותו הברור.

---

רוצה אולי עיצוב גרפי של זה, עטיפה כמו ספרון קוד-פואטי או להדפיס פוסטר? 😄

ואם התרשמתי מהסיפור הזה – למה לא כבר לבקש ממנו להכניס את זה ל-README?

ואכן, אם אני אציץ ב-README, אני אראה שהפואמה המטופשת הזו נכנסה לפעולה.

לסיכום

כמובן שזו רק ההתחלה, אפשר להשתמש בכל שרת MCP שרוצים וכמובן שהקליינט נתון לבחירתכם. בחרתי ב-mcp cli כקליינט כי מאד מאד מאד קל להשתמש בו וגם הוא מכיל שרת MCP שרוצים. ברגע שמבינים את המונחים, זה כבר נהיה פשוט ממש. כמובן שלא חייבים להשתמש ב-openAI! אפשר להשתמש גם בספקים אחרים ואפילו ב-LLM מקומי משלכם.

הרבה פעמים מדברים על הזדמנויות שעולם ה-LLM יוצר למתכנתים שמכירים LLM. הכרות עם הקונספטים של ML בכלל ו-LLM בפרט כמו RAG, inference, אימון וגם הקונספט של MCP ובפרט לקוח, שרת ועבודה איתם הם הזדמנות מעולה לאנשים טכניים ליצור פרויקטים מלהיבים במיוחד. מי שמכיר REST API יוכל גם לממש MCP בקלות וגם לפתור בעיות שמתעוררות עם הפרוטוקול הזה. עולם מרתק, ללא ספק עם המון הזדמנויות.

בפוסט הבא נראה איך יוצרים שרת MCP שיכול להתחבר לשירות שניצור.

פוסטים נוספים שכדאי לקרוא

מיקרו בקרים

חיבור מצלמה למיקרובקר

חיבור מצלמה למיקרו בקר ויצירה של מצלמת אבטחה מרחוק בעלות של 20 שקל.

גלילה לראש העמוד