与 Claude Code CLI 完整集成 Microsoft Graph API,提供 45 个强大的 Office 365 工具
无缝集成您的 Office 365 账户到 Claude Code CLI,实现智能电子邮件管理、日历操作、文件处理等功能。基于官方 Model Context Protocol (MCP) SDK 构建。
总计:45 个生产就绪工具
git clone https://github.com/eesb99/office365-mcp-server.git
cd office365-mcp-server
npm install
所需包:
@modelcontextprotocol/sdk - 官方 MCP SDK@azure/msal-node - Microsoft 认证库@microsoft/microsoft-graph-client - Microsoft Graph API 客户端zod - 模式验证复制示例配置:
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!
Office 365 MCP Server(或您喜欢的名称)仅限此组织目录中的账户注册后,请注意以下值:
AZURE_CLIENT_IDAZURE_AUTHORITY URL 中使用MCP Server Secret90 天(推荐,或选择您喜欢的时间)AZURE_CLIENT_SECRET在您的应用注册中,转到 API 权限
点击 + 添加权限 → Microsoft Graph → 应用程序权限
添加这些权限:
必需权限(最少 - 4 个工具):
User.Read.AllMail.ReadCalendars.ReadFiles.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 - 任务管理点击 添加权限
⚠️ 关键步骤:添加权限后:
注意:应用权限需要管理员同意。如果您没有足够的权限,请联系您的 Microsoft 365 管理员。
详细说明请参阅 AZURE_PERMISSIONS_SETUP.md。
将此 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 凭据列出 office 365 工具
故障排除:如果工具未出现,请检查:
office365-sdk.js 的路径是否绝对且正确~/.claude.json 中设置node --versionnpm install一旦在 Claude Code CLI 中配置好,您可以使用自然语言与 Office 365 进行交互:
电子邮件:
"显示我最近的 10 封邮件"
"搜索来自 jeff@example.com 关于 Q4 预算的邮件"
"给 team@company.com 发送主题为 '会议纪要' 的邮件"
"查看我的已发送邮件文件夹中的邮件"
日历:
"本周的日历有什么安排?"
"明天下午 2 点创建一个持续 1 小时的会议"
"显示未来 30 天的所有事件"
文件:
"列出 OneDrive 根文件夹中的文件"
"搜索包含 '提案' 的文件"
"显示本月修改过的 PDF 文件"
联系人:
"列出所有联系人"
"查找 John Smith 的联系信息"
Teams:
"列出我的所有 Teams"
"显示市场营销团队的频道"
"获取一般频道的最新消息"
任务:
"显示我的任务列表"
"哪些任务尚未完成?"
"在我的待办事项列表中创建一个任务"
| 工具 | 描述 |
|---|---|
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 | 创建新的文件夹 |
| 工具 | 描述 |
|---|---|
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 | 接受会议邀请 |
| 工具 | 描述 |
|---|---|
list_drive_items | 列出文件夹中的文件 |
get_file_by_id | 获取文件详细信息 |
search_drive | 搜索文件 |
download_file | 下载文件内容 |
upload_file | 上传新文件 |
create_folder | 创建新的文件夹 |
delete_file | 删除文件或文件夹 |
move_file | 将文件移动到文件夹 |
| 工具 | 描述 |
|---|---|
list_contacts | 列出所有联系人 |
get_contact_by_id | 获取特定联系人 |
create_contact | 创建新的联系人 |
search_contacts | 搜索联系人 |
| 工具 | 描述 |
|---|---|
list_teams | 列出所有团队 |
list_channels | 列出团队中的频道 |
get_channel_messages | 获取频道消息 |
send_channel_message | 向频道发送消息 |
list_chats | 列出最近的聊天 |
| 工具 | 描述 |
|---|---|
list_todo_lists | 列出所有任务列表 |
get_list_tasks | 获取列表中的任务 |
create_task | 创建新的任务 |
update_task | 更新现有任务 |
完整的工具文档,请参阅 OFFICE365_TOOLS.md
只需在设置后使用自然语言命令即可。
独立测试服务器:
# 测试基本认证
node tests/simple-test.js
# 测试 MCP 服务器协议
node tests/simple-mcp-server.js
注意:独立测试需要 .env 文件中的凭据。
✅ 环境变量:所有凭据存储在环境变量中
✅ 无硬编码密钥:源代码中无凭据
✅ Git 保护:.gitignore 防止凭据提交
✅ 验证:启动验证确保所有必需变量已设置
✅ 管理员同意:应用权限需要管理员批准
⚠️ 切勿提交 .env 文件或将凭据暴露在代码中!
检查:
~/.claude.json 中的路径是否绝对(非相对)~/.claude.json 的 env 部分设置node office365-sdk.js - 应该无错误启动401 未经授权:
AZURE_CLIENT_SECRET 是否正确(使用值,而非密钥 ID)AZURE_CLIENT_ID 和 AZURE_AUTHORITY 正确403 禁止:
错误:“操作不足的权限”
解决方案:
服务器无法启动:
node --version(需 18+)rm -rf node_modules && npm install~/.claude.json 中是否有拼写错误(验证 JSON 语法)更多故障排除,请参阅 AZURE_PERMISSIONS_SETUP.md
欢迎贡献!这是一个开源项目。
git checkout -b feature/amazing-featuregit commit -m '添加精彩功能'git push origin feature/amazing-feature发现 Bug 或有建议?打开一个问题
包括:
本项目采用 MIT 许可证 - 详情请参阅 LICENSE 文件。
MIT 许可证
版权所有 (c) 2025 eesb99
在此授权任何人免费获得此软件及其相关文档文件(以下简称“软件”),在不受限制的情况下使用、复制、修改、合并、发布、分发、再