使用说明
M365辅助MCP服务器
一个全面的MCP(模型上下文协议)服务器,通过Microsoft Graph API和Power Automate API将Claude与Microsoft 365服务连接起来。
支持服务列表
- 展望 -电子邮件、日历、文件夹和规则
- 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身份验证(+Flow API for Power Automate)
- 电子邮件管理:列出、搜索、阅读、发送和组织电子邮件
- 日历管理:列出、创建、接受、拒绝和删除日历事件
- 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平台环境 |
flow-list |
列出环境中的流量 |
flow-run |
触发手动流程 |
flow-list-runs |
获取流量运行历史记录 |
flow-toggle |
启用/禁用流 |
快速开始
- 安装依赖项:
npm install - Azure设置:在Azure门户中注册应用程序(请参阅下面的详细步骤)
- 配置环境:复制
.env.example到.env并添加您的Azure凭据 - 配置Claude:使用服务器路径更新您的Claude Desktop配置
- 启动身份验证服务器:
npm run auth-server - 验证:使用Claude中的身份验证工具获取OAuth URL
- 开始使用:通过克劳德访问您的M365数据!
安装
先决条件
- Node.js 14.0.0或更高版本
- npm或yarn包管理器
- 用于应用注册的Azure帐户
再进行
npm install
Azure应用程序注册和配置
应用程序注册
- 打开 Azure门户
- 搜索“应用程序注册”
- 点击“新建注册”
- 名称:“M365 MCP服务器”
- 帐户类型:“任何组织目录中的帐户和个人Microsoft帐户”
- 重定向URI:Web→
http://localhost:3333/auth/callback - 点击“注册”
- 复制您的“应用程序(客户端)ID”
.env文件
应用程序权限
- 转到“管理”下的“API权限”
- 点击“添加权限”→ “Microsoft Graph”→ “委托权限”
- 添加这些权限:
offline_accessUser.ReadMail.Read,Mail.ReadWrite,Mail.SendCalendars.Read,Calendars.ReadWriteFiles.Read,Files.ReadWrite
- 点击“添加权限”
用于电力自动化 (可选):
- 需要具有Flow API作用域的其他Azure AD配置
- 有关详细信息,请参阅下面的Power Automation部分
客户端密钥
- 转到“证书和机密”→ “客户机密”
- 点击“新建客户端密码”
- 添加描述并选择过期时间
- 复制值 (不是秘密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
重要提示:
- 使用
MS_CLIENT_ID和MS_CLIENT_SECRET在.env文件 - 集
MS_TENANT_ID对于单租户应用程序,应避免/common端点错误 - 对于Claude Desktop配置,您将使用
OUTLOOK_CLIENT_ID和OUTLOOK_CLIENT_SECRET - 始终使用客户端密码 价值,从不使用秘密ID
2.克劳德桌面配置
添加到您的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"
}
}
}
}
认证
图形API(Outlook+OneDrive)
- 启动身份验证服务器:
npm run auth-server - 使用
authenticateClaude中的工具 - 访问提供的URL并登录
- 代币保存到
~/.outlook-mcp-tokens.json
电力自动化(可选)
Power Automate需要具有Flow API作用域的单独令牌。为配置其他Azure AD权限 https://service.flow.microsoft.com//.default 范围。
限制:
- 只有支持解决方案的流是可访问的
- 只能通过API运行手动触发流
- 大多数操作都需要环境ID
故障排除
常见问题
“找不到模块”
npm install
“3333端口正在使用中”
npx kill-port 3333
npm run auth-server
“无效的客户端机密”(AADST7000215)
- 使用秘密 价值,而不是秘密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
扩展服务器
- 创建新模块目录
- 在单独的文件中实现工具处理程序
- 从模块索引导出工具定义
- 导入并添加到
TOOLS数组inindex.js