微软365 MCP服务器
一个MCP服务器,允许Claude Desktop和Claude Code通过Microsoft Graph API访问您的Microsoft 365电子邮件(Outlook)和日历。
快速入门概述
设置此MCP服务器需要两个主要步骤:
- Azure AD安装程序 (5-10分钟,一次性):在Azure中创建应用程序注册以获取凭据
- 本地安装 (5分钟):安装服务器并配置Claude Desktop或Claude Code
下面详细介绍了这两种方法,并附有分步说明。
包含的工具
| 工具 | 说明 |
|---|---|
ms365_list_emails | 列出来自任何文件夹(收件箱、已发送等)的电子邮件 |
ms365_read_email | 按ID阅读完整的电子邮件内容 |
ms365_search_emails | 按关键字搜索电子邮件 |
ms365_send_email | 发送电子邮件 |
ms365_create_draft | 创建电子邮件草稿而不发送 |
ms365_reply_email | 回复电子邮件 |
ms365_list_mail_folders | 列出所有具有计数的邮件文件夹 |
ms365_list_events | 列出日期范围内的日历事件 |
ms365_get_event | 获取完整的活动详细信息 |
ms365_list_calendars | 列出所有日历 |
ms365_find_free_time | 查看人们的忙/闲 |
ms365_get_profile | 获取您的Microsoft 365个人资料 |
______________________________________________________________________
Azure AD安装程序(首先需要)
在使用此MCP服务器之前,您需要创建Azure AD应用程序注册以获取您的 MS_CLIENT_ID 和 MS_TENANT_ID这只需要做一次。
步骤1:创建应用程序注册
- 转到Azure门户
- 引导到 portal.azure.com - 使用您的Microsoft 365帐户登录
- 访问应用程序注册
- 在顶部搜索栏中,键入“应用程序注册” - 点击 应用程序注册 从搜索结果中
- 创建新注册
- 点击 “+新注册” 顶部的按钮 - 填写登记表: - 名字: MS365 MCP Server (或您喜欢的任何名称) - 支持的帐户类型:选择 “仅此组织目录中的帐户(单个租户)” - 重定向URI: - 选择 “移动和桌面应用程序” 从下拉列表中 - 输入: http://localhost - 点击 “注册” 按钮
- 复制您的凭据
- 您将被带到应用程序的概述页面 - 复制并保存这两个值(稍后您将需要它们): - 应用程序(客户端)ID → 这是你的 MS_CLIENT_ID - 目录(租户)ID → 这是你的 MS_TENANT_ID - 请将这些值放在手边——您将在下面的设置步骤中使用它们
第2步:设置API权限
- 导航到API权限
- 在左侧边栏中,单击 “API权限”
- 添加Microsoft图形权限
- 点击 “+添加权限” - 选择 “Microsoft Graph” - 选择 “委托权限”
- 添加所需权限
- 搜索并添加以下每个权限: - ✅ 邮件。阅读 -阅读您的电子邮件 - ✅ 邮件。读写 -创建和管理电子邮件草稿 - ✅ 邮件。发送 -从您的帐户发送电子邮件 - ✅ 日历。阅读 -阅读您的日历 - ✅ 用户。阅读 -读取基本配置文件信息 - 点击 “添加权限” 完成后
- 授予管理员同意
- 返回API权限页,查找 “授予\[您的组织\]管理员同意” 按钮 - 如果你是管理员:单击按钮并确认 - 如果你不是管理员:请您的IT管理员同意 - 您应该在“状态”列下看到所有权限的绿色复选标记
步骤3:验证您的设置
当您具备以下条件时,您的Azure配置即告完成:
- ✅ 已复制应用程序(客户端)ID
- ✅ 目录(租户)ID已复制
- ✅ 已添加和授予的所有五个权限(绿色复选标记)
现在,您已准备好继续进行本地安装!
______________________________________________________________________
本地安装
先决条件
- Python 3.10+
- 已安装克劳德桌面或克劳德代码CLI
- MS_CLIENT_ID 和 MS_tennal_ID 从上面的Azure设置
步骤1:克隆或下载项目
复制 ms365-mcp-server 将文件夹移动到计算机上的永久位置:
# Example: put it in your home directory
cp -r ms365-mcp-server ~/ms365-mcp-server
cd ~/ms365-mcp-server步骤2:创建虚拟环境并安装依赖项
cd ~/ms365-mcp-server
python3 -m venv .venv
source .venv/bin/activate # macOS/Linux
# .venv\Scripts\activate # Windows
pip install -r requirements.txt步骤3:首次身份验证
手动运行服务器一次以完成交互式Microsoft登录:
cd ~/ms365-mcp-server
source .venv/bin/activate
export MS_CLIENT_ID="your-client-id-here"
export MS_TENANT_ID="your-tenant-id-here"
python server.py这将打开您的浏览器进行Microsoft登录。登录并授予权限。 一旦完成,a token_cache.json 文件已创建——该文件存储您的刷新令牌,因此您不需要再次登录(令牌自动续订约90天)。
按 Ctrl+C 登录成功后停止服务器。
步骤4:配置Claude桌面
打开Claude Desktop的配置文件:
重要:使用 MS_CLIENT_ID 和 MS_TENANT_ID 您是从上面的Azure设置中复制的。
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - 视窗:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
添加MCP服务器配置。将路径和凭据替换为您自己的:
{
"mcpServers": {
"ms365": {
"command": "/Users/YOURUSER/ms365-mcp-server/.venv/bin/python",
"args": [
"/Users/YOURUSER/ms365-mcp-server/server.py"
],
"env": {
"MS_CLIENT_ID": "your-client-id-here",
"MS_TENANT_ID": "your-tenant-id-here"
}
}
}
}重要提示: 在虚拟环境中使用Python二进制文件的完整路径,而不仅仅是 python3.找到你的Python路径:
# macOS/Linux
source ~/ms365-mcp-server/.venv/bin/activate
which python
# Outputs something like: /Users/youruser/ms365-mcp-server/.venv/bin/python
# Windows
# Usually: C:\Users\YOURUSER\ms365-mcp-server\.venv\Scripts\python.exe步骤5:重新启动克劳德桌面
完全退出Claude Desktop并重新打开它。您应该看到🔌 图标或开始对话时可用的MCP工具。
______________________________________________________________________
Claude代码(CLI)的设置
如果您使用的是Claude Code(命令行工具),请按照以下步骤操作:
先决条件
- Python 3.10+
- 已安装Claude Code CLI
- Azure AD应用程序注册(MS_CLIENT_ID和MS_TENANT_ID)
步骤1-3:与克劳德桌面相同
按照上述Claude Desktop设置中的步骤1-3进行操作(克隆、创建venv、首次身份验证)。
步骤4:配置克劳德代码MCP设置
打开或创建Claude Code MCP配置文件:
重要:使用 MS_CLIENT_ID 和 MS_TENANT_ID 您是从上面的Azure设置中复制的。
- macOS/Linux:
~/.claude/mcp_settings.json - 视窗:
%USERPROFILE%\.claude\mcp_settings.json
添加MCP服务器配置:
{
"mcpServers": {
"ms365": {
"command": "/Users/YOURUSER/ms365_mcp_server/.venv/bin/python",
"args": [
"/Users/YOURUSER/ms365_mcp_server/server.py"
],
"env": {
"MS_CLIENT_ID": "your-client-id-here",
"MS_TENANT_ID": "your-tenant-id-here"
}
}
}
}重要提示: 在虚拟环境中使用Python二进制文件的完整路径。
步骤5:测试连接
启动Claude Code并验证MCP服务器是否已加载:
claude-codems365工具应该在您的会话中可用。
______________________________________________________________________
使用示例
配置后,只需与Claude Desktop自然聊天:
- “阅读我最新的电子邮件”
- “在我的电子邮件中搜索马里奥关于密尔沃基工具的消息”
- “这周我的日程表上有什么?”
- “找我和你之间的空闲时间mario@qualitara.com明天”
- “发送电子邮件至john@example.com主题为“会议记录”。.."
- “回复最后一封电子邮件,说我下午3点会到”
______________________________________________________________________
故障排除
“身份验证已过期”错误
删除 token_cache.json 并运行 python server.py 再次进行重新认证。
工具未显示在Claude Desktop中
- 检查配置文件路径是否正确
- 确保Python路径指向venv的Python(不是系统Python)
- 完全重新启动Claude Desktop(退出,而不仅仅是关闭窗口)
- 检查Claude Desktop日志是否有错误
Microsoft Graph的权限错误
返回到Azure AD应用程序注册→ API权限并确保 Mail.Read, Mail.ReadWrite, Mail.Send, Calendars.Read,以及 User.Read 均经管理员同意。
令牌缓存位置
这 token_cache.json 与保存在同一目录中 server.py。请确保该进程具有对该文件夹的写入权限。
______________________________________________________________________
文件结构
ms365-mcp-server/
├── server.py # Main MCP server with all tools
├── auth.py # MSAL authentication (token acquire + cache)
├── graph_client.py # Microsoft Graph API client
├── requirements.txt # Python dependencies
├── token_cache.json # Auto-generated after first login (DO NOT COMMIT)
└── README.md # This file______________________________________________________________________
安全说明
- 不需要客户机密。 这使用了SOAP
PublicClientApplication使用交互式身份验证——微软推荐的桌面/CLI应用程序方法。 token_cache.json包含您的刷新令牌。把它当作密码。不要将其提交给版本控制。- 刷新令牌每次使用会自动更新约90天。
