yandex-mail-mcp
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
📬 yandex-mail-mcp
Научите вашего ИИ-агента работать с вашей почтой.
Обычный ChatGPT ничего не знает о вашей почте: не видит входящие, не найдёт письмо от бухгалтерии, не ответит и не отправит. И добраться до почты через промпт не выйдет — у модели нет инструмента, который её открывает.
Этот проект даёт ChatGPT такой инструмент. Он подключается как коннектор, один раз спрашивает код доступа — и дальше вы просто пишете в чате обычные слова: «что нового в почте», «найди письма от Иванова за сентябрь», «ответь, что всё оплачено».
Как я к этому пришёл. Кастомные MCP для обычного ChatGPT я открыл для себя относительно недавно — в том самом чате, которым пользуюсь каждый день. Первым был коннектор для «Пятёрочки», и я быстро понял, насколько это удобно: не надо копировать промпты, не надо заводить отдельного агента — просто включил коннектор в настройках и спрашиваешь обычными словами. Этот проект — второй такой коннектор. Первый научил ИИ ходить в магазин, второй учит его читать вашу почту.
✨ Что внутри
📨 14 инструментов | чтение, поиск, отправка, ответ с сохранением цепочки, пересылка, черновики, метки, перемещение, удаление |
🔐 OAuth 2.1 | authorization code + PKCE, клиент регистрируется сам — подключение в два клика |
🪶 35 МБ RAM | один процесс, одна зависимость (Flask), IMAP и SMTP из стандартной библиотеки |
🔒 Слушает только localhost | наружу не торчит, TLS на твоём обратном прокси, пароль почты не покидает сервер |
🌐 Кириллица из коробки | папки и поиск по-русски, темы и тела писем не ломаются |
HTTPS
ChatGPT ──────────────────────────────┐
│ OAuth 2.1 │ ▼
│◀─JSON-RPC─┼──────▶ reverse proxy (nginx / Caddy / …)
│ │ │ http
│ │ ▼
└───────────┘ 127.0.0.1:5180 yandex-mail-mcp
│ IMAP / SMTP
▼
imap.yandex.ru / smtp.yandex.ruRelated MCP server: mcp-imap
📋 Содержание
🎯 Что умеет
Чтение и поиск по всем папкам (входящие, отправленные, черновики, корзина,
спам, архив) с поддержкой кириллицы, чтение писем с вложениями, отправка,
ответ с сохранением цепочки, пересылка, черновики, перемещение, метки
прочитано/важное/звезда, удаление. Плюс пара инструментов search/fetch —
обёртка, без которой коннектор не работает в Deep Research.
📋 Требования
Linux-сервер с Python 3.11+ (проверено на 3.12) и выходом в интернет
Домен с валидным TLS-сертификатом: его видит ChatGPT, поэтому самоподписанный не подойдёт
Аккаунт Яндекс Почты с включённым IMAP
Зависимости: только Flask. IMAP, SMTP, криптография и разбор MIME — из
стандартной библиотеки.
🚀 Установка
1. Пароль приложения в Яндексе
У Яндекса нет OAuth-скоупа для почты (подробности ниже), поэтому единственный способ — пароль приложения:
«Создать пароль приложения», назвать как угодно
Скопировать выданный пароль
Отдельно убедиться, что IMAP включён: mail.yandex.ru → Настройки → «Доступ по IMAP»
Пароль приложения не заменяет основной пароль и не даёт доступа к веб-интерфейсу. Отзывается там же.
2. Файлы и конфиг
sudo mkdir -p /opt/yandex-mail-mcp
sudo cp app.py mail.py oauth.py /opt/yandex-mail-mcp/
sudo cp config.example.json /opt/yandex-mail-mcp/config.json
sudo pip3 install 'Flask>=3.0,<4'Заполнить /opt/yandex-mail-mcp/config.json:
{
"access_code": "любой-длинный-случайный-код",
"port": 5180,
"public_url": "https://yandex-mail-mcp.example.com",
"address": "your-mailbox@yandex.ru",
"app_password": "пароль-из-шага-1",
"imap_host": "imap.yandex.ru",
"imap_port": 993,
"smtp_host": "smtp.yandex.ru",
"smtp_port": 465,
"oauth_clients": []
}access_code — код, который вводится на экране согласия при подключении
ChatGPT. Сгенерировать можно так:
python3 -c "import secrets; print(secrets.token_urlsafe(24))"Дальше — chmod 600 /opt/yandex-mail-mcp/config.json.
3. Автозапуск
sudo cp yandex-mail-mcp.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now yandex-mail-mcp
curl -s http://127.0.0.1:5180/healthz4. Доступ снаружи
ChatGPT обращается к коннектору по обычному HTTPS, поэтому перед публикацией нужен домен с валидным сертификатом — Let's Encrypt или коммерческий.
Сам сервис слушает только 127.0.0.1:5180 и наружу не выходит, так что любой
реверс-прокси подойдёт: nginx, Caddy, Traefik. Например, за nginx:
server {
listen 443 ssl;
http2 on;
server_name mail.example.com;
ssl_certificate /etc/letsencrypt/live/mail.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mail.example.com/privkey.pem;
client_max_body_size 2m;
location / {
proxy_pass http://127.0.0.1:5180;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 120s;
}
}Почему так: сервис никогда не выходит в интернет сам и не занимает порт — это значит, что его нельзя случайно обнаружить сканированием, а доступ контролируется правилами прокси. Порт 443 на сервере при этом остаётся свободным для других служб.
🔗 Подключение к ChatGPT
Включить Developer Mode: https://platform.openai.com/docs/guides/developer-mode
ChatGPT → Settings → Connectors → Create
Заполнить:
Name — например, «Яндекс Почта»
URL —
https://yandex-mail-mcp.example.com/mcpAuth —
OAuth
В чате: «+» или
@→ выбрать коннектор → Sign inОткроется экран согласия — ввести
access_codeиз конфигаВернуться в ChatGPT, коннектор подключён
Сразу после подключения стоит зайти в Settings → Plugins → приложение → Permissions и выбрать «Всегда спрашивать»: коннектор умеет отправлять письма твоим именем, и по умолчанию лучше подтверждать каждое действие.
🧰 Инструменты
Инструмент | Что делает |
| Сколько всего и сколько непрочитанных. Ответ на «что нового?» |
| Все папки с назначением. Первым делом, если что-то «не нашлось» |
| Поиск. |
| Полный текст письма и список вложений. Не помечает прочитанным |
| Отправка. Поддерживает cc, bcc, html |
| Ответ с сохранением цепочки, |
| Пересылка с исходным текстом |
| Черновик без отправки |
| Переместить в другую папку |
| Прочитано/не прочитано, флаги «важное» и «звезда» |
| В Корзину; |
| Обёртка для Deep Research: поиск и полный текст по |
| Проверка IMAP/SMTP и счётчики. Первое, что стоит звать, если что-то не работает |
Идентификатор письма — строка вида папка|uid, например INBOX|41703.
Её возвращает search_emails и её же нужно передавать обратно в остальные
инструменты; после перемещения письма идентификатор меняется, поэтому
устаревший id даёт понятную ошибку, а не молчаливый «успех».
Папки можно называть по-русски или по-английски: INBOX/«Входящие»,
Sent/«Отправленные», Drafts/«Черновики», Trash/«Корзина»,
Junk/«Спам», Archive/«Архив».
💬 Примеры запросов
«Что нового в почте?»
«Найди непрочитанные от hr@company.ru за последнюю неделю»
«Что в последнем письме от банка?»
«Подготовь ответ: подтверждаю, спасибо» — создаст черновик, не отправляя
«Отправь письмо vasya@mail.ru с текстом…»
«Перешли последнее письмо о счёте в бухгалтерию»
«Перемести все рассылки от рекламы в Корзину»
🧪 Тесты
Два независимых теста. Токен в обоих — из переменной окружения, в коде его нет.
# протокол: OAuth-цикл, PKCE, 401/WWW-Authenticate, tools/list, кэш и ротация
# токенов, revoke. Почту не трогает.
YCP_TOKEN=<код> python selftest.py https://yandex-mail-mcp.example.com
# боевая проверка на живом ящике. По умолчанию только чтение.
YCP_TOKEN=<код> python live_check.py https://yandex-mail-mcp.example.com
# добавить проверку записи (создаёт черновик и письмо самому себе)
YCP_TOKEN=<код> YCP_ADDRESS=your-mailbox@yandex.ru \
python live_check.py https://yandex-mail-mcp.example.com --writeselftest.py — 61 проверка, закрывает весь OAuth-цикл, который повторит
ChatGPT, включая негативные случаи.
🔐 Безопасность
Что | Как |
Доступ к MCP | OAuth 2.1: authorization code + PKCE (S256), токены 12 ч, refresh 90 дней с ротацией |
Клиенты | DCR — ChatGPT регистрируется сам; вручную описанные клиенты — в |
Экран согласия | Требует |
Пароль почты | Только в |
Поверх сети | сервис только на localhost, наружу — HTTPS через твой обратный прокси |
Опасные действия |
|
Случайные токены | Клиент регистрируется сам; старые клиенты и коды подчищаются |
Про выданные токены: /oauth/sessions по тому же access_code показывает
счётчик активных токенов. Токен можно отозвать через /oauth/revoke
или удалив oauth.json и перезапустив сервис.
Если доступ идёт через CDN или WAF, проверь, что он не режет небраузерные запросы: ChatGPT ходит с бот-агентом, и часть защит отсекает такие запросы по User-Agent. Лечится исключением для адреса коннектора.
⚠️ Важно про Яндекс OAuth
Часто встречается совет «сделать OAuth 2.1 с обменом токенов по RFC 8693, чтобы ИИ ходил в почту по токену Яндекса». Это невозможно, и вот почему:
Яндекс OAuth поддерживает ровно два
grant_type:authorization_codeиrefresh_token. Обмен токенов (RFC 8693) не реализован.Скоупа
mail:imap/mail:smtpу Yandex ID не существует вообще. Естьlogin:*и API отдельных сервисов (Диск, Календарь, Переводчик). Поэтому XOAUTH2 для личной Яндекс Почты невозможен в принципе.
Следствие: сервер не хранит и не проксирует токен Яндекса. Он хранит пароль приложения и работает по IMAP/SMTP. Свой OAuth 2.1 нужен только для того, чтобы сам ChatGPT мог подключиться к этому серверу, — и это единственная роль, которую он здесь играет.
Сервисные приложения Яндекс 360 (для организаций с собственным доменом) — отдельная история, они требуют прав администратора организации.
🧠 Особенности реализации
Три места, где пришлось повозиться, и почему так:
Имена папок приходят в modified-UTF7. Яндекс отдаёт &BBAEQARFBDgEMg-
вместо «Архив». Реализован декодер/кодер по RFC 3501. На провод уходит
исходная форма, человеку — читаемая.
Поиск по кириллице требует CHARSET UTF-8. Без него SEARCH отвечает
NO вместо результата — молча, без ошибки. Критерий с не-ASCII
автоматически отправляется с CHARSET UTF-8.
IMAP-соединение переиспользуется. Яндекс отвечает на приветствие нового
соединения с задержкой, которая после серии частых подключений доходит до
30 секунд. Все команды после LOGIN при этом выполняются за миллисекунды.
Поэтому держится одно соединение, а папка выбирается повторно только при
смене. Первый вызов после запуска может быть медленным, дальше — доли секунды.
🛠 Обслуживание
systemctl status yandex-mail-mcp
journalctl -u yandex-mail-mcp -f
tail -f /opt/yandex-mail-mcp/yandex-mail-mcp.log # лог приложения
systemctl restart yandex-mail-mcpЛоги: yandex-mail-mcp.log с ротацией, 1 МБ × 2. Ошибки почты возвращаются клиенту
как isError с понятным текстом, а не как HTTP 500.
Если сменишь пароль приложения — поправь config.json и перезапусти сервис.
🔗 Связанные проекты
Другие MCP-коннекторы для тех же ИИ-агентов:
🛒 pyaterochka-mcp-tool — MCP-сервер и AI-бот для каталога «Пятёрочки»: магазины, товары, акции и цены по всей России. Первый коннектор, с которого всё началось.
📄 Лицензия
MIT — можно использовать и дорабатывать свободно.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
This server cannot be deployed
Maintenance
Related MCP Connectors
Email for AI agents: read, search and send from your Gmail, Outlook, Yahoo, iCloud or IMAP inbox.
Email inboxes and calendars for AI agents: send, receive, search, draft and schedule.
Email inboxes and calendars for AI agents: send, receive, search, draft and schedule.
Email infrastructure for AI agents — send, receive, search, and reply to email over MCP.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables AI assistants to read, search, compose, and send emails by connecting to any IMAP/SMTP provider. It supports comprehensive mailbox management, including draft handling and message deletion, directly through natural language.10239 npm11MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to interact with email accounts via IMAP and SMTP, supporting mailbox listing, email search, retrieval, sending, and management.MIT
- AlicenseBqualityDmaintenanceEnables AI assistants to send, read, and manage emails via SMTP and IMAP, with support for attachments, threads, and mailbox organization.1681 npm1MIT
- FlicenseBqualityCmaintenanceEnables AI models to send, receive, search, and manage emails via SMTP/IMAP, including support for attachments, contacts, and advanced search.18-