Mailflow MCP
Mailflow
クラシック版Outlookのメールを確実にOpenCodeセッションとプロンプトにトリガーし、同時にOpenCodeエージェントに制御されたメールMCPツールセットを提供します。
Mailflowは、メール監視、ルール、セッション呼び出し、承認、UIを再び大きなプラグインに統合することはありません。初版では、独立したCore、Windows Outlookコネクタ、OpenCode HTTPアダプタ、および狭い責務の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はOpenCode HTTP APIを直接呼び出してセッションを作成し、プロンプトを非同期で送信します。
MCPはセッション内のエージェントにのみ、メールの読み取り、添付ファイルのエクスポート、返信下書き、および承認済み送信ツールを提供します。メールボックスを監視しません。
管理コンソールはルール、実行、承認、および障害復旧を担当し、Outlookパネルに依存しません。
Related MCP server: Outlook MCP
Outlookプラグインか、OpenCodeプラグインか?
初版では、どちらの側にも「重いプラグイン」は作成しません。これは意図的な選択です:
配置場所 | 適した内容 | 配置しない内容 |
Outlook Classicコネクタ | 現在のプロファイル、メール読み取り、下書き、添付ファイル、承認済み送信 | ルールエンジン、タスクキュー、OpenCodeセッション状態 |
Mailflow Core | 信頼性の高いワークフロー、SQLite、ポリシー、承認、監査 | Outlook UI/COMライフサイクル |
OpenCode | 通常のセッションとエージェント。MCP経由でメールツールを使用 | バックグラウンドメール監視、長期チェックポイント |
オプションのOutlook VSTOパネル | 「現在のメールを処理」、ステータス、承認クイックエントリ | 継続実行が必要なコアロジック |
つまり:設計内容はもちろんOutlook拡張パネルに表示できますが、コアをそこに配置すべきではありません。クラシックOutlookのVSTO/COMアドインは、Officeのビット数、署名、読み込み無効化、プロセスライフサイクルの影響を受けます。現在のリリース可能バージョンは、独立したトレイ型COMコネクタを使用しています。将来的に薄いVSTOパネルを追加する場合でも、Core、MCP、データベースを変更する必要はありません。OpenCodeプラグインも同様にオプションの体験レイヤーであり、セッションのトリガーは安定したHTTP APIによって既に完了しています。
v0.1.0 に含まれるもの
Node.js 24 + 組み込みSQLiteによるゼロランタイム依存のCore。
メールイベントのデータベース保存、ルールマッチング、ルールバージョン、runステートマシン、冪等キー、リース、バックオフリトライ、デッドレター。
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インポート、機能登録/ハートビート、明確なロールバックパス。Linux Coreテスト、Windowsコネクタビルド、タグ駆動のGitHubリリースワークフロー。
クイックスタート
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 を生成します:
node dist/src/cli.js init --output .envexamples/opencode-mailflow-complete.json の agent.mailflow-email と mcp.mailflow を既存のOpenCode設定にマージし、既存のprovider、model、agent、plugin、その他のMCPを保持します。ランタイムzipユーザーは、サンプルの command をローカルの絶対パスに変更します。例:
"command": ["node", "C:\\Mailflow\\email-workflow\\dist\\src\\mcp\\cli.js"]サンプルには秘密情報は埋め込まれていません。OpenCodeを起動するのと同じユーザー環境に MAILFLOW_MCP_TOKEN を設定する必要があり、その値は .env の MAILFLOW_API_TOKEN と同じです。これはコネクタトークンではありません:
$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. Mailflow Coreを起動する
必要に応じて .env のOpenCodeアドレスを変更し、ランタイム解凍ディレクトリで起動します:
node --env-file=.env dist/src/cli.js serveリリース実行には、2つの非空で異なるトークンを設定する必要があります。認証なしの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.jsonCoreと同じコネクタトークンを設定し、coreBaseUrl を http://127.0.0.1:8798 のままにし、実行します:
.\mailflow-outlook-connector.exe完全な設定、キー受け渡し、トラブルシューティングの手順は運用マニュアルを参照してください。
メールがセッションになる仕組み
コネクタは安定した契約に従ってメールを送信します。Coreは受信後、コネクタ/イベントIDで重複排除します。コネクタの内部取り込み/復旧方法はビジネス契約には含まれません。
Coreはメールを正規化し、SQLiteに保存し、有効なルールの固定バージョンに対してマッチングを実行します。
ヒットすると、安定した冪等キーを持つrunが作成されます。ワーカーがrunをリースし、オフライン時は指数バックオフでリトライします。
OpenCodeアダプタはセッションを作成または再利用し、プロンプトに
mailflow_run_id安定マーカーを追加します。Coreはプロンプトを送信するたびに、ターゲットの
mailflow-emailエージェントが存在し、依然としてfail-closed権限であることを検証します。エージェントがメール情報を必要とする場合、許可された読み取り専用MCPツールを介してCoreにコールバックします。AI応答はまずOutlook下書きとして同期され、成功した後にのみ承認が表示されます。承認時には、Coreの下書きバージョンとOutlookの件名/宛先/本文の正規化ハッシュの両方を検証します。各ステップで監査ログが書き込まれます。
セキュリティデフォルト値
Coreはデフォルトで
127.0.0.1のみをリッスンします。OpenCode接続はループバックHTTPまたはHTTPSのみを受け入れます。リモートの平文HTTPはデフォルトで拒否されます。初回起動時は、まず
node dist/src/cli.js init --output .envを実行する必要があります。CoreはAPIトークンとコネクタトークンの両方が存在し、互いに異なり、それぞれ少なくとも32 UTF-8バイトであることを強制し、サンプルの公開プレースホルダーを拒否します。MCPはMAILFLOW_MCP_TOKENを介してAPIトークンを使用し、コネクタは別のトークンのみを使用します。本文を含むすべてのCore書き込みリクエストは、JSON Content-Typeを宣言する必要があります。非JSONリクエストは直接
415を返します。デフォルトのエージェントは
mailflow-emailです。Coreはプロンプトを送信するたびに、OpenCodeからエージェント定義を読み取ります。まずcatch-allの*deny境界が必要であり、その後、ワークスペース内のread/glob/grep/list、任意のディレクトリ階層をカバーする*.env/*.env.*deny、およびサンプルで正確に命名された読み取り専用Mailflow MCPツールのみを列挙できます。読み取り専用MCPホワイトリストは、search/get/list-attachments/get-run と純粋読み取りのレガシー search/read です。ファイルをエクスポートできるoutlook_attachmentsはこれに含まれません。エージェントの欠落、認識できない権限応答、またはその他のallowはすべてfail closedになります。ルールは作成後デフォルトで無効になっており、まずプレビューしてから有効にします。
メール本文はデータであり、指示ではありません。添付ファイルはデフォルトでメタデータのみを公開します。
返信は必ず人間の承認が必要です。AI応答はまずOutlook下書きの同期を完了する必要があります。承認インターフェースでの変更は、古い承認を無効にし、
draft.updateをキューに入れ、同期成功後に新しい承認を生成します。ユーザーは再度承認をクリックする必要があります。承認後、Outlookの件名、To/Cc/Bcc、または本文が変更された場合、正規化ハッシュが一致せず、送信が阻止されます。MailItem.Send()のクロスプロセス結果が不確定な場合、send_unknown状態になります。Coreは5回の遅延ステータスチェックのみを行います。管理コンソールでは「Outlookを確認」「送信済みを確認」「未送信を確認」が可能です。未送信を確認すると、古い承認は無効になり、新しい承認が生成されます。再度クリックする必要があり、システムは絶対にreconciliationを自動再送信にしません。旧データのインポートはデフォルトでdry-runです。インポートを適用するには、明示的に
--applyが必要です。
現在のバージョンの読み取り専用エージェントは、選択されたワークスペースを読み取ることができ、許可されたMCPツールを介してそのCore内の他のメールをクエリできます。これはrunごとの独立したデータサンドボックスではありません。SQLiteはメール本文と元のスナップショットを永続的に保存し続け、v0.1.0には自動保存期間のクリーンアップタスクはありません。本番環境では、専用の最小権限ワークスペース/メールボックス、制御されたモデルアカウント、WindowsディレクトリACL、フルディスク暗号化、運用側のデータ保持期間を設定する必要があります。厳格なクロスプロジェクト/クロスメールボックス分離には、将来の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登録とハートビート。ルール、processed receipt、キュー、チェックポイントの移行レポート。
デフォルトのdry-run、明示的なapply、ソースファイルSHA-256、ターゲットマッピング。
切り替え時の二重トリガー防止手順とワンクリック論理ロールバック。
完全な項目別マッピングは docs/legacy-win-console-baseline.md を参照してください。
ドキュメントナビゲーション
完全設計書:ユーザーインターフェース、6つの完全なフロー、API、データ、セキュリティ、テスト、段階的実装。
アーキテクチャ境界:Core、コネクタ、アダプタ、MCP、オプションUIに分割する理由。
運用マニュアル:インストール、OpenCode/MCP設定、バックアップ、移行、ロールバック、トラブルシューティング。
win-console互換ベースライン:旧機能、旧データ、ロールバック要件。
開発と検証
npm ci
npm run typecheck
npm test
npm run pack:releaseWindowsコネクタ:
dotnet build connector/Mailflow.OutlookConnector/Mailflow.OutlookConnector.csproj -c ReleaseOutlook COMは実際のWindowsユーザープロファイルに依存するため、CIはWindowsコンパイルと非COMテストを担当します。リリース前には、ターゲットマシンのクラシック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.-