电子邮件处理 MCP 服务器
此 MCP 服务器提供电子邮件处理功能,集成 MongoDB 进行语义搜索和 SQLite 实现高效存储与检索。
功能
- 处理带有日期范围过滤的 Outlook 电子邮件
- 在 SQLite 数据库中存储电子邮件并进行适当连接管理
- 使用 Ollama 生成向量嵌入
- 支持多邮箱
- 支持 Inbox、Sent Items 和可选的 Deleted Items 文件夹
下一个功能
- 带有语义能力的电子邮件搜索
- 使用 LLM 的电子邮件摘要
- 自动电子邮件分类
- 可自定义的电子邮件报告
- 高级过滤选项
- Outlook 草拟电子邮件响应
- Outlook 规则建议
- 扩展数据库选项,集成 Neo4j 和 ChromaDB
先决条件
- Python 3.10 或更高版本
- Ollama 在本地运行(用于嵌入)
- Microsoft Outlook 安装
- Windows 操作系统(用于 Outlook 集成)
- MongoDB 服务器(用于存储嵌入)
安装
-
安装 uv(如果尚未安装):
pip install uv
-
创建虚拟环境:
uv venv .venv
-
激活虚拟环境:
Windows:
.venv\Scripts\activate
macOS/Linux:
source .venv/bin/activate
-
安装依赖项:
uv pip install -e .
- 安装 fastmcp 包:
uv pip install fastmcp
- 确保 Ollama 本地运行并安装所需模型:
ollama pull nomic-embed-text
配置
将服务器添加到您的 Claude for Desktop 配置文件中:
- Windows:%APPDATA%\Claude\claude_desktop_config.json
- macOS:~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"outlook-email": {
"command": "C:/Users/username/path/to/mcp-server-outlook-email/.venv/Scripts/python",
"args": [
"C:/Users/username/path/to/mcp-server-outlook-email/src/mcp_server.py"
],
"env": {
"MONGODB_URI": "mongodb://localhost:27017/MCP?authSource=admin",
"SQLITE_DB_PATH": "email_processing.db",
"OLLAMA_HOST": "localhost",
"OLLAMA_PORT": 11434
}
}
}
}
示例用法在 Claude 中
"Process emails from February 1st to February 17th from all mailboxes"
架构
服务器采用混合搜索方法:
-
SQLite 数据库用于:
- 主电子邮件存储
- 全文搜索功能
- 处理状态跟踪
- 高效过滤
- 目录自动创建(如果不存在)
- 连接在服务器关闭时正确关闭,以防止“无法操作已关闭数据库”错误
-
MongoDB 用于:
- 嵌入式向量存储
- 语义相似性搜索
- 元数据过滤
- 高效检索
- 在服务器关闭后正确关闭连接
错误处理
服务器提供详细错误消息,针对常见问题:
- 无效日期格式
- 与 Outlook 的连接问题
- MongoDB 错误
- 嵌入式生成失败并带有重试逻辑
- SQLite 存储错误
- Ollama 服务器连接问题的自动重试
资源管理
服务器实现适当的资源管理以防止问题:
- 数据库连接(SQLite 和 MongoDB)在服务器生命周期内保持打开状态,以防止“无法操作已关闭数据库”错误
- 连接仅在服务器关闭时关闭,使用 atexit 处理器
- 使用破坏性和上下文管理器作为最后手段,确保连接在对象垃圾回收时关闭
- 旨在平衡资源使用与运营可靠性的连接管理
- 健壮的重试逻辑用于外部服务(如 Ollama),以处理临时连接问题
安全注意事项
- 服务器仅处理指定邮箱的电子邮件
- 所有数据本地存储(SQLite)并在 MongoDB 中
- 除本地 Ollama 服务器外,没有进行任何外部 API 调用
- 需要明确用户批准才能进行电子邮件处理
- 通过 MCP 接口不会暴露任何敏感的电子邮件数据
调试
遇到问题时:
- 验证电子邮件是否成功处理(检查 process_emails 响应)
- 确保 Ollama 服务器在嵌入生成期间运行
- 检查 SQLite 数据库是否可访问
- 验证 MongoDB 连接是否正常工作