Mailflow MCP
Mailflow
Обеспечьте надежное срабатывание сессий и промптов OpenCode из писем классического Outlook, предоставляя агенту OpenCode набор контролируемых инструментов MCP для работы с почтой.
Mailflow не встраивает мониторинг почты, правила, вызовы сессий, утверждение и UI снова в один большой плагин. Первая версия использует независимое ядро (Core), коннектор Windows Outlook, HTTP-адаптер OpenCode и узконаправленные MCP; оригинальный win-console остается без изменений, с совместимыми инструментами и путем миграции с приоритетом dry-run.
Итоговая форма
flowchart LR
O["Outlook Classic<br/>Windows 用户会话"] -->|"标准化邮件 / Outlook 命令"| C["Mailflow Core<br/>SQLite · 规则 · 队列 · 审批"]
C -->|"创建 session + prompt_async"| OC["OpenCode Server"]
OC --> A["OpenCode 会话 / Agent"]
A -->|"stdio MCP"| M["Mailflow MCP"]
M -->|"受 token 保护的 API"| C
C -->|"草稿 / 导出 / 经审批发送"| O
UI["本地中文管理台"] --> C
WC["原 win-console"] -. "兼容工具 / 能力注册 / 可回滚迁移" .-> CГраницы четкие:
Коннектор Outlook занимается только адаптацией данных Outlook, надежной доставкой и нативными действиями Outlook; конкретный механизм передачи не является контрактом Core.
Core — единственный источник истины, отвечающий за SQLite, версионирование правил, идемпотентность, повторные попытки, аудит, утверждение и команды коннектора.
Core напрямую вызывает HTTP API OpenCode для создания сессий и асинхронной отправки промптов.
MCP предоставляет агенту в сессии только инструменты для чтения писем, экспорта вложений, создания черновиков ответов и отправки с утверждением; он не прослушивает почтовый ящик.
Панель управления отвечает за правила, выполнение, утверждение и восстановление после сбоев, не полагаясь на панель Outlook.
Related MCP server: Outlook MCP
Плагин Outlook или плагин OpenCode?
Первая версия не делает «тяжелых плагинов» ни для одной из сторон. Это осознанный выбор:
Размещение | Подходит для размещения | Не размещается |
Коннектор Outlook Classic | Текущий профиль, чтение писем, черновики, вложения, отправка с утверждением | Движок правил, очередь задач, состояние сессии OpenCode |
Core Mailflow | Надежный рабочий процесс, SQLite, политики, утверждение, аудит | Жизненный цикл Outlook UI/COM |
OpenCode | Обычные сессии и агенты; использование инструментов почты через MCP | Фоновый мониторинг почты, долгосрочные контрольные точки |
Опциональная панель VSTO Outlook | «Обработать текущее письмо», статус и быстрый доступ к утверждению | Любая логика, требующая постоянного выполнения |
Итак: элементы дизайна, конечно, могут отображаться на панели расширения Outlook, но ядро не должно быть встроено туда. Надстройки VSTO/COM для классического Outlook подвержены влиянию разрядности Office, подписей, отключения загрузки и жизненного цикла процесса. Текущая поставляемая версия использует отдельный коннектор COM в виде трея; при добавлении тонкой панели VSTO в будущем не потребуется изменять Core, MCP или базу данных. Плагин OpenCode также является опциональным уровнем представления; запуск сессий уже выполняется через стабильный HTTP API.
Что уже включено в v0.1.0
Node.js 24 + встроенный SQLite, ядро без зависимостей времени выполнения.
Сохранение событий почты в БД, сопоставление правил, версионирование правил, конечный автомат выполнения, идемпотентные ключи, аренда, повторные попытки с экспоненциальной задержкой и dead letter.
Создание сессии OpenCode и
prompt_asyncс поддержкой стратегий per-message, per-conversation и pinned-session.Безопасная оболочка промпта: содержимое письма явно помечено как ненадежные данные, с ограничениями на тело/вложения.
Стандартный MCP stdio-сервер, а также псевдонимы старых инструментов, такие как
outlook_search,outlook_read,outlook_attachments.Коннектор Windows x64 Outlook Classic: доставка писем, нативное чтение/запись Outlook, идемпотентность команд и сверка отправки.
Защитный цикл
send_unknown: 5 ограниченных по времени проверок с задержкой, ручное подтверждение в панели управления и «создание нового утверждения после подтверждения неотправки»; ни одна проверка не приводит к автоматической повторной отправке.Черновики ответов сначала синхронизируются с Outlook, затем открываются для утверждения; хэш темы, получателей и тела предотвращает отправку старого черновика, автоматическая отправка по умолчанию отключена.
Панель управления на китайском языке, REST API и поток состояния SSE.
Импорт правил/состояния
win-consoleв режиме dry-run, регистрация возможностей/heartbeat и четкий путь отката.Тестирование Core на Linux, сборка коннектора Windows и рабочий процесс GitHub Release, управляемый тегами.
Быстрый старт
1. Загрузка
Получите из GitHub Releases:
email-workflow-0.1.0-runtime.zip: Core, MCP, панель управления, документация и исходный код коннектора;email-workflow-0.1.0-outlook-classic-win-x64.zip: автономный коннектор Windows x64;aleygey-email-workflow-0.1.0.tgz: пакет для запуска в формате npm.
Core требует Node.js 24+; коннектор требует Windows x64 и классический настольный Outlook.
2. Сначала инициализируйте ключи и объедините конфигурацию безопасности OpenCode
Не запускайте OpenCode первым и не перезаписывайте существующий opencode.json/opencode.jsonc файлами примеров. Сначала сгенерируйте .env в каталоге распакованного runtime:
node dist/src/cli.js init --output .envОбъедините agent.mailflow-email и mcp.mailflow из examples/opencode-mailflow-complete.json в существующую конфигурацию OpenCode, сохранив существующие provider, model, agent, plugin и другие MCP. Пользователи runtime zip должны изменить command в примере на абсолютный путь к своей машине, например:
"command": ["node", "C:\\Mailflow\\email-workflow\\dist\\src\\mcp\\cli.js"]Пример не содержит встроенных секретов. В среде, где запускается OpenCode, должна быть установлена переменная MAILFLOW_MCP_TOKEN со значением, совпадающим с MAILFLOW_API_TOKEN в .env; это не токен коннектора:
$env:MAILFLOW_MCP_TOKEN = "<复制 .env 中 MAILFLOW_API_TOKEN 的值>"MAILFLOW_CONNECTOR_TOKEN используется только коннектором Outlook и должен отличаться от токена API/MCP. init по умолчанию отказывается перезаписывать существующий .env.
3. Запустите OpenCode
opencode serve --hostname 127.0.0.1 --port 4096OpenCode должен быть запущен из среды, где только что была установлена MAILFLOW_MCP_TOKEN, чтобы разрешить {env:MAILFLOW_MCP_TOKEN} в примере.
4. Запустите Core Mailflow
При необходимости измените адрес OpenCode в .env, затем запустите в каталоге распакованного runtime:
node --env-file=.env dist/src/cli.js serveДля рабочего запуска необходимо настроить два непустых и разных токена; запуск Core без аутентификации не поддерживается как способ по умолчанию. По умолчанию OPENCODE_MAILFLOW_AGENT=mailflow-email и OPENCODE_REQUIRE_SAFE_AGENT=true; не отключайте проверку, чтобы «просто запустить».
Откройте http://127.0.0.1:8798. При первом входе в панель управления сохраните API-токен в настройках.
Запуск из исходного кода:
npm ci
npm run check
npm run dev5. Запустите коннектор Outlook
Распакуйте коннектор Windows, скопируйте connector.example.json как:
%LOCALAPPDATA%\Mailflow\OutlookConnector\connector.jsonУстановите тот же токен коннектора, что и в Core, оставьте coreBaseUrl как http://127.0.0.1:8798, затем запустите:
.\mailflow-outlook-connector.exeПолные инструкции по настройке, передаче ключей и устранению неполадок см. в руководстве по эксплуатации.
Как письмо становится сессией
Коннектор отправляет письмо по стабильному контракту; Core получает его, дедуплицирует по ID коннектора/события; внутренний способ приема/восстановления коннектора не входит в бизнес-контракт.
Core нормализует письмо, сохраняет в SQLite и выполняет сопоставление с фиксированной версией включенных правил.
При совпадении создается выполнение с стабильным идемпотентным ключом; worker арендует выполнение, при отключении повторяет попытки с экспоненциальной задержкой.
Адаптер OpenCode создает или повторно использует сессию и добавляет в промпт стабильную метку
mailflow_run_id.Core перед каждой отправкой промпта проверяет, что целевой агент
mailflow-emailсуществует и все еще имеет права fail-closed; если агенту нужна информация о письме, он вызывает Core через разрешенные инструменты MCP только для чтения.Ответ AI сначала синхронизируется как черновик Outlook, и только после успеха появляется утверждение. При утверждении одновременно проверяются версия черновика Core и нормализованные хэши темы/получателей/тела Outlook; каждый шаг записывается в журнал аудита.
Безопасные значения по умолчанию
Core по умолчанию прослушивает только
127.0.0.1; соединение с OpenCode принимается только через loopback HTTP или HTTPS. Удаленный открытый HTTP по умолчанию отклоняется.При первом запуске необходимо выполнить
node dist/src/cli.js init --output .env; Core требует одновременного существования API-токена и токена коннектора, их различия и длины не менее 32 байт UTF-8 каждый, а также отклоняет публичные заполнители из примеров. MCP использует API-токен черезMAILFLOW_MCP_TOKEN, коннектор использует только другой токен.Все запросы на запись к Core с телом должны объявлять Content-Type JSON; не-JSON запросы сразу возвращают
415.Агент по умолчанию —
mailflow-email. Core перед каждой отправкой промпта читает определение агента из OpenCode: сначала должна быть граница deny*catch-all, затем только перечисленные разрешенияread/glob/grep/listв рабочем пространстве, deny для*.env/*.env.*на любом уровне каталогов, а также точно именованные инструменты MCP Mailflow только для чтения из примера. Белый список MCP только для чтения: search/get/list-attachments/get-run и чисто читаемые legacy search/read;outlook_attachments, который может экспортировать файлы, не входит в него. Отсутствие агента, нераспознаваемый ответ о разрешениях или появление других allow приводят к fail-closed.Правила после создания по умолчанию отключены; сначала preview, затем включение.
Тело письма — это данные, а не инструкции; вложения по умолчанию раскрывают только метаданные.
Ответы требуют ручного утверждения. Ответ AI сначала должен завершить синхронизацию черновика Outlook; изменение в интерфейсе утверждения аннулирует старое утверждение, ставит в очередь
draft.update, после успешной синхронизации создает новое утверждение, и пользователь должен снова нажать «Утвердить». Если после утверждения тема, To/Cc/Bcc или тело в Outlook изменились, несовпадение нормализованных хэшей предотвращает отправку.При неопределенном результате
MailItem.Send()между процессами выполнение переходит вsend_unknown. Core выполняет только 5 проверок состояния с задержкой; панель управления может «Проверить Outlook», «Подтвердить отправку» или «Подтвердить неотправку». После подтверждения неотправки старое утверждение становится недействительным и создается новое утверждение, которое снова требует нажатия; система никогда не превращает сверку в автоматическую повторную отправку.Импорт старых данных по умолчанию в режиме dry-run; для применения импорта требуется явный
--apply.
Агент только для чтения в текущей версии все еще может читать выбранное рабочее пространство и через разрешенные инструменты MCP запрашивать другие письма в этом Core; это не изолированная песочница данных для каждого выполнения. SQLite также постоянно хранит тела писем и исходные снимки; в v0.1.0 нет автоматической задачи очистки с периодом хранения. Для производственного использования следует настроить выделенное рабочее пространство/почтовый ящик с минимальными правами, контролируемые учетные записи моделей, ACL каталогов Windows, полное шифрование диска и операционный период хранения данных; строгая изоляция между проектами/почтовыми ящиками требует последующих per-run capability. Подробнее см. SECURITY.md.
MAILFLOW_ALLOW_UNAUTHENTICATED_LOOPBACK=1, OPENCODE_ALLOW_INSECURE_REMOTE=1 и OPENCODE_REQUIRE_SAFE_AGENT=false предназначены только для изолированной локальной отладки разработки, не являются рабочей конфигурацией и не могут использоваться для обработки реальных писем.
Не выставляйте Core или сервер OpenCode напрямую в публичную сеть. При развертывании через Windows/WSL или между машинами используйте HTTPS, ограничение источника и брандмауэр. Дополнительные сведения см. в SECURITY.md.
win-console не исчезнет
Старый репозиторий не удаляется, не перезаписывается, история не изменяется. Mailflow дополнительно предоставляет:
Совместимые псевдонимы для старых имен инструментов MCP;
Регистрацию
external-capabilitiesи heartbeat;Отчеты о миграции для правил, processed receipt, очередей и контрольных точек;
По умолчанию dry-run, явный apply, SHA-256 исходных файлов и целевое отображение;
Шаги предотвращения двойного срабатывания при переключении и однокнопочный логический откат.
Полное пошаговое отображение см. в docs/legacy-win-console-baseline.md.
Навигация по документации
Полный дизайн: пользовательский интерфейс, шесть полных потоков, API, данные, безопасность, тестирование и поэтапное внедрение.
Архитектурные границы: почему разбито на Core, коннектор, адаптер, MCP и опциональный UI.
Руководство по эксплуатации: установка, настройка OpenCode/MCP, резервное копирование, миграция, откат и устранение неполадок.
Базовый уровень совместимости
win-console: старые функции, старые данные и требования к откату.
Разработка и проверка
npm ci
npm run typecheck
npm test
npm run pack:releaseКоннектор Windows:
dotnet build connector/Mailflow.OutlookConnector/Mailflow.OutlookConnector.csproj -c ReleaseПоскольку COM Outlook зависит от реального профиля пользователя Windows, CI отвечает за компиляцию Windows и не-COM тесты; перед выпуском все равно следует выполнить smoke-тест на целевом компьютере с классическим Outlook: подключение, прием писем, синхронизация черновиков, двойное утверждение и отправка.
Лицензия
This server cannot be deployed
Maintenance
Related MCP Connectors
Email infrastructure for AI agents — send, receive, search, and reply to email over MCP.
Email for AI agents: send, receive with a safety verdict, reply and approve, as MCP tools.
1Email inboxes for AI agents: send, receive, reply, search, and manage threaded email over MCP.
Your agent needs a mailbox of its own — to receive, thread, draft and send, with attachments, without borrowing your personal inbox or your company's SMTP. **What you can ask for** • "Create an inbox for this agent and tell me its address." • "Read the new messages in this thread and draft a reply." • "Send this message with the attachment and wait for the response." • "Search this inbox for everything from that domain." • "Show delivery metrics and the events on this inbox." **How to use it** Point any MCP client at https://mcp.aisa.one/mail/mcp and sign in with OAuth — there is no key to create or paste. 49 tools: create and delete inboxes, list and read messages, raw message bodies, attachments, threads, drafts and draft attachments, send and reply, message search, inbox events, metrics, and list entries — reads and writes. **Why this rather than the source** A real inbox an agent owns, rather than an SMTP credential it borrows from a human. **It is also a door to the rest** The same login reaches 26 sources and 580+ operations. Find the contact elsewhere in the catalogue, then write to them from here — without adding a second server. **What it costs** Finding and inspecting an operation is free. Running one is billed per call at API prices, with no seat and no monthly minimum, and every call takes max_price_usd so an agent cannot overspend by accident. **Where else it reaches** https://mcp.aisa.one/sales/mcp finds the person to write to.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to interact with Microsoft 365 Outlook Mail, allowing email operations via natural language.28 npmMIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to manage Microsoft Outlook emails through the Microsoft Graph API, supporting operations like listing, reading, sending, and moving emails.MIT
- FlicenseNot gradedqualityDmaintenanceEnables LLMs and MCP clients to read, search, and manage Microsoft Outlook emails through a standardized interface.-
- FlicenseNot gradedqualityDmaintenanceProvides LLMs with access to Microsoft Outlook email functionality, allowing them to read, search, compose, and manage emails through a standardized MCP interface on Windows.-