একটি Laravel অ্যাপের ভেতরে একটি MCP Server স্থাপন করা

AI এজেন্টদের শুধুমাত্র স্ক্র্যাপ করা UI-এর চেয়েও বেশি কিছু প্রয়োজন। তাদের সঠিক পারমিশন বা অনুমতিসহ নির্দিষ্ট টুলস কল করার একটি উপায় প্রয়োজন। Model Context Protocol (MCP) ঠিক এই কাজটিই করে।

আমি সম্প্রতি সরাসরি একটি Laravel অ্যাপ্লিকেশনে একটি MCP server ইন্টিগ্রেট করেছি। এটি নিরাপদে তৈরির জন্য আমি যে আর্কিটেকচারাল সিদ্ধান্তগুলো নিয়েছি, তা আমি শেয়ার করতে চাই।

রিসেপশনিস্ট রূপক

আপনার অ্যাপটিকে একটি অফিস বিল্ডিং হিসেবে কল্পনা করুন।

  • Web UI হলো মানুষের জন্য লবি।
  • REST API হলো সিস্টেমের জন্য স্টাফ এন্ট্রান্স।
  • MCP server হলো AI এজেন্টদের জন্য একটি রিসেপশন ডেস্ক।

এজেন্টটি একটি ID দেখায় এবং একটি নির্দিষ্ট কাজের জন্য অনুরোধ করে। রিসেপশনিস্ট তাদের বিল্ডিংয়ের চাবি দিয়ে দেন না। তারা পারমিশন যাচাই করেন, একটি নির্দিষ্ট কাজ সম্পন্ন করেন এবং একটি স্ট্রাকচার্ড উত্তর প্রদান করেন।

মূল ডিজাইনের সিদ্ধান্তসমূহ

১. একটি মাত্র এন্ডপয়েন্ট ব্যবহার করুন

বিভিন্ন টুলের জন্য অনেকগুলো রুট তৈরি করবেন না। একটি মাত্র /mcp এন্ডপয়েন্ট ব্যবহার করুন। প্রোটোকলটি স্বয়ংক্রিয়ভাবে টুল ডিসকভারি (tool discovery) হ্যান্ডেল করে। একটি মাত্র সারফেস সিকিউর করা এবং ডকুমেন্ট করা সহজ।

২. ডুয়াল অথেন্টিকেশন সাপোর্ট করুন

ভিন্ন ভিন্ন কলারের জন্য ভিন্ন ভিন্ন সিকিউরিটি মেথড প্রয়োজন:

  • ফার্স্ট-পার্টি কলার (যেমন CLI টুলস) Sanctum personal access tokens ব্যবহার করে।
  • থার্ড-পার্টি এজেন্ট (ব্যবহারকারীর হয়ে কাজ করে) OAuth 2.1 ব্যবহার করে।

উভয়টি হ্যান্ডেল করার জন্য একটি ড্রাইভার-স্টাইল রিজলভার (driver-style resolver) ব্যবহার করুন। টুলের কোড শুধুমাত্র অথেন্টিকেটেড ইউজারের বিষয়ে সচেতন হওয়া উচিত, তারা কীভাবে লগ-ইন করেছে তা নিয়ে নয়।

৩. বিদ্যমান RBAC প্রয়োগ করুন

অথেন্টিকেশন শুধুমাত্র প্রমাণ করে যে কলার কে। তাদের কী করার ক্ষমতা আছে তা আপনাকে এখনও যাচাই করতে হবে। প্রতিটি টুল একটি বিদ্যমান অ্যাবিলিটির (ability) সাথে ম্যাপ করা উচিত। যদি একজন ব্যবহারকারী Web UI-তে অংশগ্রহণকারীদের দেখতে না পারেন, তবে তিনি MCP-এর মাধ্যমেও তা করতে পারবেন না।

৪. ডেটা আউটপুট সীমিত রাখুন

কখনোই একটি পূর্ণাঙ্গ ডাটাবেস মডেল রিটার্ন করবেন না। MCP আউটপুটকে একটি পাবলিক API হিসেবে বিবেচনা করুন। এজেন্টটির শুধুমাত্র যে নির্দিষ্ট ফিল্ডগুলো প্রয়োজন, সেগুলোই রিটার্ন করুন। এটি দুর্ঘটনাবশত ডেটা লিক হওয়া রোধ করে।

নিরাপত্তার জন্য টেস্টিং

আপনার টেস্টগুলো অবশ্যই প্রমাণ করতে হবে যে সিস্টেমটি সঠিকভাবে ব্যর্থ হচ্ছে (fails correctly)। পরীক্ষা করুন যে:

  • একজন অননুমোদিত (unauthorized) ব্যবহারকারী একটি 403 Forbidden এরর পাচ্ছেন।
  • একজন অনুমোদিত (authorized) ব্যবহারকারী শুধুমাত্র অনুমোদিত ফিল্ডগুলো পাচ্ছেন।

অটোনোমাস এজেন্ট ব্যবহারের সময় ডেটা লিক প্রতিরোধের জন্য একটি ভালো টেস্ট স্যুট হলো আপনার সেরা প্রতিরক্ষা।

সারসংক্ষেপ

একটি দায়িত্বশীল MCP server তৈরি করতে এই তিনটি নিয়ম অনুসরণ করুন:

  • সঠিক স্কিম ব্যবহার করে প্রতিটি কলারকে অথেন্টিকেট করুন।
  • আপনার বিদ্যমান পারমিশন মডেল ব্যবহার করে প্রতিটি টুলকে অথরাইজ করুন।
  • প্রতিটি টুলের আউটপুটকে একটি সীমিত পাবলিক রিসোর্স হিসেবে বিবেচনা করুন।

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