MCP Outlook服务器
用于Microsoft Outlook集成的MCP(模型上下文协议)服务器,支持多帐户。
特性
- 🔐 与Microsoft进行OAuth2身份验证
- 📅 日历管理(读、写、创建事件)
- 📧 电子邮件管理(读取、发送、文件夹)
- 🏢 多帐户支持(多个Microsoft帐户)
- 💾 自动令牌刷新
- 🔄 所有账户的并发操作
安装
# Clone the repository
git clone https://github.com/renkosteenbeek/mcp-outlook-server.git
cd mcp-outlook-server
# Install dependencies
npm install
# Build the project
npm run build配置
1.Azure应用程序注册
对于要连接的每个Microsoft帐户,您都需要一个应用程序注册。
直接链接到应用程序注册:
https://entra.microsoft.com/#view/Microsoft_AAD_RegisteredApps/ApplicationsListBlade
创建应用程序注册的步骤:
- 转到 应用程序注册页面
- 点击“新建注册”
- 配置应用程序:
- 名字: MCP Outlook Integration (或您喜欢的任何名称) - 支持的帐户类型:根据您的需求进行选择: - 对于个人Microsoft帐户:“任何组织目录中的帐户和个人Microsoft帐户” - 仅适用于工作/学校帐户:“仅适用于此组织目录中的帐户” - 对于多租户:“任何组织目录中的帐户” - 重定向URI: - 平台: Web - URI: http://localhost:3000/auth/callback - 点击“注册”
- 注册后,保存这些值:
- 应用程序(客户端)ID:在概述页面上找到 - 目录(租户)ID:在概述页面上找到(个人帐户使用“常用”)
- 创建客户端密码:
- 转到左侧菜单中的“证书和机密” - 点击“新建客户端密码” - 添加描述并选择过期时间 - 点击“添加” - 重要:立即复制机密值(不会再次显示)
- 配置API权限:
- 转到左侧菜单中的“API权限” - 点击“添加权限” - 选择“Microsoft Graph” - 选择“委派权限” - 选择这些权限: - User.Read - Mail.Read - Mail.ReadWrite - Mail.Send - Calendars.Read - Calendars.ReadWrite - 点击“添加权限” - 如果您是管理员,请单击“授予管理员同意”(可选)
- 配置身份验证设置:
- 转到左侧菜单中的“身份验证” - 在“平台配置”下,确保您有一个“Web”平台 - 验证重定向URI是否为: http://localhost:3000/auth/callback - 在“隐性拨款和混合资金流”下,不勾选这两个选项 - 点击“保存”
2.配置文件
创建一个 config.json 项目根目录中的文件:
{
"accounts": [
{
"name": "Personal",
"tenantId": "common",
"clientId": "your-client-id",
"clientSecret": "your-client-secret"
},
{
"name": "Work",
"tenantId": "your-tenant-id",
"clientId": "your-client-id",
"clientSecret": "your-client-secret"
}
],
"server": {
"port": 3000,
"redirectUri": "http://localhost:3000/auth/callback"
}
}3.克劳德桌面配置
添加到您的Claude桌面配置(claude_desktop_config.json):
{
"mcpServers": {
"outlook": {
"command": "node",
"args": ["/path/to/mcp-outlook-server/dist/index.js"],
"env": {}
}
}
}Claude中的用法
认证
Login to your accounts: outlook_auth_login日历功能
- List calendars: outlook_calendar_list
- View events: outlook_calendar_events_list
- Create event: outlook_calendar_event_create with subject, startDateTime, endDateTime电子邮件功能
- List folders: outlook_mail_folders_list
- View emails: outlook_mail_messages_list
- Send email: outlook_mail_send with to, subject, body多账户支持
- 默认情况下,所有操作都在所有配置的帐户上运行
- 使用
account针对特定帐户的参数 - 为清楚起见,回复中包括帐户名称
发展
# Run in development mode
npm run dev
# Test authentication
npm run test多账户功能
- 配置多个Microsoft帐户(个人、工作等)
- 所有账户同时执行操作
- 按帐户名筛选结果
- 每个帐户都维护自己的身份验证状态
安全
- 客户端机密安全地存储在配置文件中
- 每个帐户加密存储令牌
- 每个帐户自动刷新令牌
- OAuth2与PKCE结合,增强安全性
故障排除
- “未注册回复地址”:在Azure门户中添加重定向URI
- “客户端密码无效”:检查密码是否已过期
- “权限被拒绝”:验证Azure门户中的API权限
- 令牌已过期:服务器会自动刷新,请重试
