邮件管理服务器

一个基于Microsoft Graph API和OAuth 2.0认证的Outlook邮件管理服务器,提供邮件的读取、发送、搜索和管理功能。

  • by oabdelrahman98
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 oabdelrahman98/outlook-mcp-server

使用说明

Outlook MCP服务器

用于Microsoft Outlook的模型上下文协议(MCP)服务器,通过带有OAuth 2.0身份验证的Microsoft Graph API提供电子邮件管理。

特性

  • 列出、阅读、发送和搜索电子邮件
  • 创建和管理草稿
  • 回复邮件并在文件夹之间移动
  • 将邮件标记为已读/未读
  • OAuth 2.0身份验证,实现安全的多用户访问

先决条件

  • Node.js 22+
  • Azure订阅
  • Azure命令行界面

快速部署指南

1.注册Azure AD应用程序

# Create app registration
az ad app create --display-name "Outlook MCP Server" --sign-in-audience AzureADMyOrg

# Get the App ID
APP_ID=$(az ad app list --display-name "Outlook MCP Server" --query "[0].appId" -o tsv)

# Add Microsoft Graph permissions
az ad app permission add --id $APP_ID --api 00000003-0000-0000-c000-000000000000 \
  --api-permissions e383f46e-2787-4529-855e-0e479a3ffac0=Scope # Mail.Send

az ad app permission add --id $APP_ID --api 00000003-0000-0000-c000-000000000000 \
  --api-permissions 024d486e-b451-40bb-833d-3e66d98c5c73=Scope # Mail.ReadWrite

# Grant admin consent
az ad app permission admin-consent --id $APP_ID

# Create client secret (save the output!)
az ad app credential reset --id $APP_ID --append

2.部署到Azure容器应用程序

# Set variables (customize these)
RESOURCE_GROUP="rg-outlook-mcp"
LOCATION="eastus"
ACR_NAME="youracrname"  # Must be globally unique
APP_NAME="ca-outlook-mcp"

# Create resources
az group create --name $RESOURCE_GROUP --location $LOCATION

az acr create --resource-group $RESOURCE_GROUP --name $ACR_NAME --sku Basic

az containerapp env create --name cae-outlook-mcp \
  --resource-group $RESOURCE_GROUP --location $LOCATION

# Build and deploy
az acr build --registry $ACR_NAME --image outlook-mcp:latest .

az containerapp create \
  --name $APP_NAME \
  --resource-group $RESOURCE_GROUP \
  --environment cae-outlook-mcp \
  --image $ACR_NAME.azurecr.io/outlook-mcp:latest \
  --registry-server $ACR_NAME.azurecr.io \
  --registry-identity system \
  --target-port 80 \
  --ingress external \
  --cpu 0.5 --memory 1.0Gi \
  --env-vars PORT=80

# Get your server URL
az containerapp show --name $APP_NAME --resource-group $RESOURCE_GROUP \
  --query "properties.configuration.ingress.fqdn" -o tsv

3.在openapi.yaml中配置OAuth

更新 openapi.yaml 使用您的部署详细信息:

servers:
  - url: https://YOUR-CONTAINER-APP-URL  # From step 2

securitySchemes:
  oauth2:
    flows:
      authorizationCode:
        authorizationUrl: https://login.microsoftonline.com/YOUR-TENANT-ID/oauth2/v2.0/authorize
        tokenUrl: https://login.microsoftonline.com/YOUR-TENANT-ID/oauth2/v2.0/token
        scopes:
          Mail.ReadWrite: "Read and write mail"
          Mail.Send: "Send mail"

获取您的租户ID:

az account show --query tenantId -o tsv

4.创建Power Platform自定义连接器

  1. 首选 Power Platform
  2. 导航至 自定义连接器 → +新的自定义连接器 → 导入OpenAPI文件
  3. 上传 openapi.yaml
  4. 在 安全 选项卡:
    • 身份验证类型:OAuth 2.0
    • 客户端ID:步骤1中的应用程序ID
    • 客户秘密:第一步中的秘密
  5. 点击 更新连接器

5.在Copilot Studio中使用

  1. 在Copilot Studio中创建或打开复制副本
  2. 首选 行动 → 添加操作 → 连接器
  3. 选择您的“Outlook MCP服务器”连接器
  4. 测试:“显示我最近的电子邮件”或“发送电子邮件至user@example.com"

可用工具

  • list_消息 -列出文件夹(收件箱、SentItems等)中的邮件
  • get_message -按ID获取邮件详细信息
  • send_mail -发送新电子邮件
  • 搜索消息 -按关键字搜索邮件
  • 回复_回复_消息 -回复消息
  • list_folders -列出所有邮件文件夹
  • create_draft -创建消息草稿
  • 删除消息 -删除消息
  • move_message -将邮件移动到文件夹
  • mark_as_read -将邮件标记为已读/未读

本地开发

# Install dependencies
npm install

# Build
npm run build

# Run locally (requires GRAPH_ACCESS_TOKEN env variable)
npm start

许可证

麻省理工学院