דלג לתוכן הראשי
מדריכים בניית MCP Server
מעודכן ליולי 2026 15 דקות קריאה מתקדם

בניית MCP Server
— לחבר את הכלים שלך ל-AI

MCP הפך ל"USB-C של ה-AI" — פרוטוקול אחד שמחבר כל מודל לכל כלי. במדריך הזה לא נסתפק בהסבר מושגי: נבנה שרת MCP משלך צעד-אחר-צעד — tools, resources, prompts, ה-transport הנכון, חיבור ל-Claude ולסוכנים, ומלכודות האבטחה שחייבים להכיר.

Tools
פעולות
Resources
מידע
Prompts
תבניות

מה זה MCP Server ולמה לבנות אחד

Model Context Protocol (MCP) הוא פרוטוקול פתוח שמגדיר איך מודל שפה (או סוכן) מדבר עם מקורות חיצוניים — בסיסי נתונים, APIs, קבצים, מערכות פנימיות. במקום לכתוב אינטגרציה ייעודית לכל מודל, אתה כותב שרת MCP אחד, וכל לקוח שתומך ב-MCP (Claude Desktop, IDEs, סוכנים) יכול להשתמש בו מיד.

מתי כדאי לבנות שרת משלך? כשיש לך יכולת פנימית שתרצה לחשוף ל-AI — לדוגמה גישה ל-CRM של החברה, שאילתות על מסד נתונים, או הפעלת workflow ב-n8n. השרת עוטף את היכולת בממשק סטנדרטי, וה-AI מקבל אליה גישה בטוחה ומבוקרת.

Client מול Server

ב-MCP יש שני צדדים: ה-host/client (Claude Desktop, סוכן) שמנהל את השיחה, וה-server (מה שתבנה) שחושף יכולות. תקשורת ביניהם היא JSON-RPC. אתה בונה את ה-server; הלקוח כבר קיים.

שלושת ה-primitives: Tools, Resources, Prompts

Transport in, primitives out — one server, three capability typesMCP SERVER · INTERNALSClaude / Agentthe clientCLIENTTransportstdio · HTTPMCP serveryour codeSERVERTools handleractions / side-effectsResources handlerread-only dataPrompts handlerreusable templatesJSON-RPCdispatchregisterregisterregister

שרת MCP חושף שלושה סוגי יכולות. חשוב להבין את ההבחנה — היא קובעת איך המודל משתמש בכל אחת:

Tools — פעולות שהמודל מפעיל
פונקציות שהמודל בוחר לקרוא להן: "שלח מייל", "חפש במסד", "צור כרטיס". יש להן קלט מובנה (schema) ופלט. זה ה-primitive הנפוץ ביותר.
Resources — מידע לקריאה
נתונים שהלקוח יכול לטעון להקשר: תוכן קובץ, רשומה, לוג. מזוהים ב-URI. בניגוד ל-tools, הם נשלטים בד"כ ע"י הלקוח/המשתמש, לא ע"י המודל.
Prompts — תבניות מוכנות
תבניות שיחה שהמשתמש בוחר ("סכם את הדוח הזה"). מופיעות בלקוח כפקודות מהירות. שימושי פחות מ-tools, אבל מצוין ל-workflows חוזרים.

Transport — stdio מול HTTP

איך הלקוח והשרת מדברים פיזית? יש שתי אפשרויות עיקריות, וזו החלטה ארכיטקטונית חשובה:

Transport איפה רץ הכי טוב ל
stdioמקומי, על אותה מכונהכלים אישיים, Claude Desktop
Streamable HTTPשרת מרוחקשירות מרובה-משתמשים, ענן

stdio — השרת רץ כתהליך מקומי והתקשורת דרך stdin/stdout. הכי פשוט להתחיל, מושלם לכלי אישי שרץ לצד Claude Desktop. Streamable HTTP — השרת רץ מרחוק ונגיש דרך HTTP; מתאים כשצריך לשרת כמה משתמשים או לפרוס בענן. התחל ב-stdio, עבור ל-HTTP כשצריך scale.

בונים שרת ראשון — עם ה-SDK הרשמי

הדרך הקלה ביותר היא ה-SDK הרשמי. ב-Python, FastMCP מאפשר להגדיר tool עם דקורטור בודד — ה-schema נגזר אוטומטית מ-type hints וה-docstring:

from mcp.server.fastmcp import FastMCP

mcp = FastMCP("weather-server")

@mcp.tool()
def get_weather(city: str) -> str:
    """מחזיר את מזג האוויר הנוכחי בעיר נתונה."""
    # כאן הלוגיקה האמיתית — קריאה ל-API אמיתי
    return f"בעיר {city}: 24°C, בהיר"

if __name__ == "__main__":
    mcp.run()  # ברירת מחדל: transport של stdio

זהו — יש לך שרת MCP עובד עם tool אחד. שלושה עקרונות שהופכים tool לטוב:

בדיקה לפני חיבור

לפני שמחברים ללקוח, בדוק את השרת עם MCP Inspector — כלי רשמי שמריץ את השרת ומאפשר לקרוא ל-tools ידנית ולראות את התשובות. חוסך שעות דיבוג מול Claude.

חיבור ל-Claude ולסוכנים

אחרי שהשרת עובד, מחברים אותו ללקוח. Claude Desktop קורא קובץ הגדרות JSON שבו רושמים את פקודת ההרצה של השרת — הלקוח מריץ אותו אוטומטית ומגלה את ה-tools. סוכנים (LangGraph, Claude Agent SDK ואחרים) יכולים להתחבר ל-MCP servers כמקור כלים, כך שאותו שרת משרת גם צ'אט אנושי וגם אוטומציה.

זה בדיוק הכוח של MCP: כתבת את השרת פעם אחת, ועכשיו הוא זמין ל-Claude Desktop, ל-IDE, ולכל סוכן שתבנה — בלי לשכפל קוד. ה-framework של הסוכן רק צריך לדעת לדבר MCP.

מהשטח · המלכודת של stdio
הבאג הקלאסי בבניית שרת MCP מעל stdio: הדפסת לוג ל-stdout. ב-stdio הפרוטוקול הוא JSON-RPC על גבי stdout — כל print() או console.log מזהם את הזרם, ו-Claude פשוט 'לא רואה' את הכלים בלי שום שגיאה ברורה. הפתרון: כל הלוגים ל-stderr בלבד. סימפטום מזהה — השרת עובד מושלם כשמריצים אותו ידנית, אבל דרך הסוכן: כלום.

הערת ארכיטקט: הפרד נכון בין Tools (פעולות שהמודל מפעיל) ל-Resources (מידע לקריאה). ותיאורי הכלים הם ה-'prompt' של השרת — תיאור מעורפל = המודל בוחר כלי לא נכון. תמציתי, מדויק, עם דוגמת קלט.

אבטחה ומלכודות נפוצות

שרת MCP חושף יכולות אמיתיות ל-AI — ולכן הוא גם משטח תקיפה. אלה הדברים שאסור לפספס:

המלכודת הכי נפוצה: יותר מדי tools

מפתה לחשוף עשרות tools "ליתר ביטחון". אבל כל tool צורך טוקנים בהקשר ומבלבל את המודל בבחירה. שרת עם 5 tools ממוקדים עדיף על שרת עם 30. חשוף את מה שבאמת נחוץ.