AI Extensions: MCP SDK 2.3.0 ל-Python ול-TypeScript מהדק את הקצוות
שרת שמקבל בשקט הפניה למארח אחר, או מערך ארגומנטים בלי גבול, סומך יותר ממה שכותבו אולי התכוון.

שרת שמקבל בשקט הפניה למארח אחר, או מערך ארגומנטים בלי גבול, סומך יותר ממה שכותבו אולי התכוון. ערכות MCP ל-Python ול-TypeScript הוציאו שתיהן את 2.3.0 ב-2 באוקטובר, וחלק מהשינויים נוגע בדיוק בקצוות האלה.
בקצרה
פרויקטים רשמיים: modelcontextprotocol/python-sdk (MIT) ו-modelcontextprotocol/typescript-sdk (רישיון במעבר מ-MIT ל-Apache-2.0). שניהם הוציאו v2.3.0 ב-2 באוקטובר. נצפה ב-3 באוקטובר: Python SDK עם 24,468 כוכבים, 4,006 פורקים ודחיפה אחרונה ב-2 באוקטובר 22:02:27 UTC; TypeScript SDK עם 13,504 כוכבים, 2,248 פורקים ודחיפה אחרונה ב-2 באוקטובר 19:24:26 UTC. כוכבים מודדים תשומת לב ולא איכות או בטיחות. קראתי את הגרסאות ולא התקנתי או הרצתי אף ערכה. ↗
Python SDK גרסה 2.3.0
פורסם ב-2 באוקטובר ב-22:02:27 UTC, ומותקן ב-pip install -U mcp לפי הערות הגרסה. ההערות פותחות בשינויי התנהגות: נדרש httpx2 מגרסה 2.10.0 ומעלה; כלי עם הערת x-mcp-header לא תקינה נכשל ברישום במקום להיעלם בשקט מרשימות הלקוח; _meta ו-params ריקים כבר לא נשלחים בחיבורים ישנים; והתחברות OAuth אינטראקטיבית כבר לא נספרת במגבלת זמן הבקשה. אפשרויות חדשות כוללות max_sse_event_size (ברירת המחדל נשארת 1 MiB לאירוע SSE) ו-MCPServer(subscriptions=False). ↗
TypeScript SDK גרסה 2.3.0
פורסם ב-2 באוקטובר ב-17:55:03 UTC. הערות השדרוג אומרות שמופע שרת דוחה כעת connect() כשהוא כבר מחובר, ולכן שרתי HTTP חסרי מצב צריכים ליצור שרת ותעבורה לכל בקשה. תעבורות HTTP של הלקוח עוקבות אחר הפניה רק כשהיא נשארת באותו origin, אלא אם redirectPolicy מוגדר ל-follow. אפשרויות חדשות כבויות כברירת מחדל: maxToolInputElements מגביל את מספר איברי המערכים וחברי האובייקטים בארגומנטי כלי, ו-expectedResource באימות אסימון נושא מקבל רק אסימונים שהונפקו לשרת הזה. המתחזקים מדווחים שתוצאת כלי של 100MB באירוע אחד ירדה מכדקה ו-1.7GB זיכרון שיא לפחות משנייה וכ-0.5GB. זו הבדיקה שלהם, לא שלי. ↗
לפני ההתקנה: רישיונות, תחזוקה, הגדרה
קובץ LICENSE של Python SDK הוא MIT. ה-LICENSE של TypeScript SDK מציין מעבר מ-MIT ל-Apache-2.0: קוד חדש תחת Apache-2.0, תרומות ישנות בלי הסכמה לרישוי מחדש נשארות MIT, ותיעוד פרט למפרטים הוא CC-BY-4.0, כך שלקרוא לו רק MIT או רק Apache-2.0 אינו מדויק. שני המאגרים קיבלו דחיפה בתוך יום מהבדיקה שלי ושניהם הוציאו גרסה באותו יום: זו פעילות ולא הוכחה להתאמה לשרת שלכם. לניסוי, קבעו גרסה, קראו את הערות השדרוג לתעבורה שלכם ובדקו קודם על שרת ניסוי.
איפה עוברים קווי ההרשאה
הניתוח שלי: שלושה מהשינויים מצמצמים מה שרת או לקוח מקבלים. כלל הפניה באותו origin מגביל לאן בקשה יכולה להגיע, תקרת איברי קלט מגבילה כמה קריאה יכולה לשאת, ובדיקת קהל קושרת אסימון לשרת אחד. כולם כבויים או ניתנים להגדרה, ואף אחד לא מחליף אימות, הרשאה לכל כלי והתייחסות לתוצאות כלים כתוכן לא מהימן. העלאת max_sse_event_size או הגדרת redirectPolicy ל-follow מרפה מגבלה בכוונה, ולכן תעדו למה.
רשימת בדיקה שכתבתי
הקוד שלהלן הוא כלל הפניה מפושט עם כתובות בדויות שהרצתי מקומית. הוא מתיר אותו origin ושדרוג מ-http ל-https באותו מארח, ודוחה מארח או פורט אחר. זו לא המימוש של הערכה: קראו את אפשרות התעבורה ובדקו את התנהגות ההפניה האמיתית על נקודת ניסוי.
הרשימה בקוד
from urllib.parse import urlsplit
def origin(url):
u = urlsplit(url)
port = u.port or {"http": 80, "https": 443}[u.scheme]
return (u.scheme, u.hostname, port)
def follow(src, dst):
a, b = origin(src), origin(dst)
if a == b:
return True
# http to https on the same host and default ports is allowed
return a[1] == b[1] and (a[0], b[0]) == ("http", "https") and a[2] == 80 and b[2] == 443
assert follow("https://api.example.test/mcp", "https://api.example.test/v2/mcp")
assert follow("http://api.example.test/mcp", "https://api.example.test/mcp")
assert not follow("https://api.example.test/mcp", "https://other.example.test/mcp")
assert not follow("https://api.example.test/mcp", "https://api.example.test:8443/mcp")
print("redirect policy checks passed")
# Invented URLs and a simplified rule, not the SDK's implementation.
מקורות ומגבלות
- https://github.com/modelcontextprotocol/python-sdk
- https://github.com/modelcontextprotocol/python-sdk/releases/tag/v2.3.0
- https://github.com/modelcontextprotocol/python-sdk/blob/main/LICENSE
- https://github.com/modelcontextprotocol/typescript-sdk
- https://github.com/modelcontextprotocol/typescript-sdk/releases/tag/v2.3.0
- https://github.com/modelcontextprotocol/typescript-sdk/blob/main/LICENSE