Microsoft 365 集成服务

一个通过Microsoft Graph API和Power Automate API连接Claude与Microsoft 365服务的综合MCP服务器,支持Outlook、OneDrive和Power Automate的管理与操作。

  • by ryaker
  • JavaScript
  • 本地部署
  • 449 星标
  • 更新于
在 GitHub 查看 ryaker/outlook-mcp

使用说明

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 启用/禁用流

快速开始

  1. 安装依赖项: npm install
  2. Azure设置:在Azure门户中注册应用程序(请参阅下面的详细步骤)
  3. 配置环境:复制 .env.example 到 .env 并添加您的Azure凭据
  4. 配置Claude:使用服务器路径更新您的Claude Desktop配置
  5. 启动身份验证服务器: npm run auth-server
  6. 验证:使用Claude中的身份验证工具获取OAuth URL
  7. 开始使用:通过克劳德访问您的M365数据!

安装

先决条件

  • Node.js 14.0.0或更高版本
  • npm或yarn包管理器
  • 用于应用注册的Azure帐户

再进行

npm install

Azure应用程序注册和配置

应用程序注册

  1. 打开 Azure门户
  2. 搜索“应用程序注册”
  3. 点击“新建注册”
  4. 名称:“M365 MCP服务器”
  5. 帐户类型:“任何组织目录中的帐户和个人Microsoft帐户”
  6. 重定向URI:Web→ http://localhost:3333/auth/callback
  7. 点击“注册”
  8. 复制您的“应用程序(客户端)ID” .env 文件

应用程序权限

  1. 转到“管理”下的“API权限”
  2. 点击“添加权限”→ “Microsoft Graph”→ “委托权限”
  3. 添加这些权限:
    • offline_access
    • User.Read
    • Mail.Read, Mail.ReadWrite, Mail.Send
    • Calendars.Read, Calendars.ReadWrite
    • Files.Read, Files.ReadWrite
  4. 点击“添加权限”

用于电力自动化 (可选):

  • 需要具有Flow API作用域的其他Azure AD配置
  • 有关详细信息,请参阅下面的Power Automation部分

客户端密钥

  1. 转到“证书和机密”→ “客户机密”
  2. 点击“新建客户端密码”
  3. 添加描述并选择过期时间
  4. 复制值 (不是秘密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)

  1. 启动身份验证服务器: npm run auth-server
  2. 使用 authenticate Claude中的工具
  3. 访问提供的URL并登录
  4. 代币保存到 ~/.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

扩展服务器

  1. 创建新模块目录
  2. 在单独的文件中实现工具处理程序
  3. 从模块索引导出工具定义
  4. 导入并添加到 TOOLS 数组in index.js