Дневник разработки: MCP, отслеживание email и структура меню
Весь день я провел за созданием MCP-серверов, автоматизированным отслеживанием email и масштабируемыми админ-меню.
Вот основные уроки, извлеченные из этой работы.
МCP Ѕеrvеr Ѕаfеtу
Я выпустил универсальный набор инструментов MCP и развернул серверы в нескольких корпоративных приложениях. При создании агентов, которые могут взаимодействовать с вашими системами, следуйте этим правилам:
- Свободно давайте агентам инструменты для чтения.
- Выдавайте инструменты для записи дозированно.
- Пропускайте каждое действие записи через runbook с подтверждением человеком.
- Хешируйте пароли в инструментах создания пользователей. Никогда не храните их в открытом виде.
- Используйте публичные UUID для журналов аудита. Никогда не раскрывайте внутренние ID базы данных.
- Используйте резервный вариант (fallback) для контекста пользователя. Агент может использовать HTTP или STDIO. Убедитесь, что ваш код обрабатывает оба варианта.
Отслеживание email без ручного труда
Я создал систему, которая автоматически отслеживает открытия и клики в письмах. Не заставляйте разработчиков добавлять пиксели отслеживания в каждое письмо. Вместо этого используйте слушатель (listener) отправки почты.
- Слушатель перехватывает сообщение.
- Он внедряет пиксель отслеживания в HTML.
- Он оборачивает все ссылки для отслеживания кликов.
- Он добавляет хеш метаданных для легкой корреляции.
Два важных замечания:
- Избегайте
Mail::raw(). Он пропускает путь переписывания HTML. Используйте правильные HTML Mailables, чтобы гарантировать работу отслеживания. - Устанавливайте отслеживание в положение "on" по умолчанию. Если пользователям придется включать его вручную, они забудут об этом.
Масштабируемые админ-меню
Когда вы управляете меню в нескольких приложениях, не используйте один гигантский файл. Используйте небольшие классы-билдеры для каждой группы.
- Создавайте по одному классу на группу (например, Settings, User Management).
- Каждый класс объявляет свои собственные элементы и необходимые разрешения.
- Это делает вашу навигацию декларативной.
- Обрезайте длинные метки внутри компонента, а не для каждого элемента по отдельности.
- Ограничивайте доступ к инструментам с помощью двух проверок: прав пользователя и конкретной версии приложения.
Общая картина
Цель состоит в том, чтобы сделать «сетку безопасности» автоматической.
Если диагностический инструмент полезен, включайте его по умолчанию. Если вам приходится не забыть включить его, он вам не поможет, когда система упадет в 2 часа ночи. Зашивайте свои уроки в инструменты, чтобы вам не приходилось учиться заново.