返回市场
邮件外发服务器

邮件外发服务器

作者:Cam1000111010111 星标更新:2025-07-01

项目介绍

MseeP.ai 安全评估徽章

处理电子邮件的MCP服务器

此MCP服务器提供与MongoDB集成的电子邮件处理功能,用于语义搜索,并使用SQLite进行高效存储和检索。

功能

  • 从Outlook中处理指定日期范围内的电子邮件
  • 将电子邮件存储在SQLite数据库中,并进行适当的连接管理
  • 使用Ollama生成向量嵌入
  • 支持多个邮箱
  • 支持收件箱、已发送邮件文件夹,以及可选的已删除邮件文件夹

即将推出的功能

  • 具有语义能力的电子邮件搜索
  • 使用大语言模型(LLMs)进行电子邮件摘要
  • 自动电子邮件分类
  • 可定制的电子邮件报告
  • 高级过滤选项
  • 在Outlook中起草电子邮件回复
  • 提供Outlook规则建议
  • 扩展数据库选项,集成Neo4j和ChromaDB

前提条件

  • Python 3.10或更高版本
  • 本地运行的Ollama(用于嵌入)
  • 已安装的Microsoft Outlook
  • Windows操作系统(用于Outlook集成)
  • MongoDB服务器(用于存储嵌入)

安装

  1. 安装uv(如果尚未安装):
pip install uv
  1. 创建虚拟环境:
uv venv .venv
  1. 激活虚拟环境:

    Windows:

    .venv\Scripts\activate
    

    macOS/Linux:

    source .venv/bin/activate
    
  2. 安装依赖项:

uv pip install -e .
  1. 安装fastmcp包:
uv pip install fastmcp
  1. 确保Ollama本地运行并带有所需模型:
ollama pull nomic-embed-text

配置

将服务器添加到您的Claude桌面配置文件中:

  • 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": "C:\\Users\\username\\path\\to\\mcp-server-outlook-email\\data\\emails.db",
        "EMBEDDING_BASE_URL": "http://localhost:11434",
        "EMBEDDING_MODEL": "nomic-embed-text",
        "COLLECTION_NAME": "outlook-emails",
        "PROCESS_DELETED_ITEMS": "false"
      }
    }
  }
}

跟踪和监控

该服务器设计支持外部跟踪和监控解决方案。为了采用更强大的跟踪方法,MCP日志实现已被有意移除,并将在未来单独实施。

注意:不要尝试重新实现之前的日志系统。未来将提供新的跟踪解决方案。

配置字段说明:

  • command:虚拟环境中Python可执行文件的完整路径
  • args:包含MCP服务器脚本完整路径的数组
  • env:配置环境变量
    • MONGODB_URI:MongoDB连接字符串
    • SQLITE_DB_PATH:SQLite数据库文件的绝对路径
    • EMBEDDING_BASE_URL:Ollama服务器URL
    • EMBEDDING_MODEL:用于嵌入的模型
    • LLM_MODEL:用于LLM操作的模型
    • COLLECTION_NAME:要使用的MongoDB集合名称(必需)
    • PROCESS_DELETED_ITEMS:是否处理已删除邮件文件夹中的邮件(可选,默认:"false")
  • disabled:服务器是否被禁用(应为false)
  • alwaysAllow:不需要用户确认的工具数组
  • autoApprove:可以自动批准的工具数组

请替换实际系统中的路径。注意,在env部分中的Windows路径应使用双反斜杠。

可用工具

1. process_emails

处理指定日期范围内的电子邮件:

{
  "start_date": "2024-01-01",    # ISO格式日期(YYYY-MM-DD)
  "end_date": "2024-02-15",      # ISO格式日期(YYYY-MM-DD)
  "mailboxes": ["All"]           # 邮箱名称列表或["All"]表示所有邮箱
}

该工具将:

  1. 连接到指定的Outlook邮箱
  2. 从收件箱和已发送邮件文件夹(如果启用,则包括已删除邮件文件夹)中检索电子邮件
  3. 将电子邮件存储在SQLite数据库中
  4. 使用Ollama生成嵌入
  5. 将嵌入存储在MongoDB中以进行语义搜索

在Claude中的示例用法

"处理从2月1日至2月17日的所有邮箱中的电子邮件"

架构

服务器使用混合搜索方法:

  1. SQLite数据库用于:

    • 主要电子邮件存储
    • 全文搜索能力
    • 处理状态跟踪
    • 高效过滤
    • 如果不存在,会自动创建目录
    • 使用完毕后正确关闭连接以防止数据库锁定
  2. MongoDB用于:

    • 向量嵌入存储
    • 语义相似性搜索
    • 元数据过滤
    • 高效检索
    • 使用完毕后正确关闭连接

错误处理

服务器提供了常见问题的详细错误消息:

  • 无效的日期格式
  • 与Outlook的连接问题
  • MongoDB错误
  • 嵌入生成失败(具有重试逻辑)
  • SQLite存储错误
  • Ollama服务器连接问题(具有自动重试)

资源管理

服务器实现了适当的资源管理以防止问题:

  • 数据库连接(SQLite和MongoDB)在整个服务器生命周期内保持打开,以防止“无法对已关闭的数据库进行操作”的错误
  • 仅在服务器关闭时才关闭连接,使用atexit处理器
  • 使用析构函数和上下文管理器作为后备,确保对象被垃圾回收时连接被关闭
  • 连接管理旨在平衡资源使用与操作可靠性
  • 对于像Ollama这样的外部服务,具有强大的重试逻辑以处理临时连接问题

安全注意事项

  • 服务器仅处理来自指定邮箱的电子邮件
  • 所有数据都存储在本地(SQLite)和MongoDB中
  • 除了本地Ollama服务器外,没有外部API调用
  • 需要明确的用户批准才能处理电子邮件
  • 不通过MCP接口暴露敏感电子邮件数据

调试

如果您遇到问题:

  1. 验证电子邮件是否成功处理(检查process_emails响应)
  2. 确保Ollama服务器正在运行以生成嵌入
  3. 检查SQLite数据库是否可访问
  4. 验证MongoDB连接是否正常工作