返回市场
Office-365-MCP服务器

Office-365-MCP服务器

作者:hvkshetry7 星标更新:2025-09-15

项目介绍

Office MCP Server

这是一个全面实现的Office MCP(模型上下文协议)服务器,通过Microsoft Graph API连接Claude与Microsoft 365服务。

🚀 无头操作! 初始设置后无需浏览器认证即可运行。支持自动令牌刷新及Windows任务计划程序,实现后台隐形操作。请参阅TASK_SCHEDULER_SETUP.md获取Windows设置指南。

功能

  • 完整的Microsoft 365集成:电子邮件、日历、Teams、OneDrive/SharePoint、联系人和计划器
  • 无头操作:初始认证后无需浏览器即可运行
  • 自动令牌管理:持久化存储令牌并自动刷新
  • 电子邮件附件处理:下载嵌入式附件,并将SharePoint URL映射到本地路径
  • 高级电子邮件搜索:统一搜索支持KQL并自动优化查询
  • Teams会议管理:访问会议记录、录音和AI洞察
  • 文件管理:完整的OneDrive和SharePoint文件操作
  • 联系人管理:Outlook联系人的完整CRUD操作及高级搜索
  • 任务管理:完整的Microsoft Planner集成
  • 可配置路径:用于所有本地同步路径的环境变量

快速开始

先决条件

  • Node.js 16或更高版本
  • Microsoft 365账户(个人或工作/学校)
  • Azure应用注册(见下文)

安装

  1. 克隆仓库:
git clone https://github.com/yourusername/office-mcp.git
cd office-mcp
  1. 安装依赖:
npm install
  1. 复制环境模板:
cp .env.example .env
  1. 配置你的.env文件:

    • Azure应用凭证(见Azure设置部分)
    • SharePoint/OneDrive同步的本地文件路径
    • 可选设置
  2. 运行初始认证:

npm run auth-server
# 访问 http://localhost:3000/auth 并登录
  1. 配置Claude Desktop(见Claude Desktop配置部分)

核心能力

电子邮件操作

  • 统一搜索:单一的email_search工具并自动优化
  • 附件处理:下载嵌入式附件,将SharePoint URL映射到本地路径
  • 高级功能:类别、规则、专注收件箱、文件夹管理
  • 批量操作:高效移动多封邮件

日历管理

  • 完整的CRUD操作:创建、读取、更新、删除事件
  • Teams集成:创建带有Teams链接的会议
  • 复杂重复模式:支持复杂的重复事件模式
  • UTC时间处理:正确的时区管理

Teams功能

  • 会议管理:创建、更新、取消会议
  • 会议记录访问:检索会议记录
  • 会议录音访问:访问会议录音
  • 频道操作:消息、成员、标签
  • 聊天管理:创建、发送、管理聊天消息

文件管理

  • SharePoint集成:本地同步路径映射
  • OneDrive支持:完整的文件操作
  • 批量操作:上传/下载多个文件
  • 搜索:内容和元数据搜索

联系人管理

  • 完整的CRUD操作:创建、读取、更新、删除联系人
  • 高级搜索:按姓名、电子邮件、公司或任何联系人字段搜索
  • 完整的联系人字段:支持电子邮件、电话、地址、生日、笔记
  • 文件夹管理:在文件夹中组织联系人
  • 批量操作:高效处理多个联系人

任务管理(计划器)

  • 计划操作:创建和管理计划
  • 任务分配:用户查找和分配
  • 桶组织:高效分组任务
  • 批量操作:更新/删除多个任务

Azure应用注册与配置

要使用此MCP服务器,您需要首先在Azure门户中注册并配置一个应用。以下步骤将引导您完成注册新应用、配置其权限以及生成客户端密钥的过程。

应用注册

  1. 在浏览器中打开Azure门户
  2. 使用Microsoft工作或个人账户登录
  3. 搜索或点击“应用注册”
  4. 点击“新建注册”
  5. 输入应用名称,例如“Office MCP Server”
  6. 选择“任何组织目录中的帐户和个人Microsoft帐户”选项
  7. 在“重定向URI”部分,从下拉菜单中选择“Web”,并在文本框中输入“http://localhost:3000/auth/callback”
  8. 点击“注册”
  9. 从应用设置页面的概览部分,复制“应用程序(客户端)ID”,并将其作为OFFICE_CLIENT_ID输入到.env文件以及claude-config-sample.json文件中

应用权限

  1. 在Azure门户的应用设置页面中,选择“管理”下的“API权限”选项
  2. 点击“添加权限”
  3. 点击“Microsoft Graph”
  4. 选择“委派权限”
  5. 搜索并选择以下每个权限旁边的复选框:
    • offline_access
    • User.Read
    • User.ReadWrite
    • User.ReadBasic.All
    • Mail.Read
    • Mail.ReadWrite
    • Mail.Send
    • Calendars.Read
    • Calendars.ReadWrite
    • Contacts.ReadWrite
    • Files.Read
    • Files.ReadWrite
    • Files.ReadWrite.All
    • Team.ReadBasic.All
    • Team.Create
    • Chat.Read
    • Chat.ReadWrite
    • ChannelMessage.Read.All
    • ChannelMessage.Send
    • OnlineMeetingTranscript.Read.All
    • OnlineMeetings.ReadWrite
    • Tasks.Read
    • Tasks.ReadWrite
    • Group.Read.All
    • Directory.Read.All
    • Presence.Read
    • Presence.ReadWrite
  6. 点击“添加权限”

客户端密钥

  1. 在Azure门户的应用设置页面中,选择“管理”下的“证书和密钥”选项
  2. 切换到“客户端密钥”标签
  3. 点击“新建客户端密钥”
  4. 输入描述,例如“客户端密钥”
  5. 选择最长可能的过期时间
  6. 点击“添加”
  7. 复制密钥值,并将其作为OFFICE_CLIENT_SECRET输入到.env文件以及claude-config-sample.json文件中

环境配置

必需变量

# Azure应用注册
OFFICE_CLIENT_ID=your-azure-app-client-id
OFFICE_CLIENT_SECRET=your-azure-app-client-secret
OFFICE_TENANT_ID=common

# 认证
OFFICE_REDIRECT_URI=http://localhost:3000/auth/callback

可选变量

# 本地文件路径(根据您的系统自定义)
SHAREPOINT_SYNC_PATH=/path/to/your/sharepoint/sync
ONEDRIVE_SYNC_PATH=/path/to/your/onedrive/sync
TEMP_ATTACHMENTS_PATH=/path/to/temp/attachments
SHAREPOINT_SYMLINK_PATH=/path/to/sharepoint/symlink

# 服务器设置
USE_TEST_MODE=false
TRANSPORT_TYPE=stdio  # 或 'http' 用于无头
HTTP_PORT=3333
HTTP_HOST=127.0.0.1

Claude Desktop配置

  1. 查找您的Claude Desktop配置文件:

    • Windows: %APPDATA%\Claude\claude_desktop_config.json
    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Linux: ~/.config/Claude/claude_desktop_config.json
  2. 添加MCP服务器配置:

{
  "mcpServers": {
    "office-mcp": {
      "command": "node",
      "args": ["/path/to/office-mcp/index.js"],
      "env": {
        "OFFICE_CLIENT_ID": "your-client-id",
       - "OFFICE_CLIENT_SECRET": "your-client-secret",
        "SHAREPOINT_SYNC_PATH": "/path/to/sharepoint",
        "ONEDRIVE_SYNC_PATH": "/path/to/onedrive"
      }
    }
  }
}
  1. 重启Claude Desktop

  2. 在Claude中,使用authenticate工具连接到Microsoft 365

测试

MCP Inspector

直接使用MCP Inspector测试服务器:

npx @modelcontextprotocol/inspector node index.js

测试模式

启用测试模式以使用模拟数据而不进行API调用:

USE_TEST_MODE=true node index.js

认证流程

  1. 启动认证服务器:
    • Windows:运行start-auth-server.batrun-office-mcp.bat
    • Unix/Linux/macOS:运行./start-auth-server.sh
  2. 认证服务器在端口3000上运行并处理OAuth回调
  3. 在Claude中,使用authenticate工具获取认证URL
  4. 在浏览器中完成认证
  5. 令牌存储在~/.office-mcp-tokens.json

无头操作

自动令牌刷新

初始认证后,服务器会自动刷新令牌而无需用户交互。

HTTP传输模式

对于无头环境,使用HTTP传输:

TRANSPORT_TYPE=http HTTP_PORT=3333 node index.js

Windows服务(可选)

对于Windows后台操作:

  1. 完成初始认证
  2. 配置为Windows任务计划程序任务
  3. 系统启动时隐秘运行

故障排除

常见问题

  1. 认证错误

    • 确保Azure应用具有正确的权限
    • 检查令牌文件是否存在:~/.office-mcp-tokens.json
    • 验证重定向URI与Azure配置匹配
  2. 带日期过滤器的电子邮件搜索

    • 带日期过滤器的搜索现在直接路由到$filter API以确保可靠性
    • 使用通配符*来获取指定日期范围内的所有电子邮件
    • startDateendDate都支持ISO格式(2025-08-27)或相对格式(7d/1w/1m/1y)
  3. 电子邮件附件问题

    • .env中配置本地同步路径
    • 确保临时目录具有写权限
    • 检查SharePoint同步是否处于活动状态
  4. API速率限制

    • 服务器包括自动重试和指数退避
    • 如果持续出现,请减少请求频率
  5. 权限错误

    • 验证已授予所有必需的Graph API权限
    • 某些权限可能需要管理员同意

安全考虑

  • 令牌存储:令牌加密并存储在本地
  • 环境变量:切勿提交.env文件
  • 客户端密钥:定期轮换,并在生产环境中使用Azure Key Vault
  • 本地路径:使用环境变量而不是硬编码路径
  • 审计日志:所有API调用都被记录以供安全监控

贡献

欢迎贡献!请:

  1. 分叉仓库
  2. 创建功能分支
  3. 提交合并请求

许可证

MIT许可证 - 详情见LICENSE文件