返回市场
office365-mcp服务器

office365-mcp服务器

作者:eesb992 星标更新:2025-10-29

项目介绍

Office 365 MCP Server

与 Claude Code CLI 完整集成 Microsoft Graph API,提供 45 个强大的 Office 365 工具

License: MIT Node.js Version MCP Protocol Tested

无缝集成您的 Office 365 账户到 Claude Code CLI,实现智能电子邮件管理、日历操作、文件处理等功能。基于官方 Model Context Protocol (MCP) SDK 构建。


✨ 特性

  • 📧 电子邮件管理 - 16 个工具用于阅读、搜索、组织和发送电子邮件
  • 📅 日历操作 - 9 个工具用于管理事件和日程
  • 📁 OneDrive 文件 - 8 个工具用于文件和文件夹管理
  • 👥 联系人 - 4 个工具用于联系人管理
  • 💬 Microsoft Teams - 5 个工具用于团队协作
  • 任务与待办事项 - 4 个工具用于任务管理
  • 🔐 安全 - 使用环境变量配置,不硬编码凭据
  • 快速 - 基于官方 MCP SDK 实现最佳性能

总计:45 个生产就绪工具


📋 目录


🔧 需求

  • Node.js 18.0.0 或更高版本
  • Claude Code CLI 已安装并配置
  • Microsoft 365 账户 (Office 365)
  • Azure AD 应用程序 具有适当的权限
  • 管理员同意 对您的 Azure AD 租户

📦 安装

1. 克隆仓库

git clone https://github.com/eesb99/office365-mcp-server.git
cd office365-mcp-server

2. 安装依赖

npm install

所需包:

  • @modelcontextprotocol/sdk - 官方 MCP SDK
  • @azure/msal-node - Microsoft 认证库
  • @microsoft/microsoft-graph-client - Microsoft Graph API 客户端
  • zod - 模式验证

3. 配置环境变量

复制示例配置:

cp .env.example .env

编辑 .env 文件,填写您的 Azure 凭据(参见 Azure 配置 下面):

AZURE_CLIENT_ID=your-client-id-here
AZURE_AUTHORITY=https://login.microsoftonline.com/your-tenant-id-here
AZURE_CLIENT_SECRET=your-client-secret-here
OFFICE365_USER_EMAIL=your-email@yourdomain.com

⚠️ 切勿将 .env 文件提交到 Git!


☁️ Azure 配置

步骤 1:创建 Azure AD 应用注册

  1. 访问 Azure 门户
  2. 导航至 Azure Active Directory应用注册
  3. 点击 + 新建注册
  4. 配置:
    • 名称Office 365 MCP Server(或您喜欢的名称)
    • 支持的账户类型仅限此组织目录中的账户
    • 重定向 URI:留空
  5. 点击 注册

步骤 2:记录您的凭据

注册后,请注意以下值:

  • 应用程序(客户端)ID - 用于 AZURE_CLIENT_ID
  • 目录(租户)ID - 在 AZURE_AUTHORITY URL 中使用

步骤 3:创建客户端密钥

  1. 在您的应用注册中,转到 证书和密钥
  2. 点击 + 新建客户端密钥
  3. 添加描述:MCP Server Secret
  4. 设置过期时间:90 天(推荐,或选择您喜欢的时间)
  5. 点击 添加
  6. ⚠️ 重要:立即复制 (仅显示一次!)
  7. 使用此值作为 AZURE_CLIENT_SECRET

步骤 4:配置 API 权限

  1. 在您的应用注册中,转到 API 权限

  2. 点击 + 添加权限Microsoft Graph应用程序权限

  3. 添加这些权限:

    必需权限(最少 - 4 个工具):

    • User.Read.All
    • Mail.Read
    • Calendars.Read
    • Files.Read.All

    全部功能集(所有 45 个工具):

    • Mail.ReadWrite - 电子邮件管理
    • Mail.Send - 发送电子邮件
    • MailboxSettings.ReadWrite - 邮箱配置
    • Calendars.ReadWrite - 日历操作
    • Files.ReadWrite.All - 文件管理
    • Contacts.ReadWrite - 联系人管理
    • Team.ReadBasic.All - 团队访问
    • Channel.ReadBasic.All - 通道信息
    • ChannelMessage.Send - 发送通道消息
    • ChannelMessage.Read.All - 读取通道消息
    • Chat.ReadWrite - 聊天管理
    • Tasks.ReadWrite - 任务管理
  4. 点击 添加权限

步骤 5:授予管理员同意

⚠️ 关键步骤:添加权限后:

  1. 点击 ✓ 授予 [您的组织] 管理员同意
  2. 点击 确认
  3. 等待所有权限显示 ✓ 已授予权限 状态

注意:应用权限需要管理员同意。如果您没有足够的权限,请联系您的 Microsoft 365 管理员。

详细说明请参阅 AZURE_PERMISSIONS_SETUP.md


🤖 Claude Code CLI 设置

配置

将此 MCP 服务器添加到您的 Claude Code 配置:

位置~/.claude.json

{
  "mcpServers": {
    "office365": {
      "type": "stdio",
      "command": "node",
      "args": ["/绝对路径/to/office365-mcp-server/office365-sdk.js"],
      "env": {
        "AZURE_CLIENT_ID": "your-client-id-here",
        "AZURE_CLIENT_SECRET": "your-client-secret-here",
        "AZURE_AUTHORITY": "https://login.microsoftonline.com/your-tenant-id-here",
        "OFFICE365_USER_EMAIL": "your-email@yourdomain.com"
      }
    }
  }
}

重要

  • /绝对路径/to/office365-mcp-server/ 替换为实际路径
  • 使用绝对路径,而不是相对路径
  • env 部分添加您的实际 Azure 凭据

验证安装

  1. 重启 Claude Code CLI
  2. 在新对话框中输入:
    列出 office 365 工具
    
  3. 您应该看到 45 个可用工具

故障排除:如果工具未出现,请检查:

  • office365-sdk.js 的路径是否绝对且正确
  • 所有环境变量是否在 ~/.claude.json 中设置
  • Node.js 18+ 是否已安装:node --version
  • 依赖项是否已安装:npm install

🚀 使用

一旦在 Claude Code CLI 中配置好,您可以使用自然语言与 Office 365 进行交互:

示例命令

电子邮件:

"显示我最近的 10 封邮件"
"搜索来自 jeff@example.com 关于 Q4 预算的邮件"
"给 team@company.com 发送主题为 '会议纪要' 的邮件"
"查看我的已发送邮件文件夹中的邮件"

日历:

"本周的日历有什么安排?"
"明天下午 2 点创建一个持续 1 小时的会议"
"显示未来 30 天的所有事件"

文件:

"列出 OneDrive 根文件夹中的文件"
"搜索包含 '提案' 的文件"
"显示本月修改过的 PDF 文件"

联系人:

"列出所有联系人"
"查找 John Smith 的联系信息"

Teams:

"列出我的所有 Teams"
"显示市场营销团队的频道"
"获取一般频道的最新消息"

任务:

"显示我的任务列表"
"哪些任务尚未完成?"
"在我的待办事项列表中创建一个任务"

📚 可用工具

📧 电子邮件管理 (16 个工具)

工具描述
get_recent_emails获取收件箱中的最近邮件
search_emails使用查询搜索邮件
get_email_by_id获取特定邮件的详细信息
send_email发送邮件
reply_to_email回复邮件
forward_email转发邮件
list_mail_folders列出所有邮件文件夹
get_folder_emails获取特定文件夹中的邮件
search_in_folder在特定文件夹内搜索
move_email将邮件移动到文件夹
delete_email删除邮件
mark_as_read将邮件标记为已读
mark_as_unread将邮件标记为未读
get_email_attachments列出邮件附件
download_attachment下载附件
create_mail_folder创建新的文件夹

📅 日历操作 (9 个工具)

工具描述
get_calendar_events获取即将举行的日历事件
get_event_by_id获取特定事件的详细信息
create_calendar_event创建新的日历事件
update_calendar_event更新现有事件
delete_calendar_event删除事件
list_calendars列出所有日历
get_calendar_view获取指定日期范围内的事件
find_meeting_times查找可用的会议时间
accept_event接受会议邀请

📁 OneDrive 文件 (8 个工具)

工具描述
list_drive_items列出文件夹中的文件
get_file_by_id获取文件详细信息
search_drive搜索文件
download_file下载文件内容
upload_file上传新文件
create_folder创建新的文件夹
delete_file删除文件或文件夹
move_file将文件移动到文件夹

👥 联系人 (4 个工具)

工具描述
list_contacts列出所有联系人
get_contact_by_id获取特定联系人
create_contact创建新的联系人
search_contacts搜索联系人

💬 Microsoft Teams (5 个工具)

工具描述
list_teams列出所有团队
list_channels列出团队中的频道
get_channel_messages获取频道消息
send_channel_message向频道发送消息
list_chats列出最近的聊天

✅ 任务与待办事项 (4 个工具)

工具描述
list_todo_lists列出所有任务列表
get_list_tasks获取列表中的任务
create_task创建新的任务
update_task更新现有任务

完整的工具文档,请参阅 OFFICE365_TOOLS.md


🧪 测试

选项 1:使用 Claude Code CLI 测试

只需在设置后使用自然语言命令即可。

选项 2:独立测试

独立测试服务器:

# 测试基本认证
node tests/simple-test.js

# 测试 MCP 服务器协议
node tests/simple-mcp-server.js

注意:独立测试需要 .env 文件中的凭据。


🔐 安全

最佳实践

环境变量:所有凭据存储在环境变量中 ✅ 无硬编码密钥:源代码中无凭据 ✅ Git 保护.gitignore 防止凭据提交 ✅ 验证:启动验证确保所有必需变量已设置 ✅ 管理员同意:应用权限需要管理员批准

安全特性

  • 应用权限:服务到服务认证(无需用户提示)
  • 受限访问:限制到配置的用户账户
  • 审计日志:使用 Azure AD 审计日志监控访问
  • 密钥轮换:每 90 天轮换客户端密钥(推荐)

安全文档

⚠️ 切勿提交 .env 文件或将凭据暴露在代码中!


🐛 故障排除

工具未出现在 Claude Code 中

检查:

  1. ~/.claude.json 中的路径是否绝对(非相对)
  2. 所有环境变量是否在 ~/.claude.jsonenv 部分设置
  3. 配置后是否已重启 Claude Code CLI
  4. 运行 node office365-sdk.js - 应该无错误启动

认证错误

401 未经授权:

  • 验证 AZURE_CLIENT_SECRET 是否正确(使用值,而非密钥 ID)
  • 检查 Azure 门户中密钥是否已过期
  • 确保 AZURE_CLIENT_IDAZURE_AUTHORITY 正确

403 禁止:

  • 管理员同意未授予 - 检查 Azure 门户 API 权限
  • 授予同意后等待 5-10 分钟以传播
  • 验证权限显示“✓ 已授予权限”状态

缺少权限

错误:“操作不足的权限”

解决方案:

  1. 转到 Azure 门户 → 应用注册 → 您的应用
  2. API 权限 → 检查所有必需权限是否已添加
  3. 再次点击“授予管理员同意”
  4. 验证所有显示“✓ 已授予权限”状态

连接问题

服务器无法启动:

  • 检查 Node.js 版本:node --version(需 18+)
  • 重新安装依赖项:rm -rf node_modules && npm install
  • 验证所有环境变量是否已设置
  • 检查 ~/.claude.json 中是否有拼写错误(验证 JSON 语法)

更多故障排除,请参阅 AZURE_PERMISSIONS_SETUP.md


🤝 贡献

欢迎贡献!这是一个开源项目。

如何贡献

  1. 分叉仓库
  2. 创建功能分支:git checkout -b feature/amazing-feature
  3. 进行更改
  4. 通过 Claude Code CLI 彻底测试
  5. 提交更改:git commit -m '添加精彩功能'
  6. 推送到您的分叉:git push origin feature/amazing-feature
  7. 打开拉取请求

开发指南

  • 遵循现有的代码风格(JavaScript 使用 2 个空格缩进)
  • 为新功能添加测试
  • 更新新工具的文档
  • 不要在代码中硬编码凭据
  • 使用环境变量进行配置

报告问题

发现 Bug 或有建议?打开一个问题

包括:

  • Claude Code CLI 版本
  • Node.js 版本
  • 操作系统
  • 错误消息(删除任何凭据!)
  • 重现步骤

📄 许可证

本项目采用 MIT 许可证 - 详情请参阅 LICENSE 文件。

MIT 许可证

版权所有 (c) 2025 eesb99

在此授权任何人免费获得此软件及其相关文档文件(以下简称“软件”),在不受限制的情况下使用、复制、修改、合并、发布、分发、再