Skip to main content
Glama
imap-mcp-server

imap-mcp-server

by lswith

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 并填写。简而言之:

内容

放置位置

CLOUDFLARE_ACCOUNT_ID

你的环境;wrangler 直接读取它

MCP worker 的路由 / zone

你添加到 packages/mcp/wrangler.jsonc 的 routes 条目

ACCESS_TEAM_DOMAIN、ACCESS_AUD

packages/mcp/wrangler.jsonc 中的 vars

IMAP_HOST、IMAP_PORT、IMAP_USER

packages/sync/wrangler.jsonc 中的 vars

IMAP_PASSWORD

wrangler secret put,仅 sync worker——绝不能是 vars 条目

在本地,密钥放在每个包中 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 跟踪:

#2

仓库脚手架——本项

#3

将 IMAP 客户端封装在内部接口之后

#4

D1 schema 和迁移

#5

Tracer:将单个文件夹同步到 D1

#6

同步路径的队列扇出

#7

MCP 服务器和 search_messages

#8

增量同步:水印和 UIDVALIDITY

#9

附件到 R2,带文本提取

#10

使用 Access Managed OAuth 保护 MCP 端点

#11

get_message 和 get_thread

#12

通过服务绑定的写工具,带审计日志

#13

完整回填和设置指南

一次技术验证解决了整个架构所依赖的唯一问题——Cloudflare Worker 到底能不能对 iCloud 使用 IMAP 协议? 可以:在 993 端口上 TLS 和 LOGIN 耗时 755 毫秒,文件夹已列出,消息已获取并完成 MIME 解码,草稿已追加并标记。因此同步路径是一个 Worker,不需要迁移到 Container。那些约束设计的发现——CONDSTORE 排序、iCloud 上没有 MOVE、SEARCH 无法用于内容搜索——已写入它们所影响的工单中。

许可证

MIT——参见 LICENSE。

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Connects 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 npm
    MIT
  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables interaction with Gmail through MCP, supporting search, read, send, reply, forward, draft management, labels, and multiple accounts, deployed on Cloudflare Workers.
    MIT
  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables 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
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables 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