ایک Laravel ایپ کے اندر MCP Server لگانا

AI ایجنٹس کو صرف اسکریپ شدہ (scraped) UI سے زیادہ کی ضرورت ہوتی ہے۔ انہیں مناسب اجازتوں (permissions) کے ساتھ مخصوص ٹولز کو کال کرنے کا ایک طریقہ چاہیے۔ Model Context Protocol (MCP) یہی کام کرتا ہے۔

میں نے حال ہی میں براہ راست ایک Laravel ایپلی کیشن میں MCP سرور کو انٹیگریٹ کیا ہے۔ میں اسے محفوظ طریقے سے بنانے کے لیے کیے گئے آرکیٹیکچرل فیصلوں (architectural decisions) کو شیئر کرنا چاہتا ہوں۔

ریسپشنسٹ (Receptionist) کی مثال

اپنی ایپ کو ایک دفتر کی عمارت تصور کریں۔

  • ویب UI انسانوں کے لیے لابی ہے۔
  • REST API سسٹمز کے لیے اسٹاف کا داخلی راستہ ہے۔
  • MCP سرور AI ایجنٹس کے لیے ریسپشن ڈیسک ہے۔

ایجنٹ اپنی آئی ڈی دکھاتا ہے اور ایک مخصوص کام کے لیے کہتا ہے۔ ریسپشنسٹ انہیں عمارت کی چابیاں نہیں دیتا۔ وہ اجازتوں (permissions) کی جانچ کرتے ہیں، ایک کام انجام دیتے ہیں، اور ایک منظم (structured) جواب واپس کرتے ہیں۔

اہم ڈیزائن کے فیصلے

1. ایک ہی اینڈ پوائنٹ (endpoint) استعمال کریں

مختلف ٹولز کے لیے بہت سے روٹس (routes) نہ بنائیں۔ صرف ایک /mcp اینڈ پوائنٹ استعمال کریں۔ پروٹوکول خود بخود ٹول ڈسکوری (tool discovery) کو سنبھال لیتا ہے۔ ایک ہی سطح (surface) کو محفوظ بنانا اور اس کی دستاویز سازی (document) کرنا آسان ہوتا ہے۔

2. دوہری توثیق (dual authentication) کی حمایت کریں

مختلف کالرز کو مختلف سیکیورٹی طریقوں کی ضرورت ہوتی ہے:

  • فرسٹ پارٹی کالرز (جیسے CLI ٹولز) Sanctum personal access tokens استعمال کرتے ہیں۔
  • تھرڈ پارٹی ایجنٹس (جو صارفین کی طرف سے کام کرتے ہیں) OAuth 2.1 استعمال کرتے ہیں۔

دونوں کو سنبھالنے کے لیے ڈرائیور اسٹائل ریزولور (driver-style resolver) استعمال کریں۔ ٹول کوڈ کو صرف تصدیق شدہ صارف (authenticated user) سے مطلب ہونا چاہیے، اس سے نہیں کہ انہوں نے لاگ ان کیسے کیا۔

3. موجودہ RBAC کو نافذ کریں

Authentication صرف یہ ثابت کرتی ہے کہ کالر کون ہے۔ آپ کو اب بھی یہ چیک کرنا ہوگا کہ وہ کیا کر سکتے ہیں۔ ہر ٹول کو ایک موجودہ صلاحیت (ability) کے ساتھ منسلک ہونا چاہیے۔ اگر کوئی صارف ویب UI میں شرکاء (participants) کو نہیں دیکھ سکتا، تو اسے MCP کے ذریعے بھی ایسا کرنے کی اجازت نہیں ہونی چاہیے۔

4. ڈیٹا آؤٹ پٹ کو محدود کریں

کبھی بھی مکمل ڈیٹا بیس ماڈل واپس نہ کریں۔ MCP آؤٹ پٹ کے ساتھ ایک پبلک API کی طرح پیش رفت کریں۔ صرف وہی مخصوص فیلڈز واپس کریں جن کی ایجنٹ کو ضرورت ہے۔ یہ حادثاتی طور پر ڈیٹا لیک ہونے سے روکتا ہے۔

سیکیورٹی کے لیے ٹیسٹنگ

آپ کے ٹیسٹ یہ ثابت کرنے چاہئیں کہ سسٹم صحیح طریقے سے ناکام (fail) ہوتا ہے۔ یہ ٹیسٹ کریں کہ:

  • ایک غیر مجاز (unauthorized) صارف کو 403 Forbidden ایرر ملے۔
  • ایک مجاز (authorized) صارف کو صرف اجازت شدہ فیلڈز ملیں۔

خود مختار ایجنٹس (autonomous agents) استعمال کرتے وقت ڈیٹا لیک سے بچنے کے لیے ایک اچھا ٹیسٹ سویٹ (test suite) آپ کا بہترین دفاع ہے۔

خلاصہ

ایک ذمہ دار MCP سرور بنانے کے لیے، ان تین اصولوں پر عمل کریں:

  • صحیح اسکیم (scheme) کا استعمال کرتے ہوئے ہر کالر کی Authentication کریں۔
  • اپنے موجودہ پرمیشن ماڈل کا استعمال کرتے ہوئے ہر ٹول کو Authorize کریں۔
  • ہر ٹول کے آؤٹ پٹ کو ایک محدود عوامی وسیلے (public resource) کے طور پر سمجھیں۔

Source: https://dev.to/nasrulhazim/putting-an-mcp-server-inside-a-laravel-app-dual-auth-and-rbac-for-ai-tools-5376