imap-mcp-server
imap-mcp
Исходный код доступен, это не продукт. Это универсальный IMAP → MCP сервер, работающий на Cloudflare Workers. Он опубликован под лицензией MIT, чтобы код можно было читать, копировать и учиться на нём, — но он создан и работает ровно с одним почтовым ящиком: личным аккаунтом iCloud. Никаких обязательств по поддержке: проблемы не обрабатываются, pull request'ы не запрашиваются, релизов нет, и ничто здесь не версионируется для чьего-либо использования. Если он вам полезен — форкните его.
Он универсален по замыслу, а не по амбициям — хост, порт и учётные данные являются конфигурацией, а не константами, — поэтому он должен работать с любым IMAP-сервером. Реально проверен только iCloud.
Статус: каркас. Пока ничего функционального не реализовано. Оба воркера — заглушки, которые устанавливаются, линтуются, проходят проверку типов, тестируются и проходят сухой прогон деплоя. См. Дорожную карту.
Что он делает
Индексирует почтовый ящик в хранилище Cloudflare, а затем предоставляет его MCP-клиенту в виде инструментов поиска и получения — так модель может отвечать на вопросы по пятнадцати годам почты, не вовлекая сам ящик в каждый запрос.
┌────────────────────┐ IMAP over TLS ┌──────────────┐
│ imap-mcp-sync │ ───────────────▶ │ mailbox │
│ packages/sync │ ◀─────────────── │ (iCloud) │
│ cron, owns creds │ └──────────────┘
└─────────┬──────────┘
│ writes ▲ writes proxied over
▼ │ a service binding
┌────────────────────┐ │
│ D1 (+FTS5) and R2 │ │
└─────────┬──────────┘ │
│ reads │
▼ │
┌────────────────────┐────────────────┘ ┌──────────────┐
│ imap-mcp-server │ Streamable HTTP │ MCP client │
│ packages/mcp │ ◀───────────────── │ behind CF │
│ stateless, no creds │ Access │
└────────────────────┘ └──────────────┘Два воркера, и разделение между ними — это дизайн безопасности, а не выбор упаковки:
packages/sync(imap-mcp-sync) — единственная часть системы, которая говорит по IMAP. Он хранит пароль приложения — который в iCloud даёт полный доступ к ящику, включая отправку через SMTP, — так что эти учётные данные существуют ровно в одном месте.packages/mcp(imap-mcp-server) — читатель без состояния. Он запрашивает индекс, а не ящик, и проксирует немногочисленные операции записи обратно в sync-воркер через service binding, а не открывает собственное соединение.
Related MCP server: gmail-mcp
Быстрый старт
pnpm install # installs both packages
pnpm run lint # biome check (lint + format)
pnpm run typecheck # wrangler types + tsc --noEmit
pnpm run test # vitest, inside workerd
pnpm run dead-code # knip
pnpm run build # wrangler deploy --dry-run, both workersДля каждого пакета, из packages/sync или packages/mcp: pnpm run dev, pnpm run test:watch, pnpm run deploy.
Конфигурация
Этот репозиторий публичный, поэтому никакие значения, специфичные для развёртывания, не закоммичены — ни ID аккаунта Cloudflare, ни тег зоны, ни домен команды Cloudflare Access или аудитория приложения (AUD), ни адрес почтового ящика. Ни один wrangler.jsonc не содержит account_id, и MCP-воркер вообще не объявляет маршрутов.
Всё, что вам нужно указать, названо и объяснено в .env.example. Скопируйте его в .env и заполните. Кратко:
Что | Куда помещается |
| ваше окружение; wrangler читает его напрямую |
Маршрут / зона для MCP-воркера | запись |
|
|
|
|
|
|
Локально секреты помещаются в gitignored .dev.vars для каждого пакета; у каждого есть .dev.vars.example для копирования.
Оба воркера недоступны по умолчанию
workers_dev и preview_urls установлены в false в обоих файлах wrangler.jsonc, и MCP-воркер не объявляет маршрутов. Поэтому свежее развёртывание недоступно из интернета. Это сделано намеренно: без ограничения папок конечная точка MCP функционально является доступом на чтение ко всему почтовому ящику, поэтому она не должна стать доступной, пока перед ней не будет Cloudflare Access. Без workers_dev: false воркер доступен по адресу <name>.<account>.workers.dev независимо от существующих маршрутов или политик Access.
Полное руководство по развёртыванию с нуля — секреты, настройка Access, привязки, миграции и обратное заполнение — ещё не написано; оно появится вместе с остальной системой.
Дорожная карта
Отслеживается как issues в этом репозитории:
Каркас репозитория — это | |
Вендорить IMAP-клиент за внутренним интерфейсом | |
Схема D1 и миграции | |
Трассировщик: синхронизировать одну папку в D1 | |
Фан-аут очереди для пути синхронизации | |
MCP-сервер и | |
Инкрементальная синхронизация: водяные знаки и | |
Вложения в R2, с извлечением текста | |
Ограничить конечную точку MCP с помощью Access Managed OAuth | |
| |
Инструменты записи через service binding, с журналом аудита | |
Полное обратное заполнение и руководство по настройке |
Спайк решил единственный вопрос, от которого зависела вся архитектура, — может ли Cloudflare Worker вообще говорить по IMAP с iCloud? Может: TLS и LOGIN на порту 993 за 755 мс, папки перечислены, сообщения получены и декодированы из MIME, черновик добавлен и помечен. Так что путь синхронизации — это Worker, и ничего не переносится в Container. Выводы, которые ограничивают дизайн, — порядок CONDSTORE, отсутствие MOVE в iCloud, непригодность SEARCH для содержимого — записаны в соответствующие тикеты.
Лицензия
MIT — см. LICENSE.
This server cannot be deployed
Maintenance
Related MCP Connectors
Email infrastructure for AI agents — send, receive, search, and reply to email over MCP.
Email inboxes for AI agents: send, receive, reply, search, and manage threaded email over MCP.
Your own IMAP mailbox in any MCP client: search, read, flag, move; send and delete need confirm.
Your IMAP mailbox as an MCP server: read, search and (if you allow it) organize mail. Open source.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceConnects AI agents to self-hosted Stalwart mail servers via a Cloudflare Worker and JMAP, enabling mailbox search, reading, listing, and two-step draft-and-send email operations through MCP.129 npmMIT
- AlicenseNot gradedqualityCmaintenanceEnables interaction with Gmail through MCP, supporting search, read, send, reply, forward, draft management, labels, and multiple accounts, deployed on Cloudflare Workers.MIT
- AlicenseNot gradedqualityCmaintenanceEnables connecting Gmail to MCP clients, allowing search, read, send, reply-all, forward, attachments, drafts, labels, and thread management across multiple Google accounts at once via a self-hosted Cloudflare Worker.MIT
- AlicenseNot gradedqualityBmaintenanceEnables searching, reading full conversations, and sending email across multiple IMAP/SMTP mailboxes from any MCP client, with multi-user support and per-user API tokens.MIT