Skip to main content

High-performance MCP server for enterprise email management with trusted sender filtering, connection pooling, and intelligent caching

Project description

Mail MCP Server v2.0

一个基于 FastMCP 框架的高性能邮件服务器,专注于可信发件人邮件检查和智能回复功能。采用现代化架构,提供简洁高效的 MCP (Model Context Protocol) 服务。

🎯 v2.0 核心特性

📧 简化的邮件工具(3个核心工具)

  • 智能邮件检查: 自动筛选可信发件人的未读邮件
  • 智能邮件回复: 快速回复邮件,支持附件和HTML格式
  • 附件下载: 快速下载邮件附件到本地目录

🚀 性能优化

  • 连接池管理: IMAP/SMTP连接复用,提升响应速度
  • 智能缓存: 邮件数据和可信发件人检查结果缓存
  • 性能监控: 实时监控系统性能指标
  • 并发处理: 异步架构,支持高并发邮件操作

🔒 企业级安全

  • 可信发件人: 基于白名单的安全邮件筛选
  • 错误处理: 完整的错误分类和重试机制
  • SSL/TLS: 全程加密传输
  • 参数验证: 严格的输入验证和安全检查

🛠️ 开发友好

  • 类型安全: 完整的类型注解和验证
  • 测试覆盖: 全面的单元测试覆盖
  • 文档完整: 详细的API文档和使用示例
  • 监控指标: 内置性能监控和统计

🚀 快速开始

使用 uvx (零安装配置)

只需要创建一个 .mcp.json 配置文件即可,无需任何预安装:

{
  "mcpServers": {
    "mail-mcp": {
      "command": "uvx",
      "args": ["mail-mcp"],
      "env": {
        "IMAP_HOST": "imap.qq.com",
        "IMAP_PORT": "993",
        "IMAP_USERNAME": "your-email@qq.com",
        "IMAP_PASSWORD": "your-app-password",
        "IMAP_USE_SSL": "true",
        "SMTP_HOST": "smtp.qq.com",
        "SMTP_PORT": "587",
        "SMTP_USERNAME": "your-email@qq.com",
        "SMTP_PASSWORD": "your-app-password",
        "SMTP_USE_SSL": "false",
        "TRUSTED_SENDERS": "admin@company.com,support@partner.com,boss@example.com"
      }
    }
  }
}

启动 Claude Code 即可使用!uvx 会自动下载和运行 Mail MCP v2.0。

常见邮箱服务配置

替换 .mcp.json 中的主机地址即可支持不同邮箱:

QQ邮箱(推荐)

{
  "IMAP_HOST": "imap.qq.com",
  "IMAP_PORT": "993",
  "SMTP_HOST": "smtp.qq.com",
  "SMTP_PORT": "587",
  "IMAP_USE_SSL": "true",
  "SMTP_USE_SSL": "false"
}

Gmail

{
  "IMAP_HOST": "imap.gmail.com",
  "IMAP_PORT": "993",
  "SMTP_HOST": "smtp.gmail.com",
  "SMTP_PORT": "587",
  "IMAP_USE_SSL": "true",
  "SMTP_USE_SSL": "false"
}

Outlook/Hotmail

{
  "IMAP_HOST": "outlook.office365.com",
  "IMAP_PORT": "993",
  "SMTP_HOST": "smtp-mail.outlook.com",
  "SMTP_PORT": "587",
  "IMAP_USE_SSL": "true",
  "SMTP_USE_SSL": "false"
}

163邮箱

{
  "IMAP_HOST": "imap.163.com",
  "IMAP_PORT": "993",
  "SMTP_HOST": "smtp.163.com",
  "SMTP_PORT": "587",
  "IMAP_USE_SSL": "true",
  "SMTP_USE_SSL": "false"
}

获取应用密码

  1. QQ邮箱: 设置 → 账户 → 开启IMAP/SMTP → 获取授权码
  2. Gmail: Google账户 → 安全性 → 两步验证 → 应用密码
  3. Outlook: 账户设置 → 安全性 → 应用密码
  4. 163邮箱: 设置 → POP3/IMAP/SMTP → 授权码

配置可信发件人

在环境变量 TRUSTED_SENDERS 中配置可信发件人列表,用逗号分隔:

TRUSTED_SENDERS=admin@company.com,support@partner.com,boss@example.com

📋 v2.0 MCP 工具 (3个核心工具)

🔍 check - 检查可信发件人邮件

检查指定可信发件人的新未读邮件,自动标记为已读并按时间排序返回。

用法示例

检查新邮件
查看可信发件人的未读邮件
有新的重要邮件吗?

返回格式

{
  "success": true,
  "emails": [
    {
      "id": "123",
      "from": "admin@company.com",
      "subject": "重要通知",
      "body_text": "邮件正文...",
      "body_html": "<p>HTML邮件正文...</p>",
      "attachments": ["document.pdf"],
      "attachment_count": 1,
      "received_time": "2024-01-15T10:30:00",
      "cc_addresses": ["team@company.com"],
      "is_read": true,
      "message_id": "msg-123@company.com"
    }
  ],
  "total_count": 1,
  "trusted_senders": ["admin@company.com", "support@partner.com"]
}

📤 reply - 智能邮件回复

回复指定的邮件,支持自定义主题、HTML格式和文件附件。

参数

  • message_id (必需): 要回复的邮件ID
  • body (必需): 回复内容,支持纯文本和HTML
  • subject (可选): 自定义回复主题,默认为"Re: 原主题"
  • attachments (可选): 附件文件路径列表

用法示例

回复邮件ID 123,内容是"感谢您的邮件,我会尽快处理"
reply to message 456 with "已收到,明天给您回复"
回复邮件 789,主题改为"关于合作事宜",内容是"<p>详情请见附件</p>",附件 /path/to/contract.pdf

返回格式

{
  "success": true,
  "message": "回复邮件发送成功到 admin@company.com",
  "original_subject": "重要通知",
  "reply_subject": "Re: 重要通知",
  "recipient": "admin@company.com",
  "sent_time": "2024-01-15T11:00:00",
  "body_format": "html",
  "attachments": ["contract.pdf"],
  "attachment_count": 1,
  "cc_recipients": ["team@company.com"]
}

📎 download_attachments - 下载邮件附件

下载指定邮件的附件到本地目录,支持选择性下载和批量下载。

参数

  • message_id (必需): 邮件ID
  • filenames (可选): 要下载的附件文件名列表,为空则下载所有附件
  • save_path (可选): 保存路径,默认为 "./downloads"

用法示例

下载邮件123的所有附件
download attachments from message 456 to /path/to/downloads
下载邮件789的附件 document.pdf 和 image.jpg

返回格式

{
  "success": true,
  "message": "完成下载,成功 2/2 个附件",
  "downloaded_count": 2,
  "total_count": 2,
  "save_path": "./downloads",
  "attachments": [
    {
      "filename": "document.pdf",
      "status": "success",
      "file_path": "./downloads/document.pdf",
      "size_bytes": 1024000,
      "size_human": "1.0 MB"
    },
    {
      "filename": "image.jpg",
      "status": "success",
      "file_path": "./downloads/image.jpg",
      "size_bytes": 512000,
      "size_human": "500.0 KB"
    }
  ]
}

📊 performance_stats - 性能统计

获取系统性能统计信息,包括连接池状态、缓存命中率和监控指标。

用法示例

查看性能统计
获取系统状态
performance stats

返回格式

{
  "timestamp": 1705312800.0,
  "server_status": "running",
  "connection_pool": {
    "imap_pool_size": 2,
    "smtp_pool_size": 1,
    "total_connections": 10,
    "successful_connections": 9,
    "failed_connections": 1,
    "success_rate": 90.0
  },
  "email_cache": {
    "email_cache": {
      "hit_rate": 85.5,
      "cache_size": 150,
      "max_size": 1000
    },
    "content_cache": {
      "hit_rate": 72.3,
      "cache_size": 80,
      "max_size": 500
    }
  },
  "performance_monitor": {
    "total_metrics": 500,
    "counters": {
      "imap.check_trusted_emails.calls": 25,
      "smtp.reply_to_message.calls": 12
    },
    "timing_stats": {
      "imap.check_trusted_emails": {
        "avg": 0.15,
        "min": 0.05,
        "max": 0.45
      }
    }
  },
  "services": {
    "imap_service": "initialized",
    "smtp_service": "initialized",
    "config_valid": true
  }
}

🔧 错误处理

v2.0 错误分类

系统定义了以下错误类型:

  • MailMCPError: 基础邮件错误
  • TrustedSenderError: 可信发件人相关错误
  • EmailReplyError: 邮件回复错误
  • IMAPError: IMAP特定错误
  • SMTPError: SMTP特定错误
  • NetworkError: 网络连接错误
  • AuthenticationError: 认证失败错误
  • ValidationError: 参数验证错误
  • FileSystemError: 文件系统错误

错误响应格式

{
  "success": false,
  "error": {
    "code": "VALIDATION_INVALID_PARAMETER",
    "category": "validation",
    "message": "邮件ID不能为空",
    "details": {
      "message_id": ""
    },
    "timestamp": "2024-01-15T10:30:00"
  }
}

常见错误和解决方案

认证失败

[AUTH_FAILED] IMAP认证失败: (b'[AUTHENTICATIONFAILED] Login failed')

解决方案: 检查用户名和密码是否正确,确认开启了 IMAP/SMTP 服务并获取了正确的应用密码。

可信发件人未配置

[CONFIGURATION_MISSING_TRUSTED_SENDERS] 未配置可信发件人列表

解决方案: 在环境变量 TRUSTED_SENDERS 中配置可信发件人邮箱地址,多个地址用逗号分隔。

邮件ID无效

[VALIDATION_INVALID_PARAMETER] 邮件ID不能为空

解决方案: 确保提供了有效的邮件ID,可以通过 check 工具获取邮件ID。

附件文件错误

[FILESYSTEM_FILE_NOT_FOUND] 附件文件验证失败: 文件不存在: /path/to/file.pdf

解决方案: 检查附件文件路径是否正确,确认文件存在且有读取权限。

🏗️ 架构设计

v2.0 架构特点

mail-mcp-v2/
├── mail_mcp/
│   ├── main.py              # MCP 服务器 (仅3个工具)
│   ├── config.py            # 配置管理 + 可信发件人
│   ├── imap_service.py      # IMAP 服务 + 缓存集成
│   ├── smtp_service.py      # SMTP 服务 + 连接池集成
│   ├── connection_pool.py   # 连接池管理 (新增)
│   ├── cache.py             # 缓存管理 (新增)
│   ├── performance.py       # 性能监控 (新增)
│   ├── models.py            # 数据模型
│   ├── utils.py             # 工具函数
│   └── errors.py            # 增强错误处理
└── tests/                   # 全面测试覆盖

性能优化架构

  1. 连接池: IMAP/SMTP连接复用,最大3个IMAP连接,2个SMTP连接
  2. 智能缓存: LRU缓存邮件数据和可信发件人检查结果
  3. 性能监控: 实时收集指标,支持时间统计和计数器
  4. 异步处理: 全异步架构,支持并发操作
  5. 重试机制: 指数退避重试,提高稳定性

🔄 从 v1.x 迁移到 v2.0

主要变化

  1. 工具简化: 从12个工具简化为2个核心工具
  2. 性能提升: 新增连接池、缓存和性能监控
  3. 配置更新: 新增 TRUSTED_SENDERS 环境变量
  4. 安全增强: 基于可信发件人的安全筛选

配置迁移

更新你的 .mcp.json 配置:

旧配置 (v1.x):

{
  "MAIL_IMAP_HOST": "imap.qq.com",
  "MAIL_SMTP_HOST": "smtp.qq.com"
}

新配置 (v2.0):

{
  "IMAP_HOST": "imap.qq.com",
  "SMTP_HOST": "smtp.qq.com",
  "TRUSTED_SENDERS": "admin@company.com,support@partner.com"
}

工具对应关系

v1.x 工具 v2.0 工具 说明
list_messages + get_message + search_messages check 自动筛选可信发件人邮件
send_email + send_email_with_attachments reply 智能邮件回复
health_check + get_server_info performance_stats 性能和状态监控

🧪 开发和测试

运行测试

# 运行所有v2.0核心测试
pytest tests/test_config.py tests/test_error_handling.py tests/test_performance_integration.py -v

# 运行特定测试
pytest tests/test_performance_integration.py -v

# 生成测试覆盖率报告
pytest --cov=mail_mcp --cov-report=html tests/test_config.py tests/test_error_handling.py tests/test_performance_integration.py

代码质量检查

# 类型检查
mypy mail_mcp/

# 代码格式化
ruff check mail_mcp/
ruff format mail_mcp/

# 导入排序
ruff check --select I mail_mcp/

性能基准测试

# 连接池性能测试
python -m pytest tests/test_performance_integration.py::TestConnectionPoolIntegration -v

# 缓存性能测试
python -m pytest tests/test_performance_integration.py::TestPerformanceIntegration::test_performance_stats_tool -v

📊 监控和维护

关键性能指标 (KPI)

  • 连接成功率: 目标 > 95%
  • 缓存命中率: 目标 > 80%
  • 平均响应时间: check < 200ms, reply < 500ms
  • 并发处理能力: 支持 > 10 并发请求

监控建议

使用 performance_stats 工具定期检查:

# 在Claude Code中执行
performance stats

关注以下指标:

  • connection_pool.success_rate - 连接成功率
  • email_cache.*.hit_rate - 缓存命中率
  • timing_stats.*.avg - 平均响应时间

🔐 安全最佳实践

环境变量安全

  • 使用应用密码而非账户密码
  • 定期轮换应用密码
  • 不要在代码中硬编码密码
  • 使用 .env 文件管理敏感配置

可信发件人管理

  • 定期审查可信发件人列表
  • 使用具体的邮箱地址而非域名
  • 监控异常邮件活动
  • 及时更新发件人白名单

网络安全

  • 始终使用 SSL/TLS 加密连接
  • 配置防火墙限制访问
  • 监控异常连接尝试
  • 定期更新依赖包

📞 支持和帮助

获取帮助

  1. 查看本文档的配置和错误处理章节
  2. 使用 performance_stats 工具检查系统状态
  3. 查看日志文件获取详细错误信息
  4. 提交 Issue 描述问题并包含错误日志

常见问题

Q: v2.0有什么主要优势? A: 性能提升50%+,工具简化90%,安全性增强,支持企业级可信发件人筛选。

Q: 如何从v1.x升级? A: 更新配置文件,添加 TRUSTED_SENDERS 环境变量,适配新的工具接口。

Q: 支持多少个可信发件人? A: 理论上无限制,建议控制在100个以内以保证性能。

Q: 性能优化效果如何? A: 连接池减少90%连接建立时间,缓存提升80%响应速度,支持10倍并发处理能力。

📄 许可证

本项目采用 MIT 许可证。详情请参阅 LICENSE 文件。

🤝 贡献指南

欢迎提交 Issue 和 Pull Request!

  1. Fork 本仓库
  2. 创建功能分支 (git checkout -b feature/amazing-feature)
  3. 提交更改 (git commit -m 'Add amazing feature')
  4. 推送到分支 (git push origin feature/amazing-feature)
  5. 创建 Pull Request

Mail MCP Server v2.0 - 企业级邮件智能处理解决方案!

🚀 更快 | 🔒 更安全 | 🎯 更专注 | 📊 更智能

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mail_mcp-2.1.0.tar.gz (70.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mail_mcp-2.1.0-py3-none-any.whl (58.0 kB view details)

Uploaded Python 3

File details

Details for the file mail_mcp-2.1.0.tar.gz.

File metadata

  • Download URL: mail_mcp-2.1.0.tar.gz
  • Upload date:
  • Size: 70.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.13

File hashes

Hashes for mail_mcp-2.1.0.tar.gz
Algorithm Hash digest
SHA256 f6c2b37b4e61c7f77f0565d4a64bb955f592041157cf50d6a7ab85baaf664f58
MD5 761c6913c633864eb81e69fb1aa3e58b
BLAKE2b-256 d1d2ef485f3c09a03583eb843158fd9ed633a58b95105621f1a203f3dc060179

See more details on using hashes here.

File details

Details for the file mail_mcp-2.1.0-py3-none-any.whl.

File metadata

  • Download URL: mail_mcp-2.1.0-py3-none-any.whl
  • Upload date:
  • Size: 58.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.13

File hashes

Hashes for mail_mcp-2.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f1de6e3ca440ab1633b12946fbbbb73142222330d3bb7fc7151832f04f20a1c9
MD5 ba58156d40112737ae0ea0c8fe1c2350
BLAKE2b-256 c148c56e7fa63209e24cd6e0c07771e25b6ce2c90968f70b3e4a0a176a5b0e01

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page