关于 JMAP Email
JMAP Email 是面向 JMAP 邮件服务的 MCP 服务,可供邮件管理场景使用。它提供邮箱、邮件、发件人身份和 Sieve 脚本操作,并可选择启用邮件发送及脚本管理功能。
主要功能
- 01查询、读取和创建邮件草稿
- 02移动、标记或删除邮件
- 03查看及管理邮箱
- 04列出发件人身份
- 05验证和管理 Sieve 脚本
- 06按需启用邮件发送
适用场景
- 01按条件搜索并读取邮件
- 02整理邮件并管理标记
- 03创建邮件草稿并按需提交发送
- 04检查或更新邮件过滤脚本
MCP 相关
该 MCP 服务将 JMAP 邮件及 Sieve 脚本操作作为工具提供给 MCP 客户端;邮件发送和 Sieve 工具可通过功能开关启用。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
docker run -i --rm -e JMAP_SESSION_URL -e JMAP_AUTH_TOKEN ghcr.io/mikluko/jmap-mcp:0.10.0JMAP_SESSION_URLJMAP session endpoint URL (e.g. https://api.fastmail.com/jmap/session)JMAP_AUTH_TOKEN密钥JMAP bearer token for authentication本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
ghcr.io/mikluko/jmap-mcp:0.10.0stdio工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
jmap-mcp
将 JMAP 邮件和 Sieve 脚本操作作为工具提供的 MCP 服务。
使用 Go MCP SDK(go-sdk) 和 go-jmap 库构建。
工具
工具与 JMAP 方法紧密对应。邮件修改工具为 Email/set 补丁提供了结构化的便捷封装。
邮箱(RFC 8621)
| 工具 | JMAP 方法 | 描述 |
|---|---|---|
mailbox_get | Mailbox/get | 按 ID 获取邮箱,或列出所有邮箱 |
mailbox_set | Mailbox/set | 创建、更新或销毁邮箱 |
邮件(RFC 8621)
| 工具 | JMAP 方法 | 描述 |
|---|---|---|
email_query | Email/query | 使用筛选条件搜索邮件,返回 ID 和总数 |
email_get | Email/get | 按 ID 获取邮件的完整内容 |
email_create | Email/set | 在“草稿”邮箱中创建新的邮件草稿 |
email_move | Email/set | 将邮件移至其他邮箱 |
email_flag | Email/set | 设置或移除标记(已读、已加旗标、已回复、草稿) |
email_delete | Email/set | 删除邮件(移至“废纸篓”或永久销毁) |
email_attachment_url | Blob 下载 | 用于流式传输附件的签名 URL,有效期为 30 秒(仅限 HTTP 模式) |
身份
| 工具 | JMAP 方法 | 描述 |
|---|---|---|
identity_get | Identity/get | 列出发件人身份(电子邮件地址) |
提交(需启用功能)
| 工具 | JMAP 方法 | 描述 |
|---|---|---|
email_submission_set | EmailSubmission/set | 提交草稿以供发送(需要 -enable-send) |
Sieve 脚本(RFC 9661,需启用功能)
| 工具 | JMAP 方法 | 描述 |
|---|---|---|
sieve_get | SieveScript/get | 列出所有脚本,或获取某个脚本的完整内容(需要 -enable-sieve) |
sieve_set | SieveScript/set | 创建、更新或销毁 Sieve 脚本(需要 -enable-sieve) |
sieve_validate | SieveScript/validate | 验证 Sieve 脚本但不保存(需要 -enable-sieve) |
配置
| 环境变量 | 必需 | 说明 |
|---|---|---|
JMAP_SESSION_URL | 始终需要 | JMAP 会话端点(例如 https://api.fastmail.com/jmap/session) |
JMAP_AUTH_TOKEN | stdio 模式 | 用于 JMAP 身份验证的 Bearer 令牌 |
ATTACHMENT_URL_SECRET | 否 | 用于密封已签名附件 URL 的密钥;多副本部署时请设置(默认:每个进程随机生成密钥) |
| 标志 | 默认值 | 说明 |
|---|---|---|
-mode | stdio | 服务模式:stdio 或 http |
-listen | :8080 | HTTP 监听地址(仅限 http 模式) |
-enable-send | false | 启用 email_submission_set 工具(默认关闭) |
-enable-sieve | false | 启用 Sieve 脚本工具(默认关闭,需要 JMAP 服务支持) |
-external-url | derived | 已签名附件链接的外部基础 URL;默认根据请求推导(支持 X-Forwarded-Proto/X-Forwarded-Host) |
在 HTTP 模式下,可以通过每个请求的 Authorization: Bearer <token> 标头或 jmap_token 查询参数传递令牌(查询参数优先)。
在 HTTP 模式下,email_attachment_url 会返回一个由 /attachments/ 提供的链接,该链接在签发 30 秒后过期。该链接是一种经 AES-GCM 密封的能力凭证:其中包含 JMAP 令牌、帐户和 blob ID,因此端点无需额外身份验证即可从 JMAP 服务流式传输附件,且不会在磁盘上存储任何内容。
安装
Kubernetes(Helm)
helm install jmap-mcp oci://ghcr.io/mikluko/helm-charts/jmap-mcp \
--version 0.1.0 \
--set jmap.sessionURL="https://api.fastmail.com/jmap/session"
在 HTTP 模式下,JMAP 身份验证令牌通过每个请求的 Authorization: Bearer 标头或 ?jmap_token= 查询参数传递,无需在集群中存储静态令牌。
二进制文件
go install github.com/mikluko/jmap-mcp@latest
从源代码构建
git clone https://github.com/mikluko/jmap-mcp.git
cd jmap-mcp
make install
用法
# stdio mode (default)
export JMAP_SESSION_URL=https://api.fastmail.com/jmap/session
export JMAP_AUTH_TOKEN=your-token
./jmap-mcp
# HTTP mode
./jmap-mcp -mode http -listen :8080
构建
make build # Build and push container image + Helm chart
make image # Build and push container image with ko
make package # Package and push Helm chart to OCI registry
make test # Run tests
make install # Install binary locally
参考资料
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。