项目简介

EWS MCP Server是一个功能全面的应用后端,它实现了Model Context Protocol (MCP) 规范。通过该服务器,AI助手可以无缝地与Microsoft Exchange Web Services (EWS) 交互,从而执行一系列邮件、日历、联系人、任务和文件夹管理操作。它支持多种认证方式(OAuth2, Basic Auth, NTLM),并提供了丰富的工具集,让AI能够处理企业级的协作和信息管理任务。

主要功能点

  • 邮件管理: 发送、读取、搜索、删除、移动和复制邮件,支持附件操作和内容提取。
  • 日历管理: 创建、更新、删除会议,响应会议邀请,并能智能查找最佳会议时间。
  • 联系人管理: 全面的联系人增删改查,支持在全局地址列表 (GAL) 和邮件历史中智能搜索联系人,分析沟通模式和网络关系。
  • 任务管理: 创建、获取、更新、完成和删除Exchange任务。
  • 文件夹管理: 创建、删除、重命名和移动邮箱文件夹。
  • 高级搜索: 支持会话线程搜索、全文搜索、多条件组合搜索。
  • 外出回复 (OOF): 配置和管理自动外出回复设置。
  • 多认证支持: 支持OAuth2 (推荐用于Office 365)、Basic Auth 和 NTLM。
  • 内容提取: 可从PDF、DOCX、XLSX、TXT等附件中提取文本内容。

安装步骤 (使用Docker简化部署)

此服务器推荐通过Docker进行部署,方便快捷。

使用预构建Docker镜像 (最简单):

  1. 拉取最新镜像:

    docker pull ghcr.io/azizmazrou/ews-mcp:latest
  2. 创建环境变量文件 ('.env'): 您需要根据您的Exchange环境选择认证方式。

    • 如果您使用Basic Authentication (适用于测试或本地Exchange):

      # 创建 .env 文件
      cat > .env <<EOF
      EWS_SERVER_URL=https://mail.company.com/EWS/Exchange.asmx
      [email protected]
      EWS_AUTODISCOVER=false
      EWS_AUTH_TYPE=basic
      [email protected]
      EWS_PASSWORD=your-password
      TIMEZONE=UTC
      LOG_LEVEL=INFO
      EOF
      # 替换其中的 mail.company.com, [email protected], your-password 为您的实际信息。
    • 如果您使用OAuth2 Authentication (推荐用于Office 365):

      # 使用预配置的OAuth2模板
      cp .env.oauth2.example .env
      # 然后编辑 .env 文件,替换以下信息为您的Azure AD 应用注册凭据:
      # EWS_CLIENT_ID=<您的Azure AD应用客户端ID>
      # EWS_CLIENT_SECRET=<您的Azure AD应用客户端Secret>
      # EWS_TENANT_ID=<您的Azure AD租户ID>
      # EWS_EMAIL=<要连接的Exchange邮箱地址>
      # EWS_SERVER_URL=https://outlook.office365.com/EWS/Exchange.asmx
      # EWS_AUTH_TYPE=oauth2
      # TIMEZONE=UTC
      # LOG_LEVEL=INFO

      (请参考仓库的README文件,其中有详细的Azure AD应用注册步骤)。

  3. 运行Docker容器:

    docker run -d \
      --name ews-mcp-server \
      --env-file .env \
      -v $(pwd)/logs:/app/logs \
      ghcr.io/azizmazrou/ews-mcp:latest
  4. 查看日志 (确认连接成功):

    docker logs -f ews-mcp-server
    # 查找 "✓ Successfully connected to Exchange" 信息,表示服务器已成功连接到Exchange。

服务器配置 (供MCP客户端使用)

MCP客户端(如Claude Desktop)需要知道如何启动并连接到此服务器。以下是配置示例:

使用预构建的Docker镜像 (推荐给MCP客户端):

{
  "mcpServers": {
    "ews": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "--env-file",
        "/absolute/path/to/.env", // 替换为您的 .env 文件的绝对路径
        "ghcr.io/azizmazrou/ews-mcp:latest"
      ],
      "description": "连接到Microsoft Exchange邮箱,提供邮件、日历、联系人、任务、文件夹等管理工具,赋能AI助手高效处理企业协作和信息管理任务。"
    }
  }
}

注意: '"/absolute/path/to/.env"' 必须是MCP客户端能够访问到的宿主机上的 '.env' 文件的绝对路径。

如果您是在本地Python环境运行 (开发用途):

{
  "mcpServers": {
    "ews": {
      "command": "python",
      "args": ["-m", "src.main"],
      "cwd": "/path/to/ews-mcp", // 替换为您的 ews-mcp 仓库的绝对路径
      "env": {
        "EWS_EMAIL": "[email protected]",      // 您的Exchange邮箱
        "EWS_AUTH_TYPE": "oauth2",            // 或 "basic" / "ntlm"
        "EWS_CLIENT_ID": "your-client-id",    // OAuth2需要,Basic/NTLM不需要
        "EWS_CLIENT_SECRET": "your-secret",   // OAuth2需要,Basic/NTLM不需要
        "EWS_TENANT_ID": "your-tenant"        // OAuth2需要,Basic/NTLM不需要
        // 其他环境变量如 EWS_SERVER_URL, EWS_USERNAME, EWS_PASSWORD 等也在此处配置
      },
      "description": "连接到Microsoft Exchange邮箱,提供邮件、日历、联系人、任务、文件夹等管理工具 (本地Python运行版)。"
    }
  }
}

注意: 在本地开发环境中,您也可以将所有环境变量写入到 'cwd' 目录下的 '.env' 文件中,然后省略 'env' 字段。

基本使用方法 (AI助手交互)

一旦MCP服务器启动并被MCP客户端配置,AI助手就可以通过调用服务器提供的“工具”来与Exchange进行交互。

示例 (AI助手发送邮件): AI助手可能会根据用户请求,生成类似以下调用 'send_email' 工具的指令:

{
  "tool_name": "send_email",
  "args": {
    "to": ["[email protected]"],
    "subject": "关于项目会议的更新",
    "body": "您好,项目会议已定于周三上午10点。请查收日历邀请。谢谢!",
    "importance": "High"
  }
}

示例 (AI助手查找联系人): AI助手可能会调用 'find_person' 工具来查找一个联系人:

{
  "tool_name": "find_person",
  "args": {
    "query": "John Doe",
    "search_scope": "all",
    "include_stats": true
  }
}

AI助手会接收到服务器返回的结果,并根据结果继续与用户交互或执行后续操作。

信息

分类

通信与社交