Dev Log: MCP, E-Mail-Tracking und Menü-Struktur

Ich habe den Tag damit verbracht, MCP-Server, automatisiertes E-Mail-Tracking und skalierbare Admin-Menüs zu entwickeln.

Hier sind die wichtigsten Erkenntnisse aus dieser Arbeit.

MCP-Server-Sicherheit

Ich habe eine generische MCP-Toolbox veröffentlicht und Server in mehreren Enterprise-Apps bereitgestellt. Wenn Sie Agenten entwickeln, die mit Ihren Systemen interagieren können, befolgen Sie diese Regeln:

  • Geben Sie Agenten uneingeschränkt Lese-Tools.
  • Geben Sie Schreib-Tools nur sparsam.
  • Erzwingen Sie jede Schreibaktion über ein manuell freigegebenes Runbook.
  • Hashen Sie Passwörter in Ihren create-user-Tools. Speichern Sie niemals Klartext.
  • Verwenden Sie öffentliche UUIDs für Audit-Logs. Lassen Sie niemals interne Datenbank-IDs durchsickern.
  • Nutzen Sie einen Fallback für den Benutzerkontext. Ein Agent verwendet möglicherweise HTTP oder STDIO. Stellen Sie sicher, dass Ihr Code beides verarbeitet.

E-Mail-Tracking ohne manuellen Aufwand

Ich habe ein System entwickelt, das das Öffnen und Klicken von E-Mails automatisch trackt. Zwingen Sie Entwickler nicht dazu, Tracking-Pixel in jede E-Mail einzufügen. Verwenden Sie stattdessen einen Mail-Sending-Listener.

  • Der Listener fängt die Nachricht ab.
  • Er injiziert das Tracking-Pixel in das HTML.
  • Er umschließt alle Links für das Click-Tracking.
  • Er fügt einen Metadaten-Hash zur einfachen Korrelation hinzu.

Zwei wichtige Anmerkungen:

  • Vermeiden Sie Mail::raw(). Dies umgeht den Pfad für das HTML-Rewriting. Verwenden Sie ordnungsgemäße HTML-Mailables, um sicherzustellen, dass das Tracking funktioniert.
  • Setzen Sie das Tracking standardmäßig auf „on“. Wenn Benutzer es erst aktivieren müssen, werden sie es vergessen.

Skalierbare Admin-Menüs

Wenn Sie Menüs über mehrere Apps hinweg verwalten, verwenden Sie keine einzige riesige Datei. Nutzen Sie stattdessen kleine Builder-Klassen für jede Gruppe.

  • Erstellen Sie pro Gruppe eine Klasse (z. B. Einstellungen, Benutzerverwaltung).
  • Jede Klasse deklariert ihre eigenen Elemente und die erforderlichen Berechtigungen.
  • Dies hält Ihre Navigation deklarativ.
  • Kürzen Sie lange Labels innerhalb der Komponente, nicht auf Basis einzelner Elemente.
  • Sichern Sie Tools durch zwei Prüfungen ab: Benutzerberechtigungen und die spezifische App-Edition.

Das große Ganze

Das Ziel ist es, das Sicherheitsnetz automatisch zu gestalten.

Wenn ein Diagnosetool nützlich ist, schalten Sie es standardmäßig ein. Wenn Sie daran denken müssen, es einzuschalten, werden Sie es nicht zur Hand haben, wenn das System um 2 Uhr morgens ausfällt. Kodieren Sie Ihre Erkenntnisse direkt in Ihre Tools, damit Sie sie nicht immer wieder neu lernen