Back to MCP directory
publicPublicdnsLocal runtime

imap-mini-mcp

一个轻量级的MCP服务器,用于读取IMAP邮件和创建草稿回复,支持所有标准IMAP服务器和本地邮件桥接,提供邮件搜索、移动、标记和草稿管理功能。

article

README

🚀 IMAP Mini MCP

IMAP Mini MCP 是一个轻量级的 MCP(模型上下文协议)服务器,用于读取 IMAP 电子邮件并创建草稿回复。它可以与任何标准的 IMAP 服务器(如 Gmail、Outlook、Fastmail 等)以及本地桥接工具(如 ProtonMail Bridge)配合使用。

代理可以读取、搜索、移动、标记星标和整理电子邮件,还能撰写草稿,但不能发送或删除电子邮件。

有关最近添加的功能,请参阅 CHANGELOG.md

🚀 快速开始

强烈建议使用语音转文字工具(例如 Mac 上的 SuperWhisper 或 Windows 上的 Whisperflow),并将您的 AI 桌面应用程序(如 Claude、Codex 等)连接到这个 MCP 服务器。这样,您就可以通过语音与您的电子邮件收件箱进行对话,从而显著加快工作流程。

📦 安装指南

代理配置

将以下内容添加到您的 MCP 客户端配置文件(例如 claude_desktop_config.json)中:

{
  "mcpServers": {
    "imap-mini-mcp": {
      "command": "node",
      "args": ["/path/to/imap-mini-mcp/dist/index.js"],
      "env": {
        "IMAP_HOST": "imap.example.com",
        "IMAP_USER": "you@example.com",
        "IMAP_PASS": "your-password"
      }
    }
  }
}

args 路径必须指向已构建的 dist/index.js。根据需要,可在 env 块中添加任何可选变量。

环境变量

| 属性 | 是否必需 | 默认值 | 详情 | |------|------|------|------| | IMAP_HOST | 是 | — | IMAP 服务器主机名(例如 imap.gmail.com) | | IMAP_USER | 是 | — | 电子邮件地址或用户名 | | IMAP_PASS | 是 | — | 密码或应用专用密码 | | IMAP_PORT | 否 | 993 | IMAP 服务器端口 | | IMAP_SECURE | 否 | true | 使用 TLS 进行连接 | | IMAP_STARTTLS | 否 | true | 通过 STARTTLS 升级到 TLS(当 IMAP_SECURE=false 时) | | IMAP_TLS_REJECT_UNAUTHORIZED | 否 | true | 拒绝自签名的 TLS 证书 |

对于大多数提供商(如 Gmail、Outlook、Fastmail),使用默认设置即可 — 只需设置主机、用户和密码。

对于 ProtonMail Bridge,以下五个设置都是必需的(该桥接工具在本地主机上监听,不使用 TLS,使用自签名证书,并且不支持 STARTTLS):

IMAP_HOST=127.0.0.1
IMAP_PORT=1143
IMAP_SECURE=false
IMAP_STARTTLS=false
IMAP_TLS_REJECT_UNAUTHORIZED=false

或者作为 MCP 客户端配置:

{
  "mcpServers": {
    "imap-mini-mcp": {
      "command": "node",
      "args": ["/path/to/imap-mini-mcp/dist/index.js"],
      "env": {
        "IMAP_HOST": "127.0.0.1",
        "IMAP_PORT": "1143",
        "IMAP_SECURE": "false",
        "IMAP_STARTTLS": "false",
        "IMAP_TLS_REJECT_UNAUTHORIZED": "false",
        "IMAP_USER": "you@proton.me",
        "IMAP_PASS": "your-bridge-password"
      }
    }
  }
}

💻 使用示例

基础用法

每个电子邮件都由一个复合 id (YYYY-MM-DDTHH:mm:ss.<Message-ID>) 标识,该 id 全局唯一,并且在文件夹移动时保持稳定。使用 find_emails 返回的 id 来获取内容、下载附件、移动电子邮件或创建回复草稿。操作工具接受一个可选的 mailbox 提示,以加快查找速度;如果省略该提示,则会搜索所有文件夹。

find_emails

搜索和过滤电子邮件。所有参数都是可选的 — 不传递任何参数调用该工具将返回收件箱中所有电子邮件,按最新邮件优先排序。 | 参数 | 类型 | 默认值 | 描述 | |------|------|------|------| | after | 字符串 | — | 仅返回此时间之后的电子邮件。可以是相对时间(如 "30m""2h""7d")或 ISO 日期(如 "2026-02-20") | | before | 字符串 | — | 仅返回此时间之前的电子邮件。格式与 after 相同 | | from | 字符串 | — | 发件人地址的子字符串匹配(例如 "alice@example.com""@stripe.com") | | subject | 字符串 | — | 主题行的子字符串匹配 | | unread_only | 布尔值 | false | 仅返回未读电子邮件 | | has_attachment | 布尔值 | false | 仅返回带有附件的电子邮件 | | folder | 字符串 | "INBOX" | 要搜索的文件夹 | | limit | 数字 | — | 最大结果数(最新邮件优先) |

示例: | 使用场景 | 参数 | |------|------| | 过去 24 小时 | {after: "24h"} | | 过去 7 天,最多 10 封 | {after: "7d", limit: 10} | | 未读电子邮件 | {unread_only: true} | | 来自某个域名 | {from: "@stripe.com"} | | 带有附件,上个月 | {after: "30d", has_attachment: true} | | 特定发件人,在已发送文件夹中 | {from: "alice@example.com", folder: "Sent"} |

高级用法

| 工具 | 描述 | 关键参数 | |------|------|------| | list_starred_emails | 列出所有文件夹中标记星标的电子邮件 | — | | fetch_email_content | 根据 id 获取完整的电子邮件内容 | id, mailbox? | | fetch_email_attachment | 下载附件 | id, attachment_id, mailbox? | | list_folders | 列出所有文件夹 | — | | create_folder | 创建新文件夹 | path | | move_email | 将电子邮件移动到另一个文件夹 | id, destination_folder, source_folder? | | bulk_move_by_sender_email | 移动某个发件人的所有电子邮件 | sender, source_folder, destination_folder | | bulk_move_by_sender_domain | 移动某个域名的所有电子邮件 | domain, source_folder, destination_folder | | star_email | 标记电子邮件为星标 | id, mailbox? | | unstar_email | 取消电子邮件的星标标记 | id, mailbox? | | mark_read | 将电子邮件标记为已读 | id, mailbox? | | mark_unread | 将电子邮件标记为未读 | id, mailbox? | | create_draft | 创建新草稿 | to, subject, body, cc?, bcc?, in_reply_to? | | draft_reply | 根据现有电子邮件创建回复草稿 | id, body, reply_all?, mailbox? | | update_draft | 替换现有草稿(仅适用于草稿文件夹) | id, to, subject, body, cc?, bcc?, in_reply_to? |

📚 详细文档

故障排除

"IMAP 连接意外关闭" 或 "服务器断开连接"

这几乎总是意味着服务器由于 TLS/STARTTLS 不匹配而拒绝连接。请验证您的 MCP 客户端配置中以下环境变量是否设置正确: | 变量 | 检查内容 | |------|------| | IMAP_HOST | 正确的主机名或 IP | | IMAP_PORT | 与您的服务器匹配(TLS 端口为 993,普通端口为 143/1143) | | IMAP_SECURE | 端口 993 时为 true,普通连接时为 false | | IMAP_STARTTLS | 如果您的服务器不支持 STARTTLS,则为 false | | IMAP_TLS_REJECT_UNAUTHORIZED | 如果您的服务器使用自签名证书,则为 false |

本地 IMAP 桥接工具(如 ProtonMail Bridge)通常需要 IMAP_SECURE=falseIMAP_STARTTLS=falseIMAP_TLS_REJECT_UNAUTHORIZED=false。请参阅上面 环境变量 部分中的 ProtonMail Bridge 配置示例。

"IMAP 身份验证失败"

检查 IMAP_USERIMAP_PASS 是否正确。某些提供商(如 Gmail)需要应用专用密码而不是您的账户密码。

"无法连接到 IMAP 服务器 — 连接被拒绝"

IMAP 服务器未运行或未在配置的主机和端口上监听。对于本地桥接工具,请确保桥接应用程序正在运行。

开发

构建和运行

npm install
npm run build

使用 .env 进行本地开发

要直接运行服务器(不在 MCP 客户端中),请将 .env.example 复制到 .env 并填写您的凭据,然后执行以下命令:

npm start

通过 MCP 客户端使用时,凭据将通过客户端配置的 env 块提供。

测试

测试使用 vitest 并模拟 IMAP 层 — 不需要实际的服务器连接:

npm test             # 运行一次
npm run test:watch   # 监听模式
npm run lint         # 仅进行类型检查

📄 许可证

MIT

help

Runtime guide

cloud

Hosted runtime

Hosted servers run from a provider-managed environment. You usually connect the MCP client to the hosted endpoint or follow the provider's authorization flow, without keeping a local process alive

  1. Open provider connection page
  2. Authorize or copy endpoint
  3. Connect from your MCP client
terminal

Local runtime / other methods

Local servers run on your own machine or infrastructure. You normally copy the server_config into your MCP client, install the required package, and provide env variables from env_schema when needed

  1. Copy server_config
  2. Install required package
  3. Fill env variables and restart client