Skip to main content
Glama
lswith

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/syncimap-mcp-sync)是系统中唯一使用 IMAP 协议的部分。它持有应用专用密码——在 iCloud 上,该密码授予完整的邮箱访问权限包括 SMTP 发送——因此该凭据只存在于一个地方。

  • packages/mcpimap-mcp-server)是一个无状态读取器。它查询索引,从不查询邮箱,并通过服务绑定将少数写操作代理回 sync worker,而不是自行打开连接。

Related MCP server: stalwart-mail-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/syncpackages/mcp 目录执行:pnpm run devpnpm run test:watchpnpm 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.jsoncroutes 条目

ACCESS_TEAM_DOMAINACCESS_AUD

packages/mcp/wrangler.jsonc 中的 vars

IMAP_HOSTIMAP_PORTIMAP_USER

packages/sync/wrangler.jsonc 中的 vars

IMAP_PASSWORD

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

在本地,密钥放在每个包中 gitignore 的 .dev.vars 中;每个包都有一个 .dev.vars.example 可供复制。

两个 worker 默认都不可达

两个 wrangler.jsonc 文件中的 workers_devpreview_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_messageget_thread

#12

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

#13

完整回填和设置指南

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

许可证

MIT——参见 LICENSE

A
license - permissive license
Not graded
quality - not tested
A
maintenance

Maintenance

Maintainers
<1hResponse time
Release cycle
1Releases (12mo)
Commit activity

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

  • A
    license
    Not graded
    quality
    B
    maintenance
    Connects multiple IMAP and SMTP mailboxes to MCP clients like ChatGPT without exposing credentials, enabling email search and thread retrieval via natural language.
    1
    Apache 2.0
  • A
    license
    Not graded
    quality
    C
    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.
    MIT
  • A
    license
    Not graded
    quality
    C
    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
    C
    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

View all related MCP servers

Related MCP Connectors

  • Read, search, send, organize, draft and schedule email across your inboxes from any MCP client.

  • Hosted email MCP for AI agents with inboxes, send/receive, memory, recovery, and credits.

  • Cloudflare Workers MCP server: email-validator

View all MCP Connectors

Latest Blog Posts

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/lswith/imap-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server