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 годині ночі. Закладайте свої уроки в інструменти, щоб вам не довелося вивчати їх заново.