Dev Log: MCP, відстеження email та структура меню

Я провів день, створюючи MCP-сервери, автоматизоване відстеження електронних листів та масштабовані адмін-меню.

Ось основні уроки, отримані під час роботи.

Безпека MCP-серверів

Я випустив універсальний набір інструментів MCP і розгорнув сервери в кількох корпоративних застосунках. Створюючи агентів, які можуть взаємодіяти з вашими системами, дотримуйтесь цих правил:

  • Вільно надавайте агентам інструменти для читання.
  • Надавайте інструменти для запису лише за необхідності.
  • Пропускайте кожну дію запису через runbook із підтвердженням людиною.
  • Хешуйте паролі у своїх інструментах create-user. Ніколи не зберігайте їх у відкритому вигляді.
  • Використовуйте публічні UUID для журналів аудиту. Ніколи не розкривайте внутрішні ID бази даних.
  • Використовуйте резервний варіант (fallback) для контексту користувача. Агент може використовувати HTTP або STDIO. Переконайтеся, що ваш код обробляє обидва варіанти.

Відстеження email без ручної роботи

Я створив систему, яка автоматично відстежує відкриття та кліки в електронних листах. Не змушуйте розробників додавати пікселі відстеження до кожного листа. Замість цього використовуйте слухач (listener) відправки пошти.

  • Слухач перехоплює повідомлення.
  • Він вбудовує піксель відстеження в HTML.
  • Він обгортає всі посилання для відстеження кліків.
  • Він додає хеш метаданих для легшої кореляції.

Дві важливі примітки:

  • Уникайте Mail::raw(). Він пропускає шлях переписування HTML. Використовуйте відповідні HTML Mailables, щоб гарантувати роботу відстеження.
  • Встановлюйте відстеження у режим "on" за замовчуванням. Якщо користувачам доведеться вмикати його самостійно, вони про це забудуть.

Масштабовані адмін-меню

Коли ви керуєте меню в кількох застосунках, не використовуйте один величезний файл. Використовуйте невеликі класи-будівельники (builder classes) для кожної групи.

  • Створюйте по одному класу на групу (наприклад, Settings, User Management).
  • Кожен клас оголошує власні елементи та необхідні дозволи.
  • Це робить вашу навігацію декларативною.
  • Обрізайте довгі мітки всередині компонента, а не для кожного елемента окремо.
  • Обмежуйте доступ до інструментів за допомогою двох перевірок: дозволів користувача та конкретної версії (edition) застосунку.

Загальна картина

Мета полягає в тому, щоб зробити захисну сітку автоматичною.

Якщо діагностичний інструмент корисний, увімкніть його за замовчуванням. Якщо вам доведеться пам'ятати про його ввімкнення, ви не зможете скористатися ним, коли система вийде з ладу о 2 годині ночі. Закладайте свої уроки в інструменти, щоб вам не довелося вивчати їх заново.

Джерело: https://dev.to/nasrulhazim/dev-log-2026-06-19-mcp-servers-everywhere-email-that-tracks-itself-and-menus-that-behave-19il