IMAP邮件管理服务器

一个MCP服务器,提供通过IMAP/SMTP管理邮件的功能,包括读取、搜索、发送和组织邮件。

  • by Txtus
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 Txtus/mail-mcp

使用说明

📬 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设置

  1. 首选 谷歌云控制台 并创建一个项目
  2. 启用 Gmail API (API和服务→ 图书馆→ Gmail API→ 启用)
  3. 配置 OAuth 授权界面 (外部,测试模式正常)
  4. 将您的Gmail地址添加为 测试用户 (必填项,否则将出现错误403)
  5. 创建一个 OAuth2客户端ID → type: Web应用程序
  6. 添加 http://localhost:4321/oauth2/callback 作为授权重定向URI
  7. 复制 客户端ID 和 客户端密钥
  8. 在配置UI中,输入您的电子邮件→ 填写客户端ID+密码→ click 通过 Google 登录

⚠️ 常见错误:

  • redirect_uri_mismatch → Google Cloud中的重定向URI必须精确 http://localhost:4321/oauth2/callback
  • access_denied (403) → 您的Gmail地址必须在OAuth同意屏幕中添加为测试用户

Office 365/Exchange安装程序

  1. 首选 Azure 门户 → Azure Active Directory→ 应用程序注册
  2. 使用重定向URI创建新注册 http://localhost:4321/oauth2/callback
  3. 添加API权限: IMAP.AccessAsUser.All 和 SMTP.Send (在Office 365 Exchange Online下)
  4. 授予管理员同意
  5. 创建一个 客户端密钥 证书和秘密
  6. 在配置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--没有额外的依赖关系