הטמעת שרת MCP בתוך אפליקציית Laravel
סוכני AI זקוקים ליותר מאשר רק ממשק משתמש (UI) שנגרף. הם זקוקים לדרך לקרוא לכלים ספציפיים עם הרשאות מתאימות. זה בדיוק מה שפרוטוקול Model Context Protocol (MCP) עושה.
לאחרונה שילבתי שרת MCP ישירות בתוך אפליקציית Laravel. אני רוצה לשתף את ההחלטות הארכיטקטוניות לבנייה מאובטחת של המערכת הזו.
מטאפורת פקיד הקבלה
חשבו על האפליקציה שלכם כעל בניין משרדים.
- ממשק ה-web UI הוא הלובי עבור בני אדם.
- ה-REST API הוא כניסת העובדים עבור מערכות.
- שרת ה-MCP הוא דלפק הקבלה עבור סוכני AI.
הסוכן מציג מזהה (ID) ומבקש משימה ספציפית. פקיד הקבלה לא נותן לו את המפתחות לבניין. הוא בודק הרשאות, מבצע משימה אחת, ומחזיר תשובה מובנית.
החלטות עיצוב מרכזיות
שימוש ב-endpoint יחיד אל תיצרו נתיבים (routes) רבים עבור כלים שונים. השתמשו ב-endpoint אחד:
/mcp. הפרוטוקול מטפל בגילוי כלים (tool discovery) באופן אוטומטי. משטח פנים יחיד קל יותר לאבטחה ולתיעוד.תמיכה באימות כפול (dual authentication) לקוראים (callers) שונים נדרשות שיטות אבטחה שונות:
- קוראים מהצד הראשון (כמו כלי CLI) משתמשים ב-Sanctum personal access tokens.
- סוכנים מצד שלישי (הפועלים בשם משתמשים) משתמשים ב-OAuth 2.1.
השתמשו ב-resolver בסגנון driver כדי לטפל בשניהם. קוד הכלי צריך להתעניין רק במשתמש המאומת, ולא באופן שבו הוא התחבר.
אכיפת RBAC קיים אימות (Authentication) מוכיח רק מי הקורא. אתם עדיין חייבים לבדוק מה מותר לו לעשות. כל כלי צריך להיות ממופה ליכולת (ability) קיימת. אם משתמש אינו יכול לצפות במשתתפים בממשק ה-web UI, הוא לא אמור להיות מסוגל לעשות זאת דרך MCP.
הגבלת פלט הנתונים לעולם אל תחזירו מודל מסד נתונים (database model) מלא. התייחסו לפלט ה-MCP כמו ל-API ציבורי. החזירו רק את השדות הספציפיים שהסוכן זקוק להם. זה מונע דליפות נתונים מקריות.
בדיקות אבטחה
הבדיקות שלכם חייבות להוכיח שהמערכת נכשלת בצורה נכונה. בדקו ש:
- משתמש לא מורשה מקבל שגיאת 403 Forbidden.
- משתמש מורשה מקבל רק את השדות המותרים.
סט בדיקות טוב הוא ההגנה הטובה ביותר שלכם מפני דליפות נתונים בעת שימוש בסוכנים אוטונומיים.
סיכום
כדי לבנות שרת MCP אחראי, עקבו אחר שלושת הכללים הללו:
- אמותו (Authenticate) כל קורא באמצעות הסכימה המתאימה.
- הרשו (Authorize) כל כלי באמצעות מודל ההרשאות הקיים שלכם.
- התייחסו לכל פלט של כלי כאל משאב ציבורי מוגבל.
