imap-mcp
imap-mcp
将任何邮箱连接到你的第二大脑。
一个通过 IMAP 读取邮件的 MCP 服务器——iCloud、Gmail、Outlook、Fastmail、大学或公司邮箱,任何支持该协议的邮箱——并将其转换为可搜索的 markdown 笔记,同时 RawItem 记录 Mycelium 运行时直接摄取。
MIT 许可。可在 macOS、Linux 和 Windows 上运行。
为什么选择 IMAP
每个邮件提供商都支持 IMAP。一个连接器即可覆盖所有提供商,当一屋子人各自使用不同邮箱时,这一点至关重要。
如果某个提供商已有合适的 OAuth 连接器,请优先使用它——Gmail 使用 google-workspace-mcp,Outlook 使用 microsoft-365-mcp。OAuth 提供作用域限定、可撤销的访问权限;而 IMAP 应用密码则不具备这些特性。此服务器专为这两个连接器无法覆盖的邮箱设计:iCloud(其完全不发布 Mail 的 OAuth 授权)以及所有较小或自托管的提供商。
Related MCP server: imap-2-mcp
支持的提供商
提供商 | 主机 | 说明 |
|
| 需要在 Apple ID 上启用双重认证 |
|
| 优先使用 OAuth 连接器;需要两步验证 |
|
| 优先使用 OAuth 连接器;许多租户禁用 IMAP |
|
| 应用密码可仅限 IMAP 使用 |
| 你设置 | 大学、公司、自托管 |
使用 imap_list_providers 向服务器本身查询——它会返回每个提供商的主机以及生成密码的确切页面。
设置
参见 SETUP.md。只需三步,密码由你自己生成。
工具
工具 | 访问权限 | 用途 |
| 读取 | 提供商 + 获取密码的位置 |
| 读取 | 是否可访问,凭据是否有效 |
| 读取 | 确切的文件夹名称 |
| 读取 | 紧凑摘要,不含正文 |
| 读取 | 一封完整邮件 |
| 写入 | 将笔记写入你的保险库 |
| 读取 |
|
| 读取 | 解释某封邮件为何被或未被摄取 |
八个操作,低于搜索+执行界面开始产生价值的约 15 个阈值,因此每个操作对应一个工具。
安全性
你的邮箱永远不会被修改。 会话以 EXAMINE(只读)打开,每次获取都使用 BODY.PEEK[]。普通的 FETCH BODY[] 会作为副作用设置 \Seen 标志,因此“只读”同步会悄悄地将未读邮件标记为已读。唯一会写入内容的工具是将笔记写入你的保险库。
你的密码永远不会离开你的机器。 它存储在操作系统钥匙串中,从不写入配置文件,从不记录日志,也从不通过工具返回。IMAP LOGIN 失败会回显失败的命令——其中包含密码——因此认证错误会被整体替换,而不是直接传递。
电子邮件被视为不可信输入。 每封邮件的正文都被包裹在 UNTRUSTED_EMAIL_BODY 围栏中,伪造结束标记以突破自身围栏的正文会被中和。邮件是用于总结的数据,绝不是要遵循的指令。这一点比听起来更重要:任何人都可以给你发送电子邮件,因此未加围栏的正文相当于陌生人直接写入你的助手上下文。
没有任何内容被静默跳过。 如果服务器重新编号了邮箱(UIDVALIDITY 更改),同步游标将被丢弃,响应会显示 uidvalidity_reset: true——否则过期的游标会指向无关的邮件并永远跳过真正的邮件。被过滤的邮件会携带丢弃它们的规则,imap_explain_filter 可以解释任何一封邮件。
每次写入都会说明去向。 结果包含 vault_root 和 root_source,因此落入错误文件夹的邮件会在第一次响应中可见,而不是数月后才被发现。
过滤器
智能默认设置保留重要内容并丢弃噪音。文件夹名称因提供商和语言而异,因此它们来自提供商配置文件,而不是硬编码——Gmail 嵌套在 [Gmail]/ 下,Outlook 显示为 Junk Email,西班牙语环境的账户显示为 Enviados。
保留 | 丢弃 |
你发送的邮件 | 垃圾邮件 / 垃圾 / 废纸篓文件夹 |
你回复过的线程( | 新闻通讯( |
已标记的邮件( |
|
显式阻止优先于显式允许;两者都优先于智能默认设置。使用 apply_smart_filter=False 完全关闭默认设置。
两个消费者,一个核心
imap_client.py 是唯一使用 IMAP 协议的模块。
第二大脑 —
imap_sync_to_vault写入External Inputs/<Provider>/<mailbox>/YYYY-MM-DD-<slug>.mdMycelium 运行时 —
imap_export_for_runtime发出与运行时RawItem逐字段匹配的记录,因此服务器端适配器包装此模块,而不是重新实现它
测试
uv run pytest -q65 个测试,无需网络。安全防护(围栏逃逸、路径包含、凭据不泄漏)均经过变异测试:移除防护,相应测试确认失败,恢复防护。
尚未验证: 尚未在任何提供商的真实邮箱上运行过实时冒烟测试。每个测试都使用合成夹具,这证明了解析和过滤逻辑,但不能证明实时服务器会接受这些确切的命令。
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityDmaintenanceProvider-agnostic email MCP server that connects any IMAP mailbox to AI assistants, enabling email management through natural language.8AGPL 3.0
- FlicenseNot gradedqualityCmaintenanceEnables AI clients to search IMAP mailboxes with live access and a full-text index covering email bodies and attachments (PDF, DOCX, XLSX, text).
- 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 gradedqualityCmaintenanceIMAP/SMTP email for AI agents -- read, send, organize folders, and manage attachments across multiple accounts, with auto-discovery.MIT
Related MCP Connectors
Give an AI agent its own inbox — receive email as a webhook, send over a verified domain.
Email for AI agents — send, receive as a webhook, manage domains, templates, routing.
Hosted email MCP for AI agents with inboxes, send/receive, memory, recovery, and credits.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/adelaidasofia/imap-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server