imap-mcp-server
imap-mcp
源代码公开,而非产品。 这是一个通用的 IMAP → MCP 服务器,运行在 Cloudflare Workers 上。它以 MIT 许可证发布,因此代码可以被阅读、复制和学习——但它是为且仅为一个邮箱构建和运行的:一个个人 iCloud 账户。不提供任何支持承诺:问题不会被分类处理,不征集拉取请求,没有发布版本,这里没有任何内容为其他人的使用而做版本管理。如果它对你有用,请 fork 它。
它的通用性来自设计而非野心——主机、端口和凭据都是配置而非常量——因此它应该可以针对任何 IMAP 服务器工作。但只有 iCloud 经过了实际验证。
状态:脚手架。 目前还没有实现任何功能。两个 worker 都是占位符,能够完成安装、lint、类型检查、测试并通过部署试运行。参见路线图。
功能
将邮箱索引到 Cloudflare 的存储中,然后通过搜索和检索工具将其提供给 MCP 客户端——这样模型就可以针对十五年的邮件回答问题,而无需在每次查询时都让邮箱本身参与其中。
┌────────────────────┐ IMAP over TLS ┌──────────────┐
│ imap-mcp-sync │ ───────────────▶ │ mailbox │
│ packages/sync │ ◀─────────────── │ (iCloud) │
│ cron, owns creds │ └──────────────┘
└─────────┬──────────┘
│ writes ▲ writes proxied over
▼ │ a service binding
┌────────────────────┐ │
│ D1 (+FTS5) and R2 │ │
└─────────┬──────────┘ │
│ reads │
▼ │
┌────────────────────┐────────────────┘ ┌──────────────┐
│ imap-mcp-server │ Streamable HTTP │ MCP client │
│ packages/mcp │ ◀───────────────── │ behind CF │
│ stateless, no creds │ Access │
└────────────────────┘ └──────────────┘两个 worker,它们之间的划分是安全设计而非打包选择:
packages/sync(imap-mcp-sync)是系统中唯一使用 IMAP 协议的部分。它持有应用专用密码——在 iCloud 上,该密码授予完整的邮箱访问权限包括 SMTP 发送——因此该凭据只存在于一个地方。packages/mcp(imap-mcp-server)是一个无状态读取器。它查询索引,从不查询邮箱,并通过服务绑定将少数写操作代理回 sync worker,而不是自行打开连接。
Related MCP server: gmail-mcp
快速开始
pnpm install # installs both packages
pnpm run lint # biome check (lint + format)
pnpm run typecheck # wrangler types + tsc --noEmit
pnpm run test # vitest, inside workerd
pnpm run dead-code # knip
pnpm run build # wrangler deploy --dry-run, both workers每个包,从 packages/sync 或 packages/mcp 目录执行:pnpm run dev、pnpm run test:watch、pnpm run deploy。
配置
此仓库是公开的,因此不提交任何部署特定的值——没有 Cloudflare 账户 ID、没有 zone 标签、没有 Cloudflare Access 团队域名或应用程序受众(AUD)、没有邮箱地址。两个 wrangler.jsonc 都不包含 account_id,MCP worker 也没有声明任何路由。
你需要提供的所有内容都在 .env.example 中命名并说明。将其复制为 .env 并填写。简而言之:
内容 | 放置位置 |
| 你的环境;wrangler 直接读取它 |
MCP worker 的路由 / zone | 你添加到 |
|
|
|
|
|
|
在本地,密钥放在每个包中 gitignore 的 .dev.vars 中;每个包都有一个 .dev.vars.example 可供复制。
两个 worker 默认都不可达
两个 wrangler.jsonc 文件中的 workers_dev 和 preview_urls 都是 false,MCP worker 也没有声明任何路由。因此,新部署的 worker 无法从互联网访问。这是有意为之:在没有文件夹隔离的情况下,MCP 端点实际上是对整个邮箱的读取访问,因此在 Cloudflare Access 置于其前面之前,它绝不能变得可访问。如果没有 workers_dev: false,无论存在什么路由或 Access 策略,worker 都会在 <name>.<account>.workers.dev 上运行。
一份完整的从零开始部署指南——密钥、Access 设置、绑定、迁移和回填——尚未编写;它将与系统的其余部分一起发布。
路线图
作为此仓库的 issues 跟踪:
仓库脚手架——本项 | |
将 IMAP 客户端封装在内部接口之后 | |
D1 schema 和迁移 | |
Tracer:将单个文件夹同步到 D1 | |
同步路径的队列扇出 | |
MCP 服务器和 | |
增量同步:水印和 | |
附件到 R2,带文本提取 | |
使用 Access Managed OAuth 保护 MCP 端点 | |
| |
通过服务绑定的写工具,带审计日志 | |
完整回填和设置指南 |
一次技术验证解决了整个架构所依赖的唯一问题——Cloudflare Worker 到底能不能对 iCloud 使用 IMAP 协议? 可以:在 993 端口上 TLS 和 LOGIN 耗时 755 毫秒,文件夹已列出,消息已获取并完成 MIME 解码,草稿已追加并标记。因此同步路径是一个 Worker,不需要迁移到 Container。那些约束设计的发现——CONDSTORE 排序、iCloud 上没有 MOVE、SEARCH 无法用于内容搜索——已写入它们所影响的工单中。
许可证
MIT——参见 LICENSE。
This server cannot be deployed
Maintenance
Related MCP Connectors
Email infrastructure for AI agents — send, receive, search, and reply to email over MCP.
Email inboxes for AI agents: send, receive, reply, search, and manage threaded email over MCP.
Your own IMAP mailbox in any MCP client: search, read, flag, move; send and delete need confirm.
Your IMAP mailbox as an MCP server: read, search and (if you allow it) organize mail. Open source.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceConnects AI agents to self-hosted Stalwart mail servers via a Cloudflare Worker and JMAP, enabling mailbox search, reading, listing, and two-step draft-and-send email operations through MCP.138 npmMIT
- AlicenseNot gradedqualityNot gradedmaintenanceEnables interaction with Gmail through MCP, supporting search, read, send, reply, forward, draft management, labels, and multiple accounts, deployed on Cloudflare Workers.MIT
- AlicenseNot gradedqualityNot gradedmaintenanceEnables connecting Gmail to MCP clients, allowing search, read, send, reply-all, forward, attachments, drafts, labels, and thread management across multiple Google accounts at once via a self-hosted Cloudflare Worker.MIT
- AlicenseNot gradedqualityBmaintenanceEnables searching, reading full conversations, and sending email across multiple IMAP/SMTP mailboxes from any MCP client, with multi-user support and per-user API tokens.MIT