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

נשמע מאד מדליק ושימושי ואכן זה אמור להיות. מי שהציעה את הפרוטוקול הזה היא חברת אנטרופיק (זו שמפתחת את קלוד) והיא מימשה אותו מייד באפליקצית הדסקטופ שלה. זה קרה בנובמבר 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 – אם יש צורך נרשמים ורוכשים בכמה דולרים קרדיטים ואז יוצרים טוקן חדש.

נכניס אותו כמקובל למשתנה סביבה באמצעות:
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 ייכנס לפעולה ו… אני אקבל רשימה של הקבצים בתיקיה שהגדרתי!

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

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

ואכן, אם אני אציץ ב-README, אני אראה שהפואמה המטופשת הזו נכנסה לפעולה.
לסיכום
כמובן שזו רק ההתחלה, אפשר להשתמש בכל שרת MCP שרוצים וכמובן שהקליינט נתון לבחירתכם. בחרתי ב-mcp cli כקליינט כי מאד מאד מאד קל להשתמש בו וגם הוא מכיל שרת MCP שרוצים. ברגע שמבינים את המונחים, זה כבר נהיה פשוט ממש. כמובן שלא חייבים להשתמש ב-openAI! אפשר להשתמש גם בספקים אחרים ואפילו ב-LLM מקומי משלכם.
הרבה פעמים מדברים על הזדמנויות שעולם ה-LLM יוצר למתכנתים שמכירים LLM. הכרות עם הקונספטים של ML בכלל ו-LLM בפרט כמו RAG, inference, אימון וגם הקונספט של MCP ובפרט לקוח, שרת ועבודה איתם הם הזדמנות מעולה לאנשים טכניים ליצור פרויקטים מלהיבים במיוחד. מי שמכיר REST API יוכל גם לממש MCP בקלות וגם לפתור בעיות שמתעוררות עם הפרוטוקול הזה. עולם מרתק, ללא ספק עם המון הזדמנויות.
בפוסט הבא נראה איך יוצרים שרת MCP שיכול להתחבר לשירות שניצור.
תגובה אחת
היי רן,
תודה על הפוסט המעניין.
יכול לפרט יותר על מסלול הבקשה והתשובה מהרגע שאתה שולח שאלה בקליינט, דרך הסרבר של MCP, השרת של OPENAI וכו'? מה הסדר ומה קורה בכל שלב
תודה