گزارش توسعه: MCP، ردیابی ایمیل و ساختار منو

من امروز را صرف ساخت سرورهای MCP، ردیابی خودکار ایمیل و منوهای مدیریت مقیاس‌پذیر کردم.

در اینجا درس‌های اصلی حاصل از این کار آمده است.

امنیت سرور MCP

من یک جعبه‌ابزار عمومی MCP عرضه کردم و سرورها را در چندین اپلیکیشن سازمانی مستقر کردم. هنگام ساخت عامل‌هایی (agents) که می‌توانند با سیستم‌های شما تعامل داشته باشند، این قوانین را دنبال کنید:

  • ابزارهای خواندن (read tools) را آزادانه در اختیار عامل‌ها قرار دهید.
  • ابزارهای نوشتن (write tools) را با احتیاط و در حد نیاز ارائه دهید.
  • هر اقدام نوشتن را از طریق یک دستورالعمل اجرایی (runbook) که نیاز به تایید انسانی دارد، عبور دهید.
  • در ابزارهای ساخت کاربر (create-user)، رمزهای عبور را هش (hash) کنید. هرگز آن‌ها را به صورت متن ساده (plaintext) ذخیره نکنید.
  • برای گزارش‌های بازرسی (audit logs) از UUIDهای عمومی استفاده کنید. هرگز شناسه‌های داخلی پایگاه داده را فاش نکنید.
  • برای بافت کاربر (user context) از یک حالت جایگزین (fallback) استفاده کنید. یک عامل ممکن است از HTTP یا STDIO استفاده کند. مطمئن شوید کد شما هر دو را مدیریت می‌کند.

ردیابی ایمیل بدون نیاز به کار دستی

من سیستمی ساختم که باز شدن و کلیک‌های ایمیل را به طور خودکار ردیابی می‌کند. توسعه‌دهندگان را مجبور نکنید که برای هر ایمیل پیکسل ردیابی (tracking pixel) اضافه کنند. در عوض، از یک شنونده (listener) ارسال ایمیل استفاده کنید.

  • شنونده پیام را رهگیری می‌کند.
  • پیکسل ردیابی را به HTML تزریق می‌کند.
  • تمام لینک‌ها را برای ردیابی کلیک، پوشش (wrap) می‌دهد.
  • یک هش متادیتا برای همبستگی (correlation) آسان اضافه می‌کند.

دو نکته مهم:

  • از Mail::raw() استفاده نکنید. این متد مسیر بازنویسی HTML را نادیده می‌گیرد. برای اطمینان از عملکرد ردیابی، از HTML Mailables مناسب استفاده کنید.
  • ردیابی را به طور پیش‌فرض روی "on" قرار دهید. اگر کاربران مجبور باشند آن را فعال کنند، فراموش خواهند کرد.

منوهای مدیریت مقیاس‌پذیر

وقتی منوها را در چندین اپلیکیشن مدیریت می‌کنید، از یک فایل غول‌آسا استفاده نکنید. برای هر گروه از کلاس‌های سازنده (builder classes) کوچک استفاده کنید.

  • برای هر گروه یک کلاس ایجاد کنید (مثلاً Settings، User Management).
  • هر کلاس آیتم‌های خود و مجوزهای مورد نیاز را اعلام می‌کند.
  • این کار باعث می‌شود ناوبری (navigation) شما حالت اعلامی (declarative) داشته باشد.
  • برچسب‌های طولانی را داخل خودِ کامپوننت کوتاه (truncate) کنید، نه به صورت جداگانه برای هر آیتم.
  • ابزارها را پشت دو بررسی قرار دهید: مجوزهای کاربر و نسخه (edition) خاص اپلیکیشن.

نگاه کلی

هدف این است که شبکه ایمنی را خودکار کنید.

اگر یک ابزار تشخیصی مفید است، آن را به طور پیش‌فرض روشن کنید. اگر مجبور باشید به یاد بیاورید که آن را روشن کنید، زمانی که سیستم در ساعت ۲ صبح از کار می‌افتد، آن را نخواهید داشت. درس‌های خود را در ابزارهایتان کدگذاری کنید تا مجبور نباشید دوباره آن‌ها را یاد بگیرید.

منبع: https://dev.to/nasrulhazim/dev-log-2026-06-19-mcp-servers-everywhere-email-that-tracks-itself-and-menus-that-behave-19il