关于 Modular Outlook MCP Server
该 MCP 服务让 Claude 通过 Microsoft Graph API 访问 Outlook 数据。它面向需要在对话中处理邮件和日历的 Microsoft 365 用户,并使用 Azure 应用注册完成 OAuth 认证。
主要功能
- 01列出、搜索、阅读和发送邮件
- 02管理日历事件,包括接受与拒绝邀请
- 03管理邮件文件夹与收件箱规则
- 04提供测试模式,可返回模拟数据
适用场景
- 01让 Claude 搜索并整理 Outlook 邮件
- 02通过对话创建、接受或删除日历事件
- 03在不调用真实 API 的情况下测试集成
MCP 相关
该项目是一个 MCP 服务,向 MCP 客户端暴露 Outlook 邮件与日历相关工具,并通过 Microsoft Graph API 完成认证。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
还没有获取到工具列表
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
M365 助手 MCP 服务
一个功能全面的 MCP(Model Context Protocol)服务,通过 Microsoft Graph API 和 Power Automate API 将 Claude 与 Microsoft 365 服务连接起来。
支持的服务
- Outlook - 邮件、日历、文件夹和规则
- OneDrive - 文件、文件夹、搜索和共享
- Power Automate - 流、环境和运行历史记录
目录结构
├── index.js # Main entry point
├── config.js # Configuration settings
├── auth/ # Authentication modules
│ ├── index.js # Authentication exports
│ ├── token-manager.js # Token storage and refresh (Graph + Flow)
│ └── tools.js # Auth-related tools
├── calendar/ # Calendar functionality
│ ├── index.js # Calendar exports
│ ├── list.js # List events
│ ├── create.js # Create event
│ ├── delete.js # Delete event
│ ├── cancel.js # Cancel event
│ ├── accept.js # Accept event
│ └── decline.js # Decline event
├── email/ # Email functionality
│ ├── index.js # Email exports
│ ├── list.js # List emails
│ ├── search.js # Search emails
│ ├── read.js # Read email
│ ├── send.js # Send email
│ └── mark-as-read.js # Mark email read/unread
├── folder/ # Folder functionality
│ ├── index.js # Folder exports
│ ├── list.js # List folders
│ ├── create.js # Create folder
│ └── move.js # Move emails
├── rules/ # Email rules functionality
│ ├── index.js # Rules exports
│ ├── list.js # List rules
│ └── create.js # Create rule
├── onedrive/ # OneDrive functionality
│ ├── index.js # OneDrive exports
│ ├── list.js # List files/folders
│ ├── search.js # Search files
│ ├── download.js # Get download URL
│ ├── upload.js # Simple upload (<4MB)
│ ├── upload-large.js # Chunked upload (>4MB)
│ ├── share.js # Create sharing link
│ └── folder.js # Create/delete folders
├── power-automate/ # Power Automate functionality
│ ├── index.js # Power Automate exports
│ ├── flow-api.js # Flow API client
│ ├── list-environments.js # List environments
│ ├── list-flows.js # List flows
│ ├── run-flow.js # Trigger flow
│ ├── list-runs.js # Run history
│ └── toggle-flow.js # Enable/disable flow
└── utils/ # Utility functions
├── graph-api.js # Microsoft Graph API helper
├── odata-helpers.js # OData query building
└── mock-data.js # Test mode data
功能
- 身份验证:使用 Microsoft Graph API 进行 OAuth 2.0 身份验证(Power Automate 还需使用 Flow API)
- 邮件管理:列出、搜索、读取、发送和整理邮件
- 日历管理:列出、创建、接受、拒绝和删除日历事件
- OneDrive 集成:列出、搜索、上传、下载和共享文件
- Power Automate:列出环境/流、触发流、查看运行历史记录
- 模块化结构:清晰划分职责,便于维护
- 测试模式:使用模拟响应进行测试,无需调用真实 API
可用工具
Outlook(邮件和日历)
| 工具 | 描述 |
|---|---|
list-emails | 列出收件箱中的近期邮件 |
search-emails | 使用筛选条件搜索邮件 |
read-email | 读取邮件内容 |
send-email | 发送新邮件 |
mark-as-read | 将邮件标记为已读/未读 |
list-events | 列出日历事件 |
create-event | 创建日历事件 |
accept-event | 接受事件邀请 |
decline-event | 拒绝事件邀请 |
delete-event | 删除日历事件 |
list-folders | 列出邮件文件夹 |
create-folder | 创建邮件文件夹 |
move-emails | 在文件夹之间移动邮件 |
list-rules | 列出收件箱规则 |
create-rule | 创建收件箱规则 |
OneDrive
| 工具 | 描述 |
|---|---|
onedrive-list | 列出指定路径中的文件 |
onedrive-search | 根据查询搜索文件 |
onedrive-download | 获取下载 URL |
onedrive-upload | 上传小文件(<4MB) |
onedrive-upload-large | 分块上传(>4MB) |
onedrive-share | 创建共享链接 |
onedrive-create-folder | 创建文件夹 |
onedrive-delete | 删除文件或文件夹 |
Power Automate
| 工具 | 描述 |
|---|---|
flow-list-environments | 列出 Power Platform 环境 |
flow-list | 列出环境中的流 |
flow-run | 手动触发流 |
flow-list-runs | 获取流运行历史记录 |
flow-toggle | 启用/禁用流 |
快速开始
- 安装依赖项:
npm install - 设置 Azure:在 Azure Portal 中注册应用(详见下文步骤)
- 配置环境:将
.env.example复制为.env,并添加 Azure 凭据 - 配置 Claude:使用服务路径更新 Claude Desktop 配置
- 启动身份验证服务:
npm run auth-server - 进行身份验证:在 Claude 中使用 authenticate 工具获取 OAuth URL
- 开始使用:通过 Claude 访问 M365 数据!
安装
先决条件
- Node.js 14.0.0 或更高版本
- npm 或 yarn 包管理器
- 用于注册应用的 Azure 帐户
安装依赖项
npm install
Azure 应用注册与配置
应用注册
- 打开 Azure Portal
- 搜索“App registrations”
- 点击“New registration”
- 名称:“M365 MCP Server”
- 帐户类型:“Accounts in any organizational directory and personal Microsoft accounts”
- 重定向 URI:Web →
http://localhost:3333/auth/callback - 点击“Register”
- 复制“Application (client) ID”,以便添加到
.env文件中
应用权限
- 在“管理”下进入“API 权限”
- 点击“添加权限” →“Microsoft Graph”→“委托权限”
- 添加以下权限:
offline_accessUser.ReadMail.Read、Mail.ReadWrite、Mail.SendCalendars.Read、Calendars.ReadWriteFiles.Read、Files.ReadWrite
- 点击“添加权限”
对于 Power Automate(可选):
- 需要进行额外的 Azure AD 配置,并添加 Flow API 范围
- 详情请参阅下方的 Power Automate 部分
客户端密钥
- 进入“证书和机密”→“客户端机密”
- 点击“新建客户端机密”
- 添加描述并选择过期时间
- 复制值(而不是机密 ID)
配置
1. 环境变量
cp .env.example .env
编辑 .env:
# Get these values from Azure Portal > App Registrations > Your App
MS_CLIENT_ID=your-application-client-id-here
MS_CLIENT_SECRET=your-client-secret-VALUE-here
MS_TENANT_ID=your-tenant-id-here
USE_TEST_MODE=false
重要说明:
- 在
.env文件中使用MS_CLIENT_ID和MS_CLIENT_SECRET - 对于单租户应用,设置
MS_TENANT_ID以避免/common端点错误 - 对于 Claude Desktop 配置,请使用
OUTLOOK_CLIENT_ID和OUTLOOK_CLIENT_SECRET - 始终使用客户端机密的值,绝不要使用机密 ID
2. Claude Desktop 配置
将以下内容添加到 Claude Desktop 配置中:
{
"mcpServers": {
"m365-assistant": {
"command": "node",
"args": ["/path/to/outlook-mcp/index.js"],
"env": {
"USE_TEST_MODE": "false",
"OUTLOOK_CLIENT_ID": "your-client-id",
"OUTLOOK_CLIENT_SECRET": "your-client-secret"
}
}
}
}
身份验证
Graph API(Outlook + OneDrive)
- 启动身份验证服务器:
npm run auth-server - 在 Claude 中使用
authenticate工具 - 访问提供的 URL 并登录
- 令牌已保存到
~/.outlook-mcp-tokens.json
Power Automate(可选)
Power Automate 需要一个带有 Flow API 范围的独立令牌。为 https://service.flow.microsoft.com//.default 范围配置额外的 Azure AD 权限。
限制:
- 只能访问支持解决方案的流
- 只能通过 API 运行手动触发的流
- 大多数操作都需要环境 ID
故障排除
常见问题
“找不到模块”
npm install
“端口 3333 已被占用”
npx kill-port 3333
npm run auth-server
“客户端机密无效”(AADSTS7000215)
- 使用机密的值,而不是机密 ID
“需要身份验证”
- 删除
~/.outlook-mcp-tokens.json并重新进行身份验证
测试
# Run with MCP Inspector
npm run inspect
# Run in test mode (mock data)
npm run test-mode
# Run Jest tests
npm test
扩展服务
- 创建新的模块目录
- 在单独的文件中实现工具处理程序
- 从模块索引导出工具定义
- 在
index.js中导入并添加到TOOLS数组
评论
支持 Markdown
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。
