ডেভ লগ: MCP, ইমেল ট্র্যাকিং এবং মেনু স্ট্রাকচার
আমি আজ সারাদিন MCP সার্ভার, স্বয়ংক্রিয় ইমেল ট্র্যাকিং এবং স্কেলেবল অ্যাডমিন মেনু তৈরির কাজে ব্যয় করেছি।
এই কাজের মূল শিক্ষাগুলো নিচে দেওয়া হলো।
MCP সার্ভার নিরাপত্তা
আমি একটি জেনেরিক MCP টুলবক্স তৈরি করেছি এবং বেশ কিছু এন্টারপ্রাইজ অ্যাপ্লিকেশনে সার্ভারগুলো ডেপ্লয় করেছি। যখন এমন এজেন্ট তৈরি করবেন যা আপনার সিস্টেমের সাথে ইন্টারঅ্যাক্ট করতে পারে, তখন এই নিয়মগুলো অনুসরণ করুন:
- এজেন্টদের 'read' টুলগুলো অবাধে ব্যবহার করতে দিন।
- 'write' টুলগুলো খুব সীমিতভাবে দিন।
- প্রতিটি 'write' অ্যাকশন অবশ্যই মানুষের মাধ্যমে যাচাইকৃত একটি রানবুকের (runbook) মাধ্যমে সম্পন্ন করুন।
- আপনার
create-userটুলগুলোতে পাসওয়ার্ড হ্যাশ (hash) করুন। কখনোই প্লেইন টেক্সট হিসেবে সংরক্ষণ করবেন না। - অডিট লগ-এর জন্য পাবলিক UUID ব্যবহার করুন। অভ্যন্তরীণ ডাটাবেস আইডি কখনো প্রকাশ করবেন না।
- ইউজার কনটেক্সটের জন্য একটি ফলব্যাক (fallback) ব্যবহার করুন। একটি এজেন্ট HTTP বা STDIO ব্যবহার করতে পারে। নিশ্চিত করুন যে আপনার কোড উভয় ক্ষেত্রেই কাজ করে।
ম্যানুয়াল কাজ ছাড়াই ইমেল ট্র্যাকিং
আমি এমন একটি সিস্টেম তৈরি করেছি যা স্বয়ংক্রিয়ভাবে ইমেল ওপেন এবং ক্লিক ট্র্যাক করে। ডেভেলপারদের প্রতিটি ইমেলে ট্র্যাকিং পিক্সেল যোগ করতে বাধ্য করবেন না। পরিবর্তে, একটি মেইল-সেন্ডিং লিসেনার (mail-sending listener) ব্যবহার করুন।
- লিসেনার মেসেজটি ইন্টারসেপ্ট করে।
- এটি HTML-এর মধ্যে ট্র্যাকিং পিক্সেল ইনজেক্ট করে।
- এটি ক্লিক ট্র্যাকিংয়ের জন্য সমস্ত লিঙ্ক র্যাপ (wrap) করে।
- এটি সহজে কোরিলেশনের জন্য একটি মেটাডেটা হ্যাশ যোগ করে।
দুটি গুরুত্বপূর্ণ বিষয়:
Mail::raw()এড়িয়ে চলুন। এটি HTML রিরাইটিং পাথটি স্কিপ করে। ট্র্যাকিং কাজ করছে কিনা তা নিশ্চিত করতে সঠিক HTML Mailables ব্যবহার করুন।- ডিফল্টভাবে ট্র্যাকিং "on" করে রাখুন। ব্যবহারকারীদের যদি এটি চালু করতে হয়, তবে তারা ভুলে যাবে।
স্কেলেবল অ্যাডমিন মেনু
যখন আপনি একাধিক অ্যাপ্লিকেশনে মেনু পরিচালনা করবেন, তখন একটি বিশাল ফাইল ব্যবহার করবেন না। প্রতিটি গ্রুপের জন্য ছোট বিল্ডার ক্লাস ব্যবহার করুন।
- প্রতিটি গ্রুপের জন্য একটি করে ক্লাস তৈরি করুন (যেমন: Settings, User Management)।
- প্রতিটি ক্লাস তার নিজস্ব আইটেম এবং প্রয়োজনীয় পারমিশন ঘোষণা করে।
- এটি আপনার নেভিগেশনকে ডিক্লেয়ারেটিভ (declarative) রাখে।
- দীর্ঘ লেবেলগুলো কম্পোনেন্টের ভেতরে ছোট (truncate) করুন, প্রতিটি আইটেমের ভিত্তিতে নয়।
- দুটি যাচাইকরণের মাধ্যমে টুলগুলোকে সুরক্ষিত রাখুন: ইউজার পারমিশন এবং নির্দিষ্ট অ্যাপ এডিশন।
বৃহত্তর প্রেক্ষাপট
লক্ষ্য হলো সেফটি নেট বা সুরক্ষা ব্যবস্থা স্বয়ংক্রিয় করা।
যদি কোনো ডায়াগনস্টিক টুল দরকারী হয়, তবে তা ডিফল্টভাবে চালু রাখুন। যদি আপনাকে এটি চালু করার কথা মনে রাখতে হয়, তবে রাত ২টায় সিস্টেম ফেইল করলে আপনি এটি ব্যবহার করতে পারবেন না। আপনার শিক্ষাগুলোকে আপনার টুলের মধ্যে এনকোড করে রাখুন যাতে আপনাকে সেগুলো বারবার শিখতে না হয়।