slab-email
slab-email
Безголовый коннектор электронной почты для AI-агентов через REST и MCP.
slab-email — это локальный микросервис, который стандартизирует доступ к почтовым ящикам через нормализованный API и поверхность инструментов MCP.
Он предназначен для slab-agents и других сред выполнения ИИ, которым требуется контролируемый доступ к нескольким учетным записям электронной почты с безопасной обработкой учетных данных.
Что это такое?
slab-email — это не интерфейс электронной почты.
Он предоставляет:
Нормализованные возможности чтения/поиска/создания/отправки через почтовых провайдеров.
Admin REST для управления учетными записями и профилями доступа.
MCP-сервер для LLM/инструментальных клиентов.
Адаптеры на уровне провайдеров для:
Proton через Proton Mail Bridge (обязательно).
Общий IMAP/SMTP.
Gmail через OAuth2 + Gmail API.
Зашифрованное хранение учетных данных в SQLite.
Ограниченные токены коннектора с возможностями на профиль.
Идемпотентность отправки и базовое ограничение скорости для предотвращения зацикливания.
Related MCP server: Mailport
Архитектура
Общая схема:
slab-agentsвызывает/mcpс ограниченным токеном коннектора.REST-эндпоинты администратора настраивают провайдеров и профили доступа.
Учетные записи хранятся в SQLite; учетные данные зашифрованы в состоянии покоя.
Во время запроса создаются экземпляры провайдера из конфигурации учетной записи и расшифрованного секрета.
slab-emailвыполняет операции с API провайдера (IMAP/SMTP или Gmail API).
slab-agents (REST/MCP) -> slab-email
|
+-> sqlite (config + encrypted secrets)
+-> providers
+ proton_bridge -> Proton Mail Bridge (local IMAP/SMTP)
+ imap_smtp -> Any IMAP/SMTP
+ gmail -> Gmail API (OAuth2)Возможности
Поддержка нескольких учетных записей:
одновременное подключение и управление несколькими учетными записями.
Абстракция провайдера:
Proton Bridge + IMAP/SMTP общий + Gmail.
Разрешения с ограничением по коннектору:
чтение / черновик / отправка.
Идемпотентная отправка/ответ с
idempotencyKey.Потоковые полезные нагрузки чтения/списка и полная гидратация сообщений.
Зашифрованные секреты с использованием
AES-256-GCM.Токены доступа с ограничением по профилям.
Admin API и MCP API разделены требованиями к токенам.
Готовность к Docker и CI.
Стек
Node.js + TypeScript
Express 5
SQLite (
better-sqlite3)Zod
MCP SDK (
@modelcontextprotocol/sdk)IMAP/SMTP:
imapflow,nodemailerGmail:
googleapis/google-auth-library
Быстрый старт
1) Запустите локальный сервис
npm install
cp .env.example .envУстановите значения в .env и выполните:
export SLAB_EMAIL_ADMIN_KEY=change-me
export SLAB_EMAIL_MASTER_KEY=<32-byte base64 or 64-hex key>
npm run devОжидается:
GET /health→{"status":"ok"}./mcpдоступен поPOST /mcp.
2) Зарегистрируйте ограниченный профиль + токен
Используйте токен администратора для управления учетными записями/профилями и токен коннектора для обычного использования.
Конфигурация
Обязательные / релевантные переменные окружения:
HOST(по умолчанию127.0.0.1)PORT(по умолчанию6981)DATABASE_PATH(по умолчанию./data/slab-email.db)SLAB_EMAIL_ADMIN_KEY(обязательно)SLAB_EMAIL_MASTER_KEY(обязательно, 32-байтовый ключ)GOOGLE_CLIENT_IDGOOGLE_CLIENT_SECRETGOOGLE_REDIRECT_URI(по умолчаниюhttp://127.0.0.1:6981/api/oauth/google/callback)MAX_SENDS_PER_ACCOUNT_PER_HOUR(по умолчанию60)MCP_ALLOWED_ORIGINS(через запятую)MCP_ALLOWED_ORIGINS_HOSTS(через запятую)PUBLIC_ADMIN_ALLOWED_ORIGINS(через запятую)
Смотрите .env.example для минимальной начальной загрузки.
Настройка Proton Bridge
Установите Proton Mail Bridge.
Добавьте свою учетную запись Proton в Bridge и скопируйте сгенерированную конфигурацию IMAP/SMTP.
Настройте
slab-emailс этой конфигурацией через:POST /api/accounts/proton-bridge
Проверьте:
POST /api/accounts/:id/test
Этот проект намеренно не реализует автоматизацию входа в Proton. Используйте только учетные данные, сгенерированные Bridge.
Смотрите docs/proton.md.
Настройка Gmail
Создайте учетные данные OAuth в Google Cloud.
Установите
GOOGLE_CLIENT_ID,GOOGLE_CLIENT_SECRET,GOOGLE_REDIRECT_URIв.env.Запустите сервис.
Используйте:
POST /api/accounts/gmail/connectдля полученияauthorizationUrl.
Завершите OAuth в браузере.
Обратный вызов:
GET /api/oauth/google/callback
Учетная запись Gmail сохраняется с токеном обновления в зашифрованной БД.
Смотрите docs/gmail.md.
REST API
Базовые:
GET /health/api/*POST /mcp
Аутентификация:
Эндпоинты администратора:
Bearer <SLAB_EMAIL_ADMIN_KEY>Операционные + MCP:
Bearer <ограниченный токен коннектора>
Смотрите docs/api.md для полных примеров запросов/ответов.
MCP
Эндпоинт: POST /mcp
Инструменты:
email_list_accountsemail_searchemail_get_messageemail_list_threadsemail_get_threademail_create_draftemail_sendemail_reply
Смотрите docs/mcp.md для полезных нагрузок инструментов и использования.
Модель безопасности
SLAB_EMAIL_MASTER_KEYтребуется для шифрования/расшифровки секретов провайдера.Секреты никогда не возвращаются через admin REST/MCP.
Ограниченные токены коннектора заменяют ключ администратора в операционных контекстах.
Разрешения на чтение/запись/отправку применяются для каждого профиля доступа.
Отправка идемпотентна по
(accountId, idempotencyKey).Неизвестные результаты отправки отображаются как
SEND_OUTCOME_UNKNOWNи никогда не повторяются автоматически вслепую.Ограничение скорости отправки на учетную запись по умолчанию:
MAX_SENDS_PER_ACCOUNT_PER_HOUR.Журналы скрывают потенциально конфиденциальные ключи.
Модель данных
email_accounts: метаданные учетной записи и конфигурация провайдера (без секретов).email_account_secrets: зашифрованная полезная нагрузка (username,password,refreshToken).access_profiles+access_profile_accounts.access_tokens: хэшированные токены коннектора.send_operations: статус + поля аудита иidempotency_key.
Смотрите docs/architecture.md.
Docker
Dockerfileдля сборки образа.docker-compose.ymlдля локального запуска.
Примечание: Proton Bridge работает локально. Если Bridge запущен вне Docker на хосте, настройте сетевое взаимодействие осторожно (сетевое подключение хоста или эквивалент), так как контейнер не может по умолчанию предполагать доступ к учетным данным хоста 127.0.0.1.
Разработка
npm run dev # start with hot reload
npm test # run test suite
npm run lint
npm run typecheck
npm run build
npm start # run production bundleТестирование
Доменные тесты охватывают:
Жизненный цикл учетной записи и шифрование секретов
Проверка состояния OAuth
Область действия профиля и разрешения
Разделение полезных нагрузок поиска/списка и получения
Идемпотентность отправки
Поведение при неизвестном результате отправки
Аутентификация/область действия/выполнение инструментов MCP
Ограничения (MVP)
Нет поддержки вложений.
Нет механизма синхронизации почтовых ящиков, локального полнотекстового поискового индекса или вебхуковой push-синхронизации.
Нет пакетной обработки/кампаний исходящих писем.
Нет веб-интерфейса почты в этом сервисе.
Интеграция с slab-agents
Если существует ../slab-agents, используйте docs/slab-agents-integration.md для контракта интеграции и конфигурации.
Лицензия
MIT
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.
Hosted email for AI agents: create inboxes, send, receive, and reply over MCP with scoped API keys
Hosted email MCP for AI agents with inboxes, send/receive, memory, recovery, and credits.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables AI agents to search, read, send, and organize Gmail emails via MCP protocol.22144 npm2MIT
- AlicenseNot gradedqualityBmaintenanceConnects multiple IMAP and SMTP mailboxes to MCP clients like ChatGPT without exposing credentials, enabling email search and thread retrieval via natural language.1Apache 2.0
- AlicenseNot gradedqualityBmaintenanceConnects any IMAP/SMTP mailbox to AI agents via MCP, enabling email read, search, send, reply, and management through natural language.6 npmMIT
- FlicenseBqualityBmaintenanceEnables external AI agents to read, send, and manage email over IMAP/SMTP via MCP, including inbox listing, search, drafts, scheduled/batch sending, and operations like reply, archive, and labels.303-