Email (IMAP/SMTP) について
IMAPとSMTPでメールを読み取り、検索、送信、管理するMCPサーバーです。iCloud、Gmail、Yahoo、Outlookとカスタムプロバイダーに対応し、送信などの破壊的操作には制限を設けています。
主な機能
- 01メールの読み取り・検索・管理
- 02メールと返信の送信
- 03下書きの作成・管理
- 04メールボックスとフラグの管理
- 05添付ファイルの取得・送信
- 06宛先数と送信頻度の制限
活用シーン
- 01送信者や日付でメールを検索
- 02本文の確認と添付ファイルの取得
- 03下書きの保存や既存内容の更新
- 04確認と制限のもとでメールを送信
MCP 対応
メールボックス、メッセージ、下書き、送信のツールをMCPクライアントに提供します。送信やその他の破壊的操作では、ホスト側で明示的なユーザー確認が必要です。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y @mindstone/mcp-server-email-imapEMAIL_IMAP_EMAILEmail addressEMAIL_IMAP_PASSWORDシークレットApp-specific passwordEMAIL_IMAP_PROVIDERProvider — icloud, gmail, yahoo, outlook, or custom (auto-detected from email domain if unset)EMAIL_IMAP_IMAP_HOSTCustom IMAP host (for provider=custom)EMAIL_IMAP_SMTP_HOSTCustom SMTP host (for provider=custom)EMAIL_IMAP_IMAP_PORTCustom IMAP portEMAIL_IMAP_SMTP_PORTCustom SMTP portEMAIL_IMAP_MAX_RECIPIENTSSafety cap: maximum combined To+CC+BCC recipients per email_send call. Defaults to 25; raising bypasses spam-prevention guardrails against prompt-injection-driven mass sends.EMAIL_IMAP_RATE_LIMIT_PER_HOURSafety cap: maximum email_send calls per rolling window. Defaults to 50; protects against runaway sends when injection content escapes the LLM's intent.EMAIL_IMAP_RATE_LIMIT_WINDOW_MSSliding-window length for the rate limit (ms)MCP_WORKSPACE_PATHWorkspace directory that email_get_attachment downloads into (fresh email-imap-attachment-* staging directories). Defaults to the system temp directory.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
@mindstone/mcp-server-email-imap
Model Context Protocol ホスト向けのメール IMAP/SMTP MCP サーバーです。IMAP と SMTP を通じてメールの閲覧、検索、送信、管理ができます。iCloud Mail、Gmail、Yahoo Mail、Outlook / Microsoft 365、カスタム IMAP プロバイダーに対応しています。
ステータス
- バージョン: 0.3.2 · npm
- 認証: アプリパスワード(
EMAIL_IMAP_PASSWORD) - ツール: 17(メールボックス、メッセージ、下書き、送信)
- 提供形態: ローカルプロトコル
- 機械可読:
STATUS.json
必要条件
- Node.js 20+
- npm
ワンクリックインストール
ボタンをクリックすると、ホストから次の項目を入力するよう求められます:EMAIL_IMAP_EMAIL、EMAIL_IMAP_PASSWORD、EMAIL_IMAP_IMAP_PORT、EMAIL_IMAP_SMTP_PORT、EMAIL_IMAP_MAX_RECIPIENTS、EMAIL_IMAP_RATE_LIMIT_PER_HOUR、EMAIL_IMAP_RATE_LIMIT_WINDOW_MS。
Claude Desktop / Claude Code / Goose / Continue.dev 向けの手動設定(Email (IMAP/SMTP))
{
"mcpServers": {
"Email (IMAP/SMTP)": {
"command": "npx",
"args": [
"-y",
"@mindstone/mcp-server-email-imap"
],
"env": {
"EMAIL_IMAP_EMAIL": "",
"EMAIL_IMAP_PASSWORD": "",
"EMAIL_IMAP_IMAP_PORT": "993",
"EMAIL_IMAP_SMTP_PORT": "587",
"EMAIL_IMAP_MAX_RECIPIENTS": "25",
"EMAIL_IMAP_RATE_LIMIT_PER_HOUR": "50",
"EMAIL_IMAP_RATE_LIMIT_WINDOW_MS": "3600000"
}
}
}
}
クイックスタート
インストールとビルド
cd <path-to-repo>/connectors/email-imap
npm install
npm run build
npx(公開後に一度だけ実行)
npx -y @mindstone/mcp-server-email-imap
ローカル
node dist/index.js
設定
環境変数
EMAIL_IMAP_EMAIL— メールアドレスEMAIL_IMAP_PASSWORD— アプリ固有のパスワードEMAIL_IMAP_PROVIDER— メールプロバイダー(icloud、gmail、yahoo、outlook、 またはcustom)。未設定の場合、コネクターはメールアドレスのドメインからプロバイダーを自動検出します (例:@gmail.com→gmail、@icloud.com→icloud、@outlook.com→outlook、@yahoo.co.uk→yahoo)。ドメインが 認識されない場合、コネクターは明確なエラーを表示して起動を拒否します。デフォルトのプロバイダーに 暗黙的にフォールバックすることはありません。EMAIL_IMAP_IMAP_HOST— カスタム IMAP ホスト(任意。customプロバイダー用)EMAIL_IMAP_SMTP_HOST— カスタム SMTP ホスト(任意。customプロバイダー用)EMAIL_IMAP_IMAP_PORT— カスタム IMAP ポート(デフォルト:993)。設定すれば、平文通信の ポート(imap_port=143、smtp_port=25)も使用できます。平文通信を許可するかどうかは ホスト側の判断に委ねられます。EMAIL_IMAP_SMTP_PORT— カスタム SMTP ポート(デフォルト:587)MCP_WORKSPACE_PATH— 添付ファイルの入出力に使用するワークスペースディレクトリ。email_get_attachmentは、このパスの直下に新しい非公開のemail-imap-attachment-*ステージングディレクトリを作成し、その中にダウンロードします(返されるpathはそのディレクトリを指します)。また、email_send/email_save_draft/email_update_draftで 送信する添付ファイルは、そのディレクトリ内からのみ読み取ることができます(シンボリックリンク経由を含め、 ディレクトリ外のパスは拒否されます)。 ダウンロードに成功した場合、ステージングディレクトリは保持されます(返されたファイルはその中にあります)。 蓄積されたemail-imap-attachment-*ディレクトリは、ファイルが不要になれば安全に削除できます。未設定の場合、 システムの一時ディレクトリがデフォルトで使用されます。MCP_HOST_BRIDGE_STATE— 認証情報の管理に使用するホストブリッジ状態ファイルのパス(任意)MINDSTONE_REBEL_BRIDGE_STATE—MCP_HOST_BRIDGE_STATEの後方互換エイリアス
送信側の上限(email_send)
これらの上限は、プロンプトインジェクションを受けた大量送信による被害を抑えるためのサーキットブレーカーです。 デフォルト値はソースに組み込まれているため、ホスト側で何も設定しなくても安全に動作します。ホスト側では、 デプロイごとに上限をさらに厳しく設定できます。
EMAIL_IMAP_MAX_RECIPIENTS—email_send呼び出しごとの To、CC、BCC の合計宛先数の上限 (デフォルト:25)。上限を超えると、code: "RECIPIENT_LIMIT_EXCEEDED"を含む構造化エラーが返されます。EMAIL_IMAP_RATE_LIMIT_PER_HOUR— ローリングウィンドウ内でのemail_send呼び出し回数の上限 (デフォルト:50)。上限を超えると、code: "RATE_LIMIT_EXCEEDED"、resetAt(ISO-8601)、およびretryAfterMsを含む構造化エラーが返され、 ホスト/LLM はリクエストを控えられます。EMAIL_IMAP_RATE_LIMIT_WINDOW_MS— レート制限のスライディングウィンドウの長さ(ミリ秒単位) (デフォルト:3600000— 1 時間)。
ホスト設定の例
Claude Desktop / Cursor
{
"mcpServers": {
"Email": {
"command": "npx",
"args": ["-y", "@mindstone/mcp-server-email-imap"],
"env": {
"EMAIL_IMAP_EMAIL": "[email protected]",
"EMAIL_IMAP_PASSWORD": "your-app-specific-password",
"EMAIL_IMAP_PROVIDER": "icloud"
}
}
}
}
ローカル開発(npm への公開は不要)
{
"mcpServers": {
"Email": {
"command": "node",
"args": ["<path-to-repo>/connectors/email-imap/dist/index.js"],
"env": {
"EMAIL_IMAP_EMAIL": "[email protected]",
"EMAIL_IMAP_PASSWORD": "your-app-specific-password",
"EMAIL_IMAP_PROVIDER": "icloud"
}
}
}
}
セキュリティ:email_send ではホストによる確認が必要です
email_send は破壊的で、対象範囲が限定されない操作です。ユーザーに代わって、任意の外部受信者にメールを送信します。このツールには、それに応じて destructiveHint: true および openWorldHint: true の注釈が付けられています。
ホストは、email_send を呼び出すたびに、ユーザーの明示的な確認を必須にしなければなりません。 ユーザー確認のゲートだけが、プロンプトインジェクションの内容(たとえば、email_get_message の本文内のテキスト)によって LLM がユーザーの意図に反してメールを送信させられることを防ぐ、確実な対策です。ツールの注釈だけを根拠に email_send を自動承認しないでください。受信者の全リスト、件名、本文をユーザーに表示し、コネクターに呼び出しを転送する前に、クリックまたはキー入力による明示的な承認を必須にしてください。
コネクターでは、さらに以下を適用します。
- To+CC+BCC の合計受信者数の上限(
EMAIL_IMAP_MAX_RECIPIENTS、デフォルトは25)。 - プロセスごとのローリングレート制限
(
EMAIL_IMAP_RATE_LIMIT_PER_HOUR/EMAIL_IMAP_RATE_LIMIT_WINDOW_MS、 デフォルトは50/3600000ms)。
いずれかの上限を超えると、ツールは構造化されたエラー JSON
({ ok: false, code: "RECIPIENT_LIMIT_EXCEEDED" | "RATE_LIMIT_EXCEEDED", … })
を返し、SMTP トランスポートには接続しません。上限は環境変数で調整できますが、デフォルト値はソースに組み込まれているため、安全な動作を実現するためにホストが環境変数を設定する必要はありません。
セキュリティ:信頼できないコンテンツのエンベロープと破壊的なツール
コネクターが返す、攻撃者に制御されるすべてのテキストフィールド(メッセージ本文、件名、差出人/宛先の表示名、Message-ID、添付ファイル名、MIME コンテンツタイプとパート識別子、メールボックス名と特別用途の値、メッセージフラグのキーワード(email_set_flags 経由で書き込み可能です。キーワードは、文字、数字、_、$、.、- に、任意で先頭の \ を加えた保守的な文字セットの許可リストに一致する必要があるため、スペース、括弧、引用符、CR/LF などの atom-specials が IMAP コマンドに渡されることはありません)、下書きの概要、IMAP/SMTP サーバーまたはベンダー SDK に由来するエラーテキスト)は、ホストの LLM が指示ではなくデータとして扱うよう、<untrusted-content …>…</untrusted-content> エンベロープで囲まれます(閉じタグによるエスケープの突破にも対処します)。以前に返された値(mailbox、part、メールボックス名、フラグキーワード)を受け取るツールは、エンベロープ形式のまま受け付け、入力時にエンベロープを 1 層取り除きます。
email_send に加えて、destructiveHint: true の注釈が付けられているツールは、email_save_draft、email_update_draft(古い下書きを置き換えて削除します)、email_create_mailbox、email_rename_mailbox、email_delete(Trash メールボックスがない場合は完全に削除します。Trash への移動に失敗した場合は、完全削除に暗黙に切り替えるのではなく、メッセージをそのまま残して TRASH_MOVE_FAILED エラーで中断します)、email_move_messages(代替処理では、すべての UID について宛先へのコピーが完了したことを確認した後にのみ、元のメッセージを完全に削除します。確認できない場合は MOVE_COPY_UNVERIFIED エラーで中断します)、email_set_flags(\Deleted はメールボックスを閉じる際にメッセージを完全削除対象としてマークします)、email_delete_draft(常に完全削除します)、および email_delete_mailbox(フォルダーとその中のすべてのメッセージを削除します)です。ホストは、これらのツールにも email_send と同じ明示的なユーザー確認を必須にしてください。
ツール(17)
設定
configure_email_imap— メールアカウントの認証情報とプロバイダーを設定します
メールボックス
email_list_mailboxes— すべてのメールフォルダー/メールボックスとメッセージ数を一覧表示しますemail_get_mailbox_status— 未読数と最新の件名を含むメールボックスのステータスを取得しますemail_create_mailbox— 新しいメールボックス/フォルダーを作成します(破壊的)email_rename_mailbox— メールボックス/フォルダーの名前を変更します(INBOX は変更できません。破壊的)email_delete_mailbox— メールボックス/フォルダーとその内容を完全に削除します(破壊的)
メッセージ
email_search_messages— 送信者/件名/未読のフィルター、since/beforeの日付フィルター、before_uidによるカーソルページネーションを使ってメールを検索します(limitを省略した場合、最大50件のメッセージを返します。hasMore: trueは結果がさらにあることを示します)email_get_message— UID でメールの全文を取得します(本文、件名、アドレス、Message-ID、添付ファイル名/MIME メタデータは<untrusted-content>エンベロープ内で返されます)email_get_attachment— 添付ファイルをワークスペースのサンドボックスにダウンロードします(MCP_WORKSPACE_PATHを参照)。排他的に新規作成するため、既存のファイルが上書きされることはありませんemail_move_messages— メールをフォルダー間で移動します(ソースのフォルダーをフォールバックで expunge するのは、コピーが完全であると確認できた場合に限られます。破壊的操作)email_delete— メールを削除します(ゴミ箱が存在する場合はそこに移動し、存在しない場合は完全に expunge します。ゴミ箱への移動に失敗するとエラーで中止します。破壊的操作)email_set_flags— メッセージのフラグ(既読、スター付き)を設定または解除します(フラグのキーワードはエンベロープ内で返され、入力時には文字セットの許可リストと一致する必要があります。破壊的操作)
下書き
email_save_draft— メールの下書きを保存します(添付ファイルに対応しています。リモートアカウントを変更します — 破壊的操作)email_list_drafts— 下書きメールボックスの下書きを一覧表示します(1回の呼び出しにつき最大50件。hasMore: trueは下書きがさらにあることを示します)email_update_draft— 下書きの内容を置き換えます(新しいバージョンを保存してから古いバージョンを削除します。破壊的操作)email_delete_draft— 下書きを完全に削除します(破壊的操作)
送信
email_send— メールまたは返信を送信します(添付ファイルに対応しています)
ライセンス
FSL-1.1-MIT — Functional Source License, Version 1.1。将来 MIT ライセンスとなるライセンスです。本ソフトウェアは2030-04-08に MIT ライセンスへ移行します。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。