MCP Email Server — мультиаккаунтная почта для ИИ-агентов по IMAP и SMTP
📂 Исходный код на GitHubМультиаккаунтный MCP-сервер на Python (BSD-3-Clause) для работы с почтой через ИИ-агентов по IMAP и SMTP: чтение, поиск, фильтрация, отправка, пересылка, черновики, вложения и управление папками. Кроссплатформенный (Windows, macOS, Linux), с локальным веб-UI настройки, SQLite-хранилищем и официальными Docker-образами.
MCP Email Server — это MCP-сервер на Python, который даёт ИИ-агентам полноценный доступ к электронной почте по протоколам IMAP и SMTP. Он умеет читать и искать письма, перемещать их между папками, помечать флагами и тегами, отправлять, отвечать и пересылать, сохранять черновики и работать с вложениями. Отличительные черты проекта — поддержка нескольких аккаунтов одновременно, кроссплатформенность (Windows, macOS и Linux) и очень серьёзное отношение к безопасности: агент в принципе не может ни прочитать, ни изменить учётные данные почты.
Ключевая идея безопасности вынесена в дизайн самого инструмента: через MCP не существует ни одного инструмента для изменения аккаунтов, эндпоинтов или учётных данных. Все настройки выполняются только человеком — через локальный веб-интерфейс или CLI. Поэтому чат с агентом никогда не превращается в канал утечки паролей.
Что нового в Local Email App V2
Начиная с версии 1.0.0 проект перешёл на модель Local Email App V2: аккаунты хранятся в управляемой SQLite-базе (managed.sqlite3), а настройка выполняется через локальный веб-интерфейс. Старые настройки из PyPI-версий 0.16.0 и ниже продолжают работать в обратно совместимом режиме legacy — обязательной миграции нет.
Если хочется перейти на новое хранилище, предусмотрена миграция с предварительным просмотром плана и явным подтверждением:
uvx mcp-email-server@latest config init \
--database ~/.config/mcp-email-server/managed.sqlite3
uvx mcp-email-server@latest config import-legacy
uvx mcp-email-server@latest config import-legacy --apply
uvx mcp-email-server@latest config doctor
Шаг --apply снова показывает план и просит ввести IMPORT. Исходный TOML-файл и записи в системном хранилище ключей не трогаются. То же самое можно сделать через UI — пункт Import existing settings.
Установка и настройка
Понадобится менеджер пакетов uv. Первый шаг — настроить почтовый аккаунт через веб-интерфейс:
uvx mcp-email-server@latest ui
Команда должна оставаться запущенной. На пустой установке откроется аутентифицированная браузерная сессия, которая подготовит локальное хранилище аккаунтов. Интерфейс минималистичен: разделы Email accounts и Settings & help. Достаточно ввести адрес и пароль — параметры подключения подставятся автоматически по домену почты, но остаются редактируемыми. Исходящая почта (SMTP) опциональна: можно завести аккаунт «только для чтения». Для сохранённого аккаунта есть кнопка Password & test для проверки соединения.
Второй шаг — подключить сервер к MCP-клиенту:
{
"mcpServers": {
"mcp-email-server": {
"command": "uvx",
"args": ["mcp-email-server@latest", "stdio"]
}
}
}
После изменения конфигурации MCP-клиент нужно перезапустить. Проверка простая: попросите агента перечислить настроенные аккаунты или последние письма.
Для headless-сред, начиная с версии 1.6.2, публикуются официальные Docker-образы ghcr.io/wh1isper/mcp-email-server для Linux amd64 и arm64. Также поддерживаются настройка через переменные окружения, произвольные TLS-параметры и, разумеется, несколько аккаунтов. Детали — в документации: getting started, configuration, transports, security и troubleshooting на сайте проекта.
Инструменты MCP
Каталог инструментов в V2 стабильный: список статичен на время жизни процесса, а каждое имя, описание и схема покрыты контрактным тестом.
Аккаунты и планирование
- list_available_accounts — список включённых аккаунтов с признаками
can_receiveиcan_send. Агент обязан читать только из аккаунтов сcan_receive=trueи отправлять только черезcan_send=true. - Ресурс
email://{account_name}возвращает нечувствительную «карточку возможностей» аккаунта — без конфигурации и маскированных креденшелов. - Каждый инструмент помечен подсказками для планирования агента:
readOnlyHint,destructiveHint,idempotentHintиopenWorldHint. Например, чтение тела письма считается не read-only, потому что с опциейmark_as_readменяет флаги на сервере.
Чтение и поиск
- list_emails_metadata — поиск по папке без скачивания тел писем. Фильтры: тема, отправитель/получатель, временные границы
since/before(с таймзоной), статусы прочитанности/флагов/ответов, поиск по телу (body) и заголовкам с телом (text) средствами IMAP, эвристикаhas_attachment, семантические теги. Пагинация до 100 результатов на страницу. - get_emails_content — пакетное получение тел писем по ID. Длинные тела отдаются чанками (
body_offset+max_body_length), опционально помечает письма прочитанными. Возвращает заголовкиIn-Reply-ToиReferencesдля трединга. - list_email_tags — конфигурация семантических тегов аккаунта: человекопонятные имена, отображающиеся на IMAP-ключевые слова провайдера.
Разделение «лёгкий поиск по метаданным» и «тяжёлое чтение тел» — осознанное: сначала агент находит нужные письма дешёвым запросом, и только потом скачивает содержимое.
Отправка
- send_email — отправка через SMTP: To/CC/BCC, plain-text или HTML, вложения с диска, заголовки
Reply-To,In-Reply-ToиReferencesдля тредов. Поддержана интернационализация через SMTPUTF8, а ответ содержит RFCMessage-Idдоставленного письма — причём только после фактического принятия письма провайдером. - forward_email — пересылка существующего письма новым получателям: сервер сам читает исходник по IMAP, составляет текст пересылки и заново прикрепляет вложения (сохраняя их MIME-типы).
- save_to_mailbox — составить письмо и положить его в IMAP-папку (по умолчанию
Drafts) без отправки — работает даже для аккаунтов без SMTP.
Папки и мутации
- list_mailboxes — список IMAP-папок с разделителями иерархии и флагами (включая special-use вроде
\Sent). - set_email_flags / mark_emails_as_read — управление флагами
\Seen,\Flagged,\Answered,\Draft. - set_email_tags — управление семантическими тегами (только теми, что помечены
writable=true). - move_emails — перемещение писем: нативный IMAP
MOVEлибо безопасный fallback черезUID EXPUNGEпри поддержкеUIDPLUS. - archive_emails — перенос в архивную папку, определяемую по флагу
\Archive(RFC 6154) с fallback на типовые имена вроде[Gmail]/All Mail. - delete_emails — удаление строго по UID через
UID EXPUNGE; без поддержкиUIDPLUSсервер откажется выполнять операцию, чем гарантирует, что по ошибке не будет отправленEXPUNGEна всю папку.
Вложения и политик доступа
- get_attachment_content — чтение вложения как встроенного MCP-ресурса, без записи файлов на диск (включается отдельно флагом
enable_attachment_content). - download_attachment — скачивание на хост. По умолчанию файл кладётся в
Downloads/mcp-email-serverс рандомизированным безопасным именем; функция включается явно черезenable_attachment_download = true. - list_allowed_recipients / list_allowed_senders — allowlist получателей и отправителей с поддержкой glob-шаблонов вида
*@example.com. Пустой список получателей запрещает любую отправку, а письма заблокированных отправителей при чтении неотличимы от несуществующих — приватность соблюдается даже от самого агента.
Безопасность: что сделано правильно
Проект выделяется среди почтовых MCP-серверов именно инженерной культурой безопасности:
- Никаких креденшелов через MCP. Добавление, изменение и удаление аккаунтов недоступно агенту — только UI или CLI, запускаемые пользователем.
- Детерминированные мутации. Если результат операции потерян (неизвестно, применился ли эффект), сервер помечает его
unknownс предупреждениемreconciliation neededи никогда не повторяет автоматически — это защищает от дублей писем. - Жёсткие лимиты. Всё ограничено явными бюджетами: до 500 UID в пакете чтения, до 100 UID в мутации, 50 MiB на сырьевое сообщение и на пакет тел, 25 MiB на вложение, до 100 получателей и т.д. Превышение возвращает явную ошибку вместо тихой обрезки.
- Безопасное удаление.
UID EXPUNGEвместо общегоEXPUNGEисключает массовую потерю писем. - Безопасная запись файлов. Скачивание вложений использует pinned-дескрипторы каталогов без symlink-переходов на POSIX и жёстко проверенные NTFS-пути на Windows, с правами только для владельца.
Чем отличается от аналогов
На сайте уже разбирался IMAP MCP Server на TypeScript — более простой вариант, где аккаунт можно добавить прямо через агента. MCP Email Server сознательно идёт другим путём: аккаунты настраивает только человек, зато взамен получаете настоящую мультиаккаунтность, семантические теги, продуманный трединг, Docker-образы для серверов и, пожалуй, самую аккуратную работу с границами ошибок IMAP/SMTP в этой категории.
Проект распространяется по лицензии BSD-3-Clause, на момент написания у него 324 звезды на GitHub.