电子邮件处理 MCP 服务器
该 MCP 服务器提供电子邮件处理功能,并集成 MongoDB 进行语义搜索,以及 SQLite 进行高效存储和检索。
特征
使用日期范围过滤功能处理 Outlook 中的电子邮件
使用适当的连接管理将电子邮件存储在 SQLite 数据库中
使用 Ollama 生成向量嵌入
多邮箱支持
支持收件箱、已发送邮件和可选的已删除邮件文件夹
Related MCP server: Gmail MCP Server
即将推出的功能
具有语义功能的电子邮件搜索
使用 LLM 进行电子邮件摘要
自动电子邮件分类
可定制的电子邮件报告
高级过滤选项
Outlook 起草电子邮件回复
Outlook 规则建议
通过 Neo4j 和 ChromaDB 集成扩展数据库选项
先决条件
Python 3.10 或更高版本
Ollama 本地运行(用于嵌入)
已安装 Microsoft Outlook
Windows 操作系统(用于 Outlook 集成)
MongoDB 服务器(用于存储嵌入)
安装
安装 uv(如果尚未安装):
创建虚拟环境:
激活虚拟环境:
视窗:
.venv\Scripts\activatemacOS/Linux:
source .venv/bin/activate安装依赖项:
安装 fastmcp 包:
确保 Ollama 在本地运行并具有所需的模型:
配置
将服务器添加到您的 Claude for Desktop 配置文件中:
Windows:
%APPDATA%\Claude\claude_desktop_config.jsonmacOS:
~/Library/Application Support/Claude/claude_desktop_config.json
追踪与监控
该服务器已设计为支持外部跟踪和监控解决方案。MCP 日志记录实现已被有意移除,以支持更强大的跟踪方法,该方法将单独实现。
注意:请勿尝试重新实现之前的日志系统。后续会提供新的追踪方案。
配置字段说明:
command:虚拟环境中 Python 可执行文件的完整路径args:包含 MCP 服务器脚本完整路径的数组env:配置的环境变量MONGODB_URI:MongoDB 连接字符串SQLITE_DB_PATH:SQLite 数据库文件的绝对路径EMBEDDING_BASE_URL:Ollama 服务器 URLEMBEDDING_MODEL:用于嵌入的模型LLM_MODEL:用于 LLM 操作的模型COLLECTION_NAME:要使用的 MongoDB 集合的名称(必需)PROCESS_DELETED_ITEMS:是否处理“已删除邮件”文件夹中的电子邮件(可选,默认值:“false”)
disabled:服务器是否被禁用(应为 false)alwaysAllow:不需要用户确认的工具数组autoApprove:可自动批准的工具数组
将路径替换为系统上的实际路径。请注意, env部分中的 Windows 路径应使用双反斜杠。
可用工具
1. process_emails
处理指定日期范围内的电子邮件:
该工具将:
连接到指定的 Outlook 邮箱
从收件箱和已发送邮件文件夹(以及已删除邮件,如果启用)检索电子邮件
将电子邮件存储在 SQLite 数据库中
使用 Ollama 生成嵌入
将嵌入存储在 MongoDB 中以进行语义搜索
Claude 中的示例用法
建筑学
服务器采用混合搜索方式:
SQLite 数据库用于:
主要电子邮件存储
全文搜索功能
处理状态追踪
高效过滤
如果目录不存在则自动创建
连接已正确关闭以防止数据库锁定
MongoDB 适用于:
向量嵌入存储
语义相似性搜索
元数据过滤
高效检索
使用后正确关闭连接
错误处理
服务器提供了常见问题的详细错误消息:
无效的日期格式
Outlook 的连接问题
MongoDB 错误
使用重试逻辑嵌入生成故障
SQLite 存储错误
Ollama 服务器连接问题与自动重试
资源管理
服务器实施适当的资源管理以防止出现以下问题:
数据库连接(SQLite 和 MongoDB)在服务器生命周期内保持打开状态,以防止出现“无法在已关闭的数据库上操作”错误
仅当服务器关闭时,使用 atexit 处理程序关闭连接
析构函数和上下文管理器被用作后备,以确保在对象被垃圾收集时关闭连接
连接管理旨在平衡资源使用和操作可靠性
为 Ollama 等外部服务提供强大的重试逻辑,以处理临时连接问题
安全说明
服务器仅处理来自指定邮箱的电子邮件
所有数据都存储在本地(SQLite)和 MongoDB 中
除了本地 Ollama 服务器之外,没有外部 API 调用
需要用户明确批准才能处理电子邮件
不会通过 MCP 界面暴露任何敏感的电子邮件数据
调试
如果您遇到问题:
验证电子邮件是否已成功处理(检查 process_emails 响应)
确保 Ollama 服务器正在运行以生成嵌入
检查 SQLite 数据库是否可以访问
验证 MongoDB 连接是否正常工作