حل مشکل احراز هویت MCP در مقیاس بالا

شما یک سرور MCP ساخته‌اید. روی لپ‌تاپ شما به خوبی کار می‌کند. دستیار هوش مصنوعی شما می‌تواند تیکت‌های Jira ایجاد کند و از پایگاه‌های داده پرس‌وجو (query) بگیرد. همه چیز عالی است تا زمانی که یکی از همکارانتان بخواهد از آن استفاده کند.

اگر می‌خواهید MCP خود را به عنوان یک محصول بفروشید، با مشکل جدیدی روبرو می‌شوید. شما باید از چندین کاربر پشتیبانی کنید. هر کاربر به کلیدهای API و دسترسی امن مخصوص به خود نیاز دارد.

اکثر توسعه‌دهندگان در اینجا شکست می‌خورند. آن‌ها دو رویکرد اشتباه را امتحان می‌کنند.

اولین مورد، راه‌اندازی دستی است. شما به کاربران می‌گویید مخزن (repo) را کلون کنند، وابستگی‌ها (dependencies) را نصب کنند و کلیدهای محیطی محلی را تنظیم کنند. این کار ساعت‌ها زمان می‌برد. اکثر کاربران قبل از اینکه کارشان تمام شود، منصرف می‌شوند.

دومین مورد، کابوس سرورلس (serverless) است. شما برنامه را روی Cloud Run یا Vercel مستقر می‌کنید. از آنجایی که پلتفرم‌های سرورلس نشست‌ها (sessions) را ذخیره نمی‌کنند، هر درخواست به یک نمونه (instance) جدید برخورد می‌کند. کاربران شما در یک حلقه گیر می‌افتند. آن‌ها احراز هویت می‌کنند، اما با کلیک بعدی دوباره از آن‌ها خواسته می‌شود که احراز هویت کنند. این یک محصول نیست؛ این یک نمونه اولیه (prototype) خراب است.

ما این مشکل را در BrainGrid حل کردیم. ما از یک ابزار محلی به یک زیرساخت آماده برای تولید (production-ready) حرکت کردیم. در اینجا نحوه انجام آن را توضیح می‌دهیم.

  • استفاده از Redis Session Store: نمونه‌های سرورلس از بین می‌روند و دوباره راه‌اندازی می‌شوند. شما نمی‌توانید نشست‌ها را در حافظه (memory) ذخیره کنید. از Redis استفاده کنید تا داده‌های نشست را در تمام نمونه‌ها زنده نگه دارید.
  • پیاده‌سازی کش چندلایه (Multi-Tier Caching): ابتدا حافظه محلی را بررسی کنید. اگر آنجا نبود، Redis را چک کنید. این کار از اعتبارسنجی پرهزینه JWT در هر درخواست جلوگیری می‌کند.
  • رمزنگاری داده‌های حساس: از AES-256-GCM برای رمزنگاری داده‌های نشست قبل از قرار دادن آن‌ها در Redis استفاده کنید. این کار اطلاعات کاربر را ایمن نگه می‌دارد.
  • استفاده از الگوهای صحیح OAuth: کلاینت‌های MCP انتظار جریان‌های کشف (discovery flows) خاصی را دارند. شما باید هدرهای WWW-Authenticate خود را به درستی فرمت‌بندی کنید تا از بروز خطا جلوگیری شود.
  • بهینه‌سازی برای سرعت: اعتبارسنجی JWT باعث ایجاد تأخیر (latency) می‌شود. با کش کردن نشست‌های تأیید شده، ما زمان پاسخ‌دهی را به طور قابل توجهی کاهش دادیم.

نتیجه، سیستمی است که از یک کاربر تا هزار کاربر مقیاس‌پذیر است. هزینه اجرای آن بسیار کم است و با ارائه‌دهندگانی مانند WorkOS یا Auth0 ادغام می‌شود.

از ساختن ابزار برای خودتان دست بردارید. ساخت زیرساخت برای مشتریانتان را شروع کنید.

منبع: https://dev.to/braingrid/from-local-hack-to-production-ready-how-we-solved-the-braingrids-mcp-multi-tenant-authentication-1m5e