מהו MCP?
MCP הוא פרוטוקול פתוח המאפשר ליישומים ומודלים גדולים (LLMs) להתחבר בצורה סטנדרטית ל־כלים (Tools),
משאבים (Resources) ו־תבניות פרומפט (Prompts).
שרת MCP משמש כ”שכבת תיווך” שמפקחת על זרימת המידע: המודל לא ניגש ישירות למסד הנתונים או ל־API,
אלא דרך השרת שמחזיר רק את המידע המאושר והרלוונטי.
החלטות תכנון שרת MCP
לפני שמתחילים חשוב לבחור:
טרנספורט
STDIO – מתאים לפיתוח מקומי, הרצת השרת כתהליך משנה. אין לכתוב ל־stdout לוגים, אלא ל־stderr.
Streamable HTTP – שרת עצמאי עם נקודת קצה אחת, כולל אפשרות לסטרימינג. מתאים לפרודקשן.
שפה ו־SDK
קיימים SDKs ל־TypeScript, Python, Go, Java, Rust, ועוד. הבחירה תלויה בסביבת הפיתוח הארגונית.
מושגי יסוד של שרתי MCP
Tools – פונקציות שניתנות לגילוי ולהפעלה עם סכמות קלט/פלט מוגדרות.
Resources – משאבים נגישים בקריאה לפי URI (למשל קובץ או API).
Prompts – תבניות הודעות מוכנות לשימוש עם פרמטרים.
הקמת שרת MCP מהירה ב־Python
יצירת פרויקט והתקנות
# יצירת פרויקט חדש
uv init my_mcp_server && cd my_mcp_server
uv venv && source .venv/bin/activate
# התקנת ספריות
uv add “mcp[cli]” httpx
קוד שרת בסיסי (Tool פשוט)
from mcp.server.fastmcp import FastMCP
mcp = FastMCP(“demo”)
@mcp.tool()
def add(a: int, b: int) -> int:
“””Add two numbers”””
return a + b
if __name__ == “__main__”:
mcp.run(transport=”stdio”)
הרצה ובדיקה לוקלית
מוסיפים את השרת לקובץ הגדרות של הלקוח (למשל Claude Desktop), מפעילים מחדש,
ומוודאים שה־Tool מופיע ברשימה.
מעבר לשרת רשת (HTTP)
from mcp.server.fastmcp import FastMCP
mcp = FastMCP(“demo”)
@mcp.tool()
def hello(name: str) -> str:
return f”Hello, {name}!”
if __name__ == “__main__”:
mcp.run(transport=”http”, host=”127.0.0.1″, port=8000)
שרת זה יאזין לבקשות MCP בנקודת הקצה /mcp.
אבטחה ותפעול בטוח
ב־STDIO – לוגים רק ל־stderr.
ב־HTTP – יש לאכוף בדיקת Origin, להשתמש באימות (OAuth 2.1), ולהימנע מ־Token Passthrough.
הגבלת קצב קריאות לכלים (Rate Limiting) ובדיקת סכמות קלט/פלט מונעות שגיאות ופרצות.
חובה להחזיר את כותרת MCP-Protocol-Version כדי לשמור תאימות קדימה ואחורה.
פריסה (Deployment)
Dockerfile בסיסי
FROM python:3.11-slim
WORKDIR /app
COPY server_http.py /app/server_http.py
RUN pip install –no-cache-dir “mcp[cli]” httpx
EXPOSE 8000
CMD [“python”, “server_http.py”]
Kubernetes (דוגמה)
apiVersion: apps/v1
kind: Deployment
metadata:
name: mcp-server
spec:
replicas: 2
selector: { matchLabels: { app: mcp-server } }
template:
metadata: { labels: { app: mcp-server } }
spec:
containers:
– name: app
image: my-mcp:latest
ports: [{ containerPort: 8000 }]
—
apiVersion: v1
kind: Service
metadata:
name: mcp-server
spec:
selector: { app: mcp-server }
ports:
– name: http
port: 80
targetPort: 8000
בדיקות מקצה-לקצה
גילוי – להריץ tools/list, resources/list, prompts/list.
הפעלה – לבדוק tools/call עם קלטים נכונים ושגויים.
אבטחה – לבחון טיפול ב־401/403, ולוודא ששרת דוחה טוקנים לא תקפים.
תאימות – לבדוק שימוש בגרסאות פרוטוקול שונות עם MCP-Protocol-Version.
מראי מקומות והרחבות למדריך
תיעוד פרוטוקול MCP – JSON-RPC 2.0 וארכיטקטורת MCP.
מסמכי טרנספורט STDIO ו־Streamable HTTP.
מדריך Server Quickstart (דוגמת שרת מזג אוויר).
מדריך Tools API – גילוי והפעלה.
מדריך Resources API – קריאת משאבים.
מדריך Prompts API – תבניות הודעות.
מדריך אבטחה – Origin, OAuth 2.1 Resource Server, Token Restrictions.
ספריות SDK רשמיות (Python, TypeScript, Go, Java, Rust).
FastMCP – ספריית עזר לפיתוח שרתי MCP בפייתון.

