项目简介

OutlookMCP服务器是一个基于Model Context Protocol (MCP) 构建的应用后端,它允许兼容MCP的LLM客户端(如Claude Desktop)安全地访问和操作用户的Microsoft 365账户数据,包括邮件、日历和文件(OneDrive/SharePoint)。

主要功能点

该服务器通过一系列“工具”向LLM客户端提供能力,主要包括:

  • 邮件管理: 读取、搜索、过滤、排序收件箱邮件;获取邮件详情;移动邮件到文件夹;创建、更新、发送草稿邮件;回复现有邮件;创建、删除邮件文件夹;获取文件夹列表及结构;更新邮件属性(如标记已读/未读、设置重要性)。
  • 日历管理: 列出即将到来的日历事件;按日期范围搜索事件;创建新的日历事件(包括在线会议);删除日历事件。
  • 文件访问: 列出用户关注的SharePoint站点;获取站点内的文档库(Drives);列出驱动器或特定文件夹内的文件和子文件夹;搜索OneDrive中的文件和文件夹。
  • 用户信息: 获取用户的基本信息。
  • 实用工具: 获取当前日期和时间,列出服务器提供的所有可用工具及其描述。

通过这些功能,LLM可以帮助用户处理日常的Outlook和OneDrive/SharePoint任务。

安装步骤

  1. Python环境准备: 确保您安装了Python,并推荐使用 'uv' 或 'pip' 进行依赖管理。
  2. 获取代码: 克隆或下载项目代码到本地目录。
  3. 安装依赖: 项目依赖于Microsoft Graph SDK for Python ('msgraph')、Azure Identity库 ('azure.identity') 和 FastMCP 库 ('FastMCP')。
    • 如果使用 'uv'(推荐):在项目根目录运行 'uv venv' 创建虚拟环境,然后运行 'uv pip install -r uv.lock' 安装所有依赖。
    • 如果使用 'pip':运行 'python -m venv .venv' 创建虚拟环境,激活环境后运行 'pip install -r requirements.txt'(如果项目有 'requirements.txt' 文件,或者根据README手动安装 'azure-identity', 'mcp[cli]', 'msgraph-core', 'msgraph-sdk')。
  4. Azure应用注册: 您需要在拥有管理员权限的Azure AD租户中注册一个应用程序,并授予必要的Microsoft Graph API权限(例如 'Mail.Read', 'Mail.Send', 'Calendars.Read', 'Calendars.ReadWrite', 'Files.Read.All', 'Sites.Read.All', 'User.Read' 等)。记下您的应用程序(客户端)ID和租户(目录)ID。注意: 部分权限可能需要租户管理员同意。
  5. 配置环境变量:
    • 在项目根目录创建 '.env' 文件(如果不存在)。
    • 编辑 '.env' 文件,添加以下内容,替换为您在Azure AD中获取的实际ID和所需的Graph API权限范围(以空格分隔):
      AZURE_CLIENT_ID=<您的Azure应用(客户端)ID>
      AZURE_TENANT_ID=<您的Azure租户(目录)ID>
      AZURE_GRAPH_SCOPES=User.Read Mail.Read Mail.Send Mail.ReadWrite Calendars.Read Calendars.ReadWrite Files.Read.All Sites.Read.All
  6. 创建认证缓存目录: 在项目根目录运行 'mkdir -p auth_cache' 创建用于存储认证记录的目录。
  7. 首次运行认证: 服务器首次运行时会尝试使用设备代码流进行认证。LLM客户端(如Claude Desktop)会向您显示认证URL和代码。请在浏览器中访问该URL,输入代码完成认证。成功后,认证记录将保存在 'auth_cache' 目录下,后续运行可实现静默认证。

服务器配置

MCP客户端(如Claude Desktop)需要知道如何启动并连接到此服务器。您需要将以下配置添加到您的MCP客户端的配置文件中(例如Claude Desktop的 'claude_desktop_config.json' 文件):

这是一个示例配置片段(注意:请参考您的MCP客户端的具体配置格式和位置):

{
  "mcpServers": {
    "outlook": {
      "command": "uv", // 或您的python解释器/uv的绝对路径
      "args": [
        "run",
        "--with",
        "azure-identity,mcp[cli],msgraph-core,msgraph-sdk", // 确保包含所有必要的依赖组
        "mcp",
        "run",
        "/absolute/path/to/OutlookMCPServer" // 替换为OutlookMCPServer项目的**绝对路径**
      ]
    }
    // ... 其他MCP服务器配置
  }
}
  • '"outlook"': 这是您为该服务器定义的内部名称,LLM客户端可能会用它来引用。
  • '"command"': 启动服务器的可执行文件路径。如果 'uv'(或 'python')在系统PATH中,可以直接使用名称。否则,需要提供绝对路径。
  • '"args"': 传递给 'command' 的参数列表,用于指示如何运行 'main.py' 文件。其中包括激活虚拟环境(通过'uv run --with ...')和调用FastMCP运行服务器脚本的命令。'/absolute/path/to/OutlookMCPServer' 必须替换为您实际克隆或下载的项目根目录的绝对路径。

配置完成后,重启您的MCP客户端。

基本使用方法

一旦服务器在您的MCP客户端中成功配置并启动,LLM将能够识别并调用OutlookMCP服务器提供的工具。

您可以直接向LLM提出与您的Outlook/M365数据相关的请求,例如:

  • "请列出我收件箱中最近10封未读邮件。"
  • "帮我草拟一封邮件,收件人是[收件人邮箱],主题是[主题],内容是[邮件内容]。"
  • "帮我查看下周我的日历安排。"
  • "将ID为[邮件ID]的邮件移动到'重要'文件夹。"
  • "在我的OneDrive里搜索一个叫做'项目计划书'的文件。"

LLM会根据您的请求,自动选择并调用OutlookMCP服务器上的相应工具来完成操作。

信息

分类

生产力应用