使用说明
imap-mcp
A. 模型上下文协议(MCP) 为Claude和其他AI助手提供IMAP电子邮件访问的服务器。
特性
- 完成MCP实施:通过stdio实现完整的JSON-RPC 2.0
- 多账户支持:在单个TOML文件中配置多个IMAP帐户
- 懒惰连接:IMAP连接在首次使用时建立并重复使用
- TLS支持:每个帐户可配置TLS或明文连接
- SMTP发送:可选的每个帐户SMTP支持,用于发送、起草和回复
- 工具系统:用于添加新电子邮件功能的干净界面
可用工具
| 工具 | 说明 |
|---|---|
list_accounts |
列出所有已配置的IMAP帐户及其连接状态 |
list_mailboxes |
列出具有特殊用途注释和邮件计数的帐户邮箱 |
list_messages |
列出带分页的邮件信封(每页100个,最新的放在第一位) |
get_message |
按UID检索完整邮件(邮件头、正文、附件) |
get_attachment |
通过邮件UID和附件号将电子邮件附件下载到磁盘 |
search_messages |
按发件人、收件人、主题、正文、日期范围和标志搜索邮件 |
mark_messages |
设置或清除邮件的已读/标记状态 |
move_messages |
在邮箱之间移动邮件 |
copy_messages |
在邮箱之间复制邮件 |
delete_messages |
删除邮件(移至垃圾箱或永久删除) |
create_mailbox |
创建新邮箱(文件夹) |
delete_mailbox |
删除邮箱(具有特殊用途保护) |
send_message |
通过SMTP发送电子邮件(需要 smtp_enabled = true) |
save_draft |
撰写邮件并将其保存到“草稿”文件夹(需要 smtp_enabled = true) |
reply_message |
回复、全部回复或转发消息(需要 smtp_enabled = true) |
项目结构
imap-mcp/
├── cmd/
│ └── imap-mcp/ # Main application entry point
├── internal/
│ ├── config/ # TOML configuration parsing
│ ├── imap/ # IMAP connection manager
│ ├── smtp/ # SMTP sending manager
│ ├── server/ # MCP JSON-RPC server
│ └── tools/ # Tool implementations
├── scripts/ # Helper scripts (fuzz testing)
├── config.example.toml # Example configuration
├── Makefile # Build automation
├── CLAUDE.md # Development guidance for AI assistants
├── SETUP.md # Setup and integration guide
└── README.md # This file
快速开始
-
克隆和构建:
git clone https://github.com/chrisallenlane/imap-mcp.git cd imap-mcp make build -
配置:
cp config.example.toml config.toml # Edit config.toml with your IMAP credentials -
注册克劳德代码:
make setup
就是这样。MCP工具现在可以在Claude Code中使用。
看 设置.md 用于Claude Desktop集成和手动设置选项。
先决条件
- 转到1.24或更高版本
- Make(可选,但推荐)
配置
每 [accounts.<name>] 部分 config.toml 定义IMAP帐户:
[accounts.gmail]
host = "imap.gmail.com"
port = 993
username = "user@gmail.com"
password = "app-password"
tls = true
[accounts.protonmail]
host = "127.0.0.1"
port = 1143
username = "user@proton.me"
password = "bridge-password"
tls = false
IMAP字段(主机、端口、用户名、密码)是必需的。这 tls 字段控制是使用TLS还是明文。
要启用发送,请向帐户添加SMTP字段:
[accounts.gmail]
# ... IMAP fields above ...
smtp_enabled = true
smtp_host = "smtp.gmail.com"
smtp_port = 587
smtp_tls = "starttls" # "starttls", "implicit", or "none"
# smtp_from = "user@gmail.com" # defaults to username
# save_sent = false # save sent messages via IMAP APPEND
当 smtp_enabled = true, smtp_host 和 smtp_port 是必需的。 smtp_tls 默认为 "starttls" 如果省略;有效值为 "starttls", "implicit",或 "none".SMTP工具(send_message, save_draft, reply_message)仅当至少有一个帐户已注册时才注册 smtp_enabled = true.
config.toml 被忽略,因为它包含凭据。看 config.example.toml 举个完整的例子。
跑步
MCP服务器通过stdin/stdout进行通信:
./dist/imap-mcp --config /path/to/config.toml
这 --config 旗帜是必需的。使用 --version 打印版本并退出。
经过测试的供应商
此项目已针对以下提供商进行了测试:
- Gmail
- 原生动物 (通过 Protonmail邮件桥)
其他标准的IMAP/SMTP提供程序应该可以工作,但尚未经过验证。
发展
构建
make build
测试
# Run all tests
make test
# Run tests with coverage
make coverage
代码质量
# Format code
make fmt
# Lint code
make lint
# Vet code
make vet
# Run all checks
make check
项目惯例
- 格式化:80根柱子用golines+gofumpt包裹
- 测试:标准库
testing包裹 - 错误处理:始终用上下文包装错误
建筑
MCP协议流
Claude -> stdin -> JSON-RPC Request -> Tool Execution -> JSON-RPC Response -> stdout -> Claude
关键组件
- 服务器 (
internal/server):处理JSON-RPC协议 - 配置 (
internal/config):解析TOML配置 - IMAP管理器 (
internal/imap):管理持久IMAP连接 - SMTP管理器 (
internal/smtp):管理SMTP发送(每个操作连接) - 工具 (
internal/tools):实施MCP工具
资源
有关详细的开发指导,请参阅 CLAUDE.md.