Log Dev: MCP, Penjejakan Emel, dan Struktur Menu

Saya menghabiskan hari ini membina pelayan MCP, penjejakan emel automatik, dan menu admin yang boleh diskalakan.

Berikut adalah pengajaran utama daripada kerja tersebut.

Keselamatan Pelayan MCP

Saya telah melancarkan kotak peralatan MCP generik dan melancarkan pelayan merentasi beberapa aplikasi perusahaan. Apabila membina ejen yang boleh berinteraksi dengan sistem anda, ikut peraturan ini:

  • Berikan ejen alatan bacaan secara bebas.
  • Berikan alatan penulisan secara berhemah.
  • Wajibkan setiap tindakan penulisan melalui runbook yang memerlukan pengesahan manusia.
  • Hash kata laluan dalam alatan create-user anda. Jangan sekali-kali simpan dalam bentuk teks biasa (plaintext).
  • Gunakan UUID awam untuk log audit. Jangan sesekali mendedahkan ID pangkalan data dalaman.
  • Gunakan sandaran (fallback) untuk konteks pengguna. Ejen mungkin menggunakan HTTP atau STDIO. Pastikan kod anda mengendalikan kedua-duanya.

Penjejakan Emel Tanpa Kerja Manual

Saya membina sistem yang menjejak pembukaan dan klik emel secara automatik. Jangan paksa pembangun menambah piksel penjejakan pada setiap emel. Sebaliknya, gunakan pendengar (listener) penghantaran emel.

  • Pendengar tersebut memintas mesej.
  • Ia menyuntik piksel penjejakan ke dalam HTML.
  • Ia membungkus semua pautan untuk penjejakan klik.
  • Ia menambah hash metadata untuk korelasi yang mudah.

Dua nota penting:

  • Elakkan Mail::raw(). Ia melangkau laluan penulisan semula HTML. Gunakan HTML Mailables yang betul untuk memastikan penjejakan berfungsi.
  • Tetapkan penjejakan kepada "on" secara lalai (default). Jika pengguna perlu mengaktifkannya, mereka akan terlupa.

Menu Admin yang Boleh Diskalakan

Apabila anda menguruskan menu merentasi pelbagai aplikasi, jangan gunakan satu fail yang besar. Gunakan kelas pembina (builder classes) yang kecil untuk setiap kumpulan.

  • Cipta satu kelas bagi setiap kumpulan (cth., Tetapan, Pengurusan Pengguna).
  • Setiap kelas mengisytiharkan item dan kebenaran (permissions) yang diperlukan sendiri.
  • Ini memastikan navigasi anda bersifat deklaratif.
  • Pendekkan (truncate) label yang panjang di dalam komponen, bukan pada setiap item.
  • Hadkan alatan melalui dua semakan: kebenaran pengguna dan edisi aplikasi tertentu.

Gambaran Lebih Besar

Matlamatnya adalah untuk menjadikan jaring keselamatan (safety net) bersifat automatik.

Jika alat diagnostik itu berguna, aktifkan ia secara lalai. Jika anda perlu ingat untuk mengaktifkannya, anda tidak akan mempunyainya apabila sistem gagal pada jam 2 pagi. Kodkan pengajaran anda ke dalam alatan anda supaya anda tidak perlu mempelajarinya semula.

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