Skip to main content
Glama
Mail.ru MCP starter

Mail.ru MCP starter

by chdp07egypt

Mail.ru MCP starter — почта в ChatGPT

Персональный MCP-сервер на Python: подключает один ящик Mail.ru к ChatGPT через Google OAuth и работает с почтой по IMAP. Развёртывается на собственном сервисе Render; у каждого пользователя — свои учётные данные и свой сервер.

Главный шаг: создайте специальный пароль для внешнего приложения Mail.ru. Обычный пароль от ящика не работает. Выберите «Полный доступ к Почте» и сохраните полученный пароль только в MAILRU_APP_PASSWORD в Environment своего сервиса. Официальная инструкция Mail.ru.

Что умеет

Команда

Действие

mail_list_folders

Папки и возможности IMAP-сервера

mail_search

Поиск по отправителю, теме, дате и непрочитанным; до 30 заголовков

mail_read

Чтение без отметки «прочитано»

mail_move

Перемещение одного выбранного письма в существующую папку

mail_delete

Перемещение одного выбранного письма в системную корзину

Отправки, очистки корзины и безвозвратного удаления нет. Для восстановления используйте mail_move из корзины обратно в нужную папку. При чтении используются EXAMINE/BODY.PEEK, при перемещении — UID MOVE; общий EXPUNGE не вызывается.

Related MCP server: IMAP MCP Connector

Как повторить

  1. Сделайте Fork этого репозитория.

  2. Разрешите IMAP и создайте пароль внешнего приложения в Mail.ru.

  3. Разверните Python Web Service на Render Free из своего Fork.

  4. Создайте Google OAuth Client типа Web application с callback вашего сервиса.

  5. Заполните секреты и разрешённый Google-аккаунт в Render Environment.

  6. В ChatGPT → Plugins → «+» → Add custom MCP server добавьте https://YOUR-SERVICE.onrender.com/mcp, выберите OAuth/DCR и scope mail.access.

  7. Войдите через Google и подтвердите перечисленные операции. Проверьте поиск, чтение, перемещение в корзину и восстановление на специально подготовленном письме.

Пошаговая инструкция: docs/SETUP_RU.md. В ней есть точные переменные, команды, контрольные результаты и разбор ошибок.

Схема

flowchart TD
    ChatGPT["ChatGPT"] -->|"OAuth + MCP / HTTPS"| Server["Ваш сервер на Render"]
    Server -->|"IMAP / TLS :993"| Mail["Ваш ящик Mail.ru"]
    Server <-->|"openid email: проверка владельца"| Google["Google OAuth"]

Google используется для входа в MCP, а не для доступа к Gmail. Ящик Mail.ru может иметь другой адрес. Запросы чтения передают выбранные заголовки и тексты писем в ChatGPT; сервер обрабатывает их в памяти. Картинки и ссылки из писем не загружаются.

Права без сюрпризов

Все пять команд используют один scope mail.access. Страница согласия заранее перечисляет чтение, перемещение и удаление в корзину. Это собственный scope данного сервера, а не разрешение Google или Mail.ru. Автоматического повышения старых read-only токенов в публичном шаблоне нет.

Разрешён только подтверждённый Google email из ALLOWED_GOOGLE_EMAIL. Токены проверяются по подписи, issuer, audience, сроку и scope. Письма — недоверенные данные: их текст не является поручением пользователю или агенту. Подробнее: SECURITY.md.

Переменные

Имя

Где получить / назначение

MAILRU_USER

Полный адрес своего ящика

MAILRU_APP_PASSWORD

Пароль внешнего приложения, не основной пароль

MCP_ACCESS_TOKEN

Случайный секрет от 32 символов; Blueprint генерирует его

GOOGLE_CLIENT_ID

Google OAuth Client вашего проекта

GOOGLE_CLIENT_SECRET

Секрет того же Google OAuth Client

ALLOWED_GOOGLE_EMAIL

Google email, которому вы разрешаете доступ

PUBLIC_BASE_URL

Необязательно: HTTPS origin своего домена/туннеля. На Render определяется автоматически

ALLOWED_GOOGLE_SUB

Необязательно: дополнительная фиксация Google subject

Незаполненный пример: .env.example. Настоящие значения не добавляйте в Git, issue, скриншот или чат.

Тесты

python -m venv .venv
# Linux / macOS:
source .venv/bin/activate
# Windows PowerShell: .venv\Scripts\Activate.ps1
python -m pip install -r requirements-dev.txt
python -m pytest tests -q
python scripts/check_public.py

В публичной адаптации локально пройдены 47 тестов: авторизация, PKCE, callbacks, scope, UIDVALIDITY, IMAP-инъекции, MOVE, корзина и обрыв соединения. Тесты используют подмену IMAP и Google, не читают и не изменяют настоящий ящик. CI повторяет их при push/PR.

Что уже проверено и где границы

Исходная персональная интеграция проверена на реальном Mail.ru: поиск, чтение, перемещение выбранного письма в корзину с проверкой обеих папок. Этот публичный вариант очищен от персональных настроек и имеет другую, единую модель scope. Новое развёртывание из Fork требует собственной проверки по инструкции; 47 тестов не подменяют живую проверку Google/ChatGPT/Mail.ru.

Render Free засыпает после 15 минут простоя, пробуждение занимает около минуты. Данные на локальном диске сервиса не сохраняются. Здесь нет постоянной БД: незавершённую OAuth-сессию после перезапуска нужно начать заново. Это пример для одного владельца, не готовый многопользовательский почтовый сервис. Ограничения Render.

Файлы и лицензия

server.py — MCP и защита endpoint; mailbox_client.py — IMAP; oauth.py — персональный OAuth-сервер; render.yaml — Blueprint; docs/ — инструкция и разбор опыта; tests/ — проверки.

Сохранена выбранная владельцем лицензия репозитория MPL-2.0. Перенесённые и адаптированные файлы исходной реализации (server.py, oauth.py, mailbox_client.py, tests/, requirements.txt, render.yaml, .gitignore) сохраняют Apache-2.0; её текст — LICENSE-APACHE-2.0. Новые инструкции, примеры, CI и скрипт проверки относятся к MPL-2.0. Подробности — NOTICE. Независимый пример, не официальный продукт Mail.ru, Google, OpenAI или Render.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      B
      maintenance
      Connects an IMAP mailbox over OAuth 2.1 so an AI assistant can list and search accounts, folders, messages, attachments, and contacts. Mailboxes stay read-only by default, with optional opt-in write tools for flagging, moving, drafting, and approval-gated sending.
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables Claude and ChatGPT to read, search, and organize mail in a user's own email account, including folders, threads, attachments, drafts, and optional sending, with per-user permission levels and OAuth-secured remote connections.
      MIT
    • A
      license
      A
      quality
      C
      maintenance
      Gives AI assistants IMAP/SMTP access to a mailbox so they can search folders, read and reply to messages, send email, and mark or move messages. Works with Namecheap Private Email by default and with other mailboxes via configurable hosts.
      7
      60 npm
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      Connects a personal Mail.ru mailbox to ChatGPT through Google OAuth and IMAP, enabling users to list folders, search and read messages without marking them read, move selected messages between folders, and send them to Trash.
      Apache 2.0