Mail Digest MCP Server
Provides tools to manage work email: list/search/get emails and draft replies via IMAP, without sending any messages.
README
Mail digest — сбор и обработка рабочей почты
Инструмент из двух слоёв:
fetch_mail.py— Python-скрипт. Забирает письма за вчера по IMAP и складывает вoutput/mail_<дата>.jsonиoutput/mail_<дата>.md. Никаких LLM, только выгрузка.- Слой обработки (Claude) — читает свежий
mail_*.jsonи делает дайджест, извлекает задачи и дедлайны, группирует письма и готовит черновики ответов на письма, которые их требуют. Правила обработки задаются локально и в репозиторий не входят.
Быстрый старт
cd mail_digest
cp config.example.ini config.ini # впиши доступы к почте
python3 fetch_mail.py # заберёт письма за вчера
Результат появится в output/. Дальше попроси меня в чате:
«разбери почту за вчера» — я прочитаю выгрузку и подготовлю дайджест, задачи и черновики ответов.
Параметры запуска
python3 fetch_mail.py # за вчера (по умолчанию)
python3 fetch_mail.py --date 2026-07-06 # за конкретную дату
python3 fetch_mail.py --days 3 # за последние 3 дня
Доступы и безопасность
- Доступы читаются из
config.iniили переменных окружения (IMAP_HOST,IMAP_PORT,IMAP_USER,IMAP_PASSWORD,IMAP_FOLDER,IMAP_SSL). Переменные окружения имеют приоритет. config.iniсодержит пароль — не коммить его, не пересылай. В.gitignoreуже добавлен.- Если у почты включена 2FA, используй пароль приложения, а не основной пароль.
- Скрипт открывает ящик в режиме readonly — письма не помечаются прочитанными.
Где взять IMAP-сервер
Посмотри в почтовом клиенте (Outlook/Thunderbird → настройки учётной записи → сервер входящей почты IMAP) или спроси у ИТ-отдела адрес IMAP-сервера и порт.
MCP-сервер (интерактивный доступ из Claude Cowork)
fetch_mail.py — это пакетная выгрузка. Для живого доступа есть отдельный слой
mcp_server.py — MCP-сервер, к которому Claude Cowork подключается по HTTP и
может сам запрашивать письма и готовить ответы. Он не меняет fetch_mail.py,
а переиспользует его функции.
Что умеет (инструменты)
| Инструмент | Что делает |
|---|---|
list_emails(period) |
Письма за hour / today / day / yesterday / week (карточки без полного тела) |
get_email(message_id) |
Полный текст одного письма |
search_emails(query, days) |
Поиск по отправителю / теме / телу |
reply_email(message_id, body, cc) |
Черновик ответа .eml (тема Re:, заголовки треда) |
send_email(to, subject, body, cc) |
Черновик нового письма .eml |
list_drafts() |
Список готовых черновиков |
⚠️ Сервер ничего не отправляет. reply_email/send_email только создают файл
.eml в output/drafts/ — письмо отправляет человек вручную. Это согласуется с
правилом «черновики НЕ отправлять» из PROCESSING.md. Ящик открывается readonly —
письма не помечаются прочитанными.
Запуск на сервере
Сервер поднимают на машине, у которой есть доступ к корпоративному IMAP.
Доступы к почте — те же, что у fetch_mail.py (config.ini или переменные окружения).
# Вариант 1: uv сам поставит зависимости (Python 3.10+ подтянется автоматически)
uv run mcp_server.py
# Вариант 2: обычный venv
python3.11 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
python mcp_server.py
Настройки HTTP-сервера (env): MCP_HOST (по умолч. 0.0.0.0),
MCP_PORT (8765), MCP_PATH (/mcp).
Запуск в контейнере (рекомендуется для сервера)
В образ попадают только fetch_mail.py, mcp_server.py и requirements.txt
(см. .dockerignore) — пароль и output/ внутрь не запекаются. Доступы к
почте передаются через .env, черновики пишутся в ./output на хосте (том).
cp .env.example .env # впиши IMAP-доступы (файл не коммитится)
docker compose build # собрать образ
docker compose up -d # запустить в фоне
docker compose logs -f # смотреть логи
docker compose down # остановить
По умолчанию порт слушается только на 127.0.0.1:8765 — наружу выставляй через
reverse-proxy/VPN, а не в открытый интернет. Без compose то же самое вручную:
docker build -t mail-mcp:latest .
docker run -d --name mail-mcp --env-file .env \
-p 127.0.0.1:8765:8765 -v "$PWD/output:/app/output" mail-mcp:latest
Подключение Claude Cowork
Пропиши адрес сервера в конфиг MCP-клиента (см. mcp.client.example.json):
{ "mcpServers": { "mail": { "type": "http", "url": "http://АДРЕС-СЕРВЕРА:8765/mcp" } } }
Что дальше (идея автоматизации)
Когда убедимся, что сбор работает, можно повесить ежедневную задачу: утром скрипт забирает письма за вчера, а я готовлю дайджест + черновики ответов к твоему приходу.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.