Skip to main content
Glama
leeguooooo
by leeguooooo
README.zh.md12.5 kB
# MCP Email Service [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/) [![uv](https://img.shields.io/badge/managed%20by-uv-purple)](https://github.com/astral-sh/uv) [![Tests](https://img.shields.io/badge/tests-71%2F72%20passing-brightgreen)](./tests) [![GitHub Sponsors](https://img.shields.io/github/sponsors/leeguooooo?logo=github)](https://github.com/sponsors/leeguooooo) 支持多邮箱账户统一管理的 MCP 邮件服务,具备 **AI 智能监控和通知功能**。 > **新功能**:邮件翻译与总结 - 自动翻译非中文邮件,生成摘要,并发送到飞书! ## 新功能:n8n + AI 邮件监控 **自动监控邮件,使用 AI 智能筛选重要邮件,并实时通知到团队群聊!** - **AI 智能筛选**:使用 OpenAI/Claude 智能识别重要邮件 - **多平台通知**:支持飞书/钉钉/企业微信/Slack - **自动化监控**:n8n 工作流每 5 分钟自动运行 - **去重机制**:防止重复通知 - **生产就绪**:完善的错误处理和回退机制 ```bash # 1. 设置监控系统 python scripts/setup_n8n_monitoring.py # 2. 配置环境变量 export FEISHU_WEBHOOK="your_webhook_url" export OPENAI_API_KEY="your_api_key" # AI 筛选可选 # 3. 导入 n8n 工作流 # 在你的 n8n 实例中导入 n8n/email_monitoring_workflow.json # 4. 开始监控! # 系统将每 5 分钟自动检查邮件 ``` ## 支持的邮箱 - **163邮箱** (mail.163.com / mail.126.com) - **QQ邮箱** (mail.qq.com) - **Gmail** (mail.google.com) - **Outlook/Hotmail** - **自定义IMAP邮箱** ## 快速开始 ### 选项 1:通过 Smithery 安装(推荐) ```bash # 在 Smithery 中搜索 "email-mcp-service" 并安装 # 或使用命令行 smithery install email-mcp-service ``` ### 选项 2:手动安装 需要 Python 3.11+ 和 [UV](https://github.com/astral-sh/uv)。 ```bash git clone https://github.com/leeguooooo/email-mcp-service.git cd email-mcp-service uv sync ``` ### 3. 配置邮箱 ```bash uv run python setup.py ``` ### 4. 初始化数据库和同步 ```bash # 交互式模式(推荐新手) uv run python scripts/init_sync.py # 直接初始化数据库 uv run python scripts/init_sync.py init # 启动后台守护进程(持续同步) uv run python scripts/init_sync.py daemon ``` **功能说明:** - 自动创建配置文件 - 检查邮箱账户配置 - 初始化数据库并同步最近6个月的邮件 - 支持后台守护进程模式持续同步 #### 邮箱配置说明 | 邮箱 | 配置步骤 | |-----|---------| | **163邮箱** | 登录 mail.163.com → 设置 → 开启IMAP → 获取授权码(使用授权码,不是密码) | | **QQ邮箱** | 设置 → 账户 → 开启IMAP → 生成授权码 | | **Gmail** | 开启两步验证 → [生成应用密码](https://myaccount.google.com/apppasswords) | | **Outlook** | 直接使用邮箱密码 | ### 4. 集成到 MCP 客户端 在 MCP 客户端(如 Claude Desktop)配置文件中添加: ```json { "mcpServers": { "mcp-email-service": { "command": "/你的路径/mcp-email-service/run.sh", "args": [] } } } ``` ### 5. 如何使用 MCP 命令 配置完成后,你可以在 MCP 客户端(如 Claude Desktop)中直接使用邮件功能: 1. **启动 MCP 客户端**:确保 MCP 服务已正确配置并运行 2. **在对话中使用**:直接在对话中请求邮件操作,例如: - "帮我查看未读邮件" - "搜索包含'会议'的邮件" - "标记邮件123为已读" - "发送邮件给 user@example.com" 3. **命令行客户端**:如果不想使用 MCP 客户端,也可以使用命令行客户端: ```bash # 交互式模式 uv run python -m clients.mailbox_client # 命令行模式 uv run python -m clients.mailbox_client list-emails --limit 10 ``` #### 默认行为(缓存 / 同步 / 版本) - `list_emails` 默认读取本地缓存(`use_cache=true`),`limit=100`、`folder=all`。若需直连 IMAP,可设置 `use_cache=false` 并自行调整 `limit`。 - 缓存通过 `(account_id, folder_id, uid)` 唯一索引 + upsert 去重,查询也会 `DISTINCT`,避免重复。 - 同步状态展示为本地时间,支持 **5 分钟** 间隔;用 `sync_emails status` / `force` 查看或触发同步。 - 版本信息位于 `src/config/version.py`,可通过 MCP `get_version` 或 CLI “版本”菜单查看。 ## 主要功能 > **注意**:以下命令需要在 MCP 客户端(如 Claude Desktop)中使用,不是命令行命令。 ### 查看邮件 ```bash list_emails # 查看未读邮件 list_emails with unread_only=false # 查看所有邮件 list_emails with limit=100 # 查看更多邮件 ``` ### 搜索邮件 ```bash search_emails with query="会议" # 搜索包含"会议"的邮件 search_emails with query="张三" search_in="from" # 搜索发件人 search_emails with date_from="2024-01-01" # 按日期搜索 ``` ### 邮件操作 ```bash get_email_detail with email_id="123" # 查看邮件详情 mark_emails with email_ids=["123"] mark_as="read" # 标记已读 delete_emails with email_ids=["123"] # 删除邮件 flag_email with email_id="123" set_flag=true # 添加星标 ``` ### 发送邮件 ```bash send_email with to=["user@example.com"] subject="标题" body="内容" reply_email with email_id="123" body="回复内容" ``` ### 联系人分析 ⭐ 新功能 ```bash analyze_contacts # 分析联系人频率(最近30天) analyze_contacts with days=90 limit=20 # 自定义分析周期 analyze_contacts with group_by="sender" # 只分析发件人 get_contact_timeline with contact_email="user@example.com" # 获取沟通时间线 ``` ## 所有可用命令 ### 邮件操作 - `list_emails` - 列出邮件 - `get_email_detail` - 查看邮件详情 - `search_emails` - 搜索邮件 - `mark_emails` - 标记已读/未读 - `delete_emails` - 删除邮件 - `flag_email` - 星标邮件 ### 发送邮件 - `send_email` - 发送邮件 - `reply_email` - 回复邮件 - `forward_email` - 转发邮件 ### 邮件管理 - `move_emails_to_folder` - 移动邮件 - `list_folders` - 查看文件夹 - `get_email_attachments` - 获取附件 ### 联系人分析 ⭐ 新功能 - `analyze_contacts` - 分析联系人频率 - `get_contact_timeline` - 获取沟通时间线 ### 系统管理 - `check_connection` - 测试连接 - `list_accounts` - 查看已配置账户 - `sync_emails` - 手动同步邮件数据库 ### 数据库同步功能 ```bash # 查看同步状态 sync_emails with action="status" # 手动触发同步 sync_emails with action="force" # 启动后台自动同步 sync_emails with action="start" # 停止后台同步 sync_emails with action="stop" ``` **同步机制说明:** - 首次同步:自动获取最近6个月的邮件历史 - 增量同步:每15分钟同步最近7天的新邮件 - 完全同步:每天凌晨2点进行完整同步 - 离线浏览:同步后的邮件可离线查看和搜索 ## 命令行邮箱客户端(新) 项目新增 `clients/mailbox_client` 子目录,提供独立的命令行界面,可以在不启动 MCP 客户端的情况下浏览所有已配置邮箱的邮件: ### 🎯 交互式模式(推荐新手) ```bash # 启动交互式模式(类似 setup.py) uv run python -m clients.mailbox_client ``` 交互式菜单已涵盖:查看/搜索邮件、同步状态/强制同步、健康检查、版本查看、数据库维护(清空/压缩)。列表默认使用缓存并显示 100 封,可用 `--limit` 扩大或 `--use-cache false` 直连 IMAP。 ### 📋 命令行模式(适合脚本) ```bash uv run python -m clients.mailbox_client list-accounts uv run python -m clients.mailbox_client list-emails --limit 20 uv run python -m clients.mailbox_client show-email 123456 --account-id my_account ``` 命令均支持 `--json` 参数输出原始数据,便于与脚本或自动化平台集成。详细使用说明请参阅 [clients/mailbox_client/README.md](clients/mailbox_client/README.md)。 ## 常见问题 1. **登录失败**:163/QQ邮箱使用授权码,Gmail使用应用密码 2. **找不到邮件**:默认只显示未读,使用 `unread_only=false` 3. **连接超时**:检查网络和防火墙设置 4. **重复或缓存异常**:缓存唯一键 `(account_id, folder_id, uid)` 已去重;如库损坏,可删除 `data/email_sync.db` 后重新同步,并用 `sync_emails status` 确认调度(本地时间,支持 5 分钟间隔)。 ## 项目结构 ``` mcp-email-service/ ├── data/ # 运行时数据目录(自动创建) │ ├── email_sync.db # 邮件同步数据库 │ ├── sync_config.json # 同步配置 │ ├── logs/ # 日志文件 │ ├── tmp/ # 临时文件 │ └── attachments/ # 下载的附件 ├── src/ # 源代码 │ ├── config/ # 配置管理 │ │ └── paths.py # 集中路径配置 │ ├── operations/ # 邮件操作 │ ├── background/ # 后台同步调度器 │ └── ... ├── tests/ # 测试套件(71/72 通过) ├── docs/ # 文档 │ ├── guides/ # 用户指南 │ └── archive/ # 历史文档 ├── scripts/ # 实用脚本 ├── n8n/ # n8n 工作流模板 ├── config_templates/ # 配置示例 ├── clients/ # 客户端示例与工具 │ └── mailbox_client/ # 命令行邮箱浏览客户端 └── accounts.json # 邮箱账户配置(用户创建) ``` ### 核心特性 - **后台同步自动启动**:MCP 服务启动时自动开始同步 - **数据集中管理**:所有运行时数据在 `data/` 目录 - **基于 UID 的操作**:跨操作的稳定邮件标识 - **智能缓存**:比实时 IMAP 查询快 100-500 倍 - **多账户支持**:正确隔离管理多个邮箱账户 - **性能优化**:批量操作共享连接(快 5 倍) - **充分测试**:71/72 测试通过,约 65% 代码覆盖率 ## 文档 ### 快速入门指南 - **[docs/guides/EMAIL_TRANSLATE_WORKFLOW_GUIDE.md](docs/guides/EMAIL_TRANSLATE_WORKFLOW_GUIDE.md)** - 邮件翻译与摘要工作流 - **[docs/guides/HTTP_API_QUICK_START.md](docs/guides/HTTP_API_QUICK_START.md)** - HTTP API 快速开始 - **[docs/guides/N8N_EMAIL_MONITORING_GUIDE.md](docs/guides/N8N_EMAIL_MONITORING_GUIDE.md)** - n8n 邮件监控指南 - **[docs/guides/LARK_SETUP_GUIDE.md](docs/guides/LARK_SETUP_GUIDE.md)** - 飞书 Webhook 设置 ### 技术文档 - **[docs/README.md](docs/README.md)** - 完整文档索引 - **[docs/ARCHITECTURE.md](docs/ARCHITECTURE.md)** - 系统架构设计 - **[docs/database_design.md](docs/database_design.md)** - 数据库设计 - **[n8n/README.md](n8n/README.md)** - n8n 工作流详情 - **[config_templates/](config_templates/)** - 配置模板示例 - **[data/README.md](data/README.md)** - 数据目录指南 ## 支持本项目 如果你觉得本项目有帮助,请考虑: - **给项目加星**以示支持 - **报告 Bug** 或建议功能通过 [Issues](https://github.com/leeguooooo/email-mcp-service/issues) - **贡献代码**或文档通过 [Pull Requests](https://github.com/leeguooooo/email-mcp-service/pulls) - **赞助开发**通过 [GitHub Sponsors](https://github.com/sponsors/leeguooooo) ### 微信/支付宝赞赏 如果你想支持本项目,可以使用微信支付或支付宝: <div align="center"> <img src=".github/wechatpay.JPG" alt="微信支付二维码" width="300"/> <img src=".github/alipay.JPG" alt="支付宝二维码" width="300"/> <p><i>扫码支持本项目(微信或支付宝)</i></p> </div> 你的支持帮助维护和改进本项目!谢谢! ## 贡献 欢迎贡献!请随时提交 Issue 和 Pull Request。 ### 运行测试 ```bash # 运行所有测试 uv run pytest # 查看测试覆盖率 uv run coverage run -m pytest uv run coverage report ``` ## 许可证 MIT License

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/leeguooooo/email-mcp-service'

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