使用说明
📬 IMAP MCP服务器
一个MCP(模型上下文协议)服务器,允许Claude访问任何IMAP/SMTP邮箱——直接从Claude Desktop读取、搜索、发送和组织电子邮件。
特性
- 17个MCP工具 --列表、阅读、搜索、发送、回复、转发、移动、删除等
- 多账户 --并行管理多个邮箱(工作、个人、自由职业者……)
- Gmail和Office 365 OAuth2 --使用Google/Microsoft而不是密码登录
- 自动发现 --自动检测20多个提供商的IMAP/SMTP设置
- 配置UI --基于浏览器的帐户管理器
http://localhost:4321 - 批量操作 --一次移动、删除或标记多封电子邮件
- 附件 --列出并下载附件
- 高级筛选器 --按日期、读取状态、帐户类型、附件筛选
快速开始
1.安装依赖项
npm install
2.添加您的电子邮件帐户
npm run config
这将打开配置UI http://localhost:4321。输入您的电子邮件地址,然后:
- 应用程序密码 (Gmail:需要两步验证→ 在此处创建一个)
- OAuth2 (Gmail/Office 365——见下文)
- 密码 (任何常规IMAP提供商)
3.连接到克劳德桌面
bash setup-claude.sh
此功能会自动检测您的Node.js路径,并将正确的配置写入Claude Desktop。重新启动Claude Desktop,就完成了。
MCP工具
| 工具 | 说明 |
|---|---|
list_emails |
列出带有过滤器的电子邮件(日期、阅读状态、附件、帐户类型) |
get_email |
获取包含HTML正文的完整电子邮件 |
search_emails |
跨文件夹的全文搜索 |
send_email |
通过SMTP发送电子邮件 |
reply_email |
回复电子邮件(引用原件) |
forward_email |
将电子邮件转发给其他收件人 |
mark_read |
将单个电子邮件标记为已读/未读 |
mark_emails_read |
一次标记多封电子邮件 |
move_email |
将单个电子邮件移动到文件夹 |
move_emails |
一次移动多封电子邮件 |
delete_emails |
删除多封电子邮件 |
list_folders |
列出所有IMAP文件夹 |
create_folder |
创建新的IMAP文件夹 |
list_attachments |
列出电子邮件中的附件 |
download_attachment |
下载附件(返回Base64) |
list_accounts |
显示所有配置的帐户和类型 |
多帐户设置
帐户存储在 accounts.json。复制示例以开始:
cp accounts.json.example accounts.json
每个帐户都有一个可选 type 分组字段(例如。 "work", "personal").然后,Claude可以使用以下命令一次查询所有工作帐户 account_type: "work".
{
"default": "personal",
"accounts": {
"personal": {
"name": "Personal",
"type": "personal",
"imap": { "host": "imap.your-provider.com", "port": 993, "user": "you@example.com", "password": "…", "tls": true },
"smtp": { "host": "smtp.your-provider.com", "port": 465, "user": "you@example.com", "password": "…", "tls": true }
},
"work_gmail": {
"name": "Work Gmail",
"type": "work",
"provider": "gmail",
"oauth2": {
"clientId": "…apps.googleusercontent.com",
"clientSecret": "…",
"refreshToken": "…"
},
"imap": { "host": "imap.gmail.com", "port": 993, "user": "you@company.com", "password": "", "tls": true },
"smtp": { "host": "smtp.gmail.com", "port": 465, "user": "you@company.com", "password": "", "tls": true }
}
}
}
Gmail和Office 365 OAuth2
谷歌和微软阻止IMAP的常规密码验证。请改用OAuth2。
Gmail设置
- 首选 谷歌云控制台 并创建一个项目
- 启用 Gmail API (API和服务→ 图书馆→ Gmail API→ 启用)
- 配置 OAuth 授权界面 (外部,测试模式正常)
- 将您的Gmail地址添加为 测试用户 (必填项,否则将出现错误403)
- 创建一个 OAuth2客户端ID → type: Web应用程序
- 添加
http://localhost:4321/oauth2/callback作为授权重定向URI - 复制 客户端ID 和 客户端密钥
- 在配置UI中,输入您的电子邮件→ 填写客户端ID+密码→ click 通过 Google 登录
⚠️ 常见错误:
redirect_uri_mismatch→ Google Cloud中的重定向URI必须精确http://localhost:4321/oauth2/callbackaccess_denied(403) → 您的Gmail地址必须在OAuth同意屏幕中添加为测试用户
Office 365/Exchange安装程序
- 首选 Azure 门户 → Azure Active Directory→ 应用程序注册
- 使用重定向URI创建新注册
http://localhost:4321/oauth2/callback - 添加API权限:
IMAP.AccessAsUser.All和SMTP.Send(在Office 365 Exchange Online下) - 授予管理员同意
- 创建一个 客户端密钥 证书和秘密
- 在配置UI中,输入您的电子邮件→ 填写客户ID+密码+租户ID→ click 使用Microsoft登录
项目结构
imap-mcp-server/
├── src/
│ ├── index.ts # MCP Server entry (registers all 17 tools)
│ ├── imap.ts # IMAP operations (imapflow)
│ ├── smtp.ts # SMTP sending (nodemailer)
│ ├── config.ts # Multi-account config loader
│ ├── oauth2.ts # OAuth2 token refresh (Google + Microsoft)
│ ├── autodiscover.ts # Auto-discover IMAP/SMTP settings
│ ├── configServer.ts # Config UI HTTP server (port 4321)
│ └── tools/
│ ├── listEmails.ts
│ ├── getEmail.ts
│ ├── searchEmails.ts
│ ├── sendEmail.ts # send + reply + forward
│ ├── markRead.ts
│ ├── listAccounts.ts
│ ├── bulkOps.ts # move / delete / mark multiple emails
│ └── attachments.ts # list + download attachments
├── accounts.json # Your account config (gitignored)
├── accounts.json.example # Example config
├── run.sh # Shell wrapper (fixes PATH for Claude Desktop)
├── setup-claude.sh # Auto-configure Claude Desktop
├── package.json
└── tsconfig.json
脚本
| 命令 | 描述 |
|---|---|
npm run config |
打开配置UIhttp://localhost:4321 |
npm run dev |
直接启动MCP服务器(用于测试) |
npm run build |
编译TypeScript |
npm start |
运行已编译的服务器 |
bash setup-claude.sh |
自动配置克劳德桌面 |
技术栈
- 运行时:Node.js+TypeScript
- 互联网消息访问协议: imapflow --基于Promise的现代IMAP客户端
- 简单邮件传输协议: 诺德尔
- MCP-SDK: @模型上下文协议/sdk
- OAuth2:原始HTTPS--没有额外的依赖关系