Outlook邮件连接服务

一个开源的MCP服务器,运行在Cloudflare Workers上,允许AI助手通过Model Context Protocol(MCP)与Microsoft 365 Outlook邮件账户交互。

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

使用说明

M365 MCP服务器

通过模型上下文协议(MCP)将AI助手连接到Microsoft 365 Outlook Mail

这是一个在Cloudflare Workers上运行的开源MCP服务器,允许像Claude这样的AI助手与您的Outlook Mail帐户进行交互。用户创建自己的Azure应用程序注册,以完全控制权限和数据访问。

特性

  • 14 Outlook邮件工具 -阅读、发送、回复、转发、起草、搜索、组织
  • 自动令牌刷新 -无缝重新身份验证,无需用户交互
  • 安全OAuth流 -用户使用Microsoft工作/学校帐户进行身份验证
  • 自托管 -部署到您自己的Cloudflare Workers帐户
  • 完全控制 -您创建自己的Azure应用程序注册
  • 有意义的会议 -由Cloudflare持久对象提供支持
  • 生产就绪 -CSRF保护、状态验证、安全Cookie

可用工具

消息检索

  • outlook_list_messages -使用筛选功能列出文件夹中的电子邮件
  • outlook_get_message -收到一封包含全文内容的电子邮件
  • outlook_search_messages -按查询字符串搜索电子邮件

发送和回复

  • outlook_send_message -发送新电子邮件
  • outlook_reply -回复电子邮件
  • outlook_reply_all -回复所有收件人
  • outlook_forward -转发电子邮件

草稿

  • outlook_create_draft -创建新草稿
  • outlook_update_draft -更新现有草稿
  • outlook_send_draft -发送草稿

消息操作

  • outlook_delete_message -删除邮件(移至垃圾箱)
  • outlook_mark_read -标记为已读/未读

文件夹

  • outlook_list_folders -列出所有邮件文件夹
  • outlook_move_message -将邮件移动到文件夹

快速开始

先决条件

  • 启用Workers的Cloudflare帐户
  • Microsoft 365工作/学校帐户(非个人帐户)
  • 已安装Node.js 18+

1.克隆和安装

git clone https://github.com/adz80/m365-mcp-server.git
cd m365-mcp-server
npm install

2.创建Azure应用程序注册

按照指南 docs/setup-azure.md 创建您的Azure应用注册。

您需要:

  • MICROSOFT_CLIENT_ID -应用程序(客户端)ID
  • MICROSOFT_CLIENT_SECRET -客户端机密值
  • MICROSOFT_TENANT_ID -目录(租户)ID

配置:

  • 帐户类型:“仅此组织目录中的帐户(单租户)”
  • 重定向URI: http://localhost:8788/callback (本地), https://your-worker.workers.dev/callback (生产), https://claude.ai/api/mcp/auth_callback 和 https://claude.com/api/mcp/auth_callback (克劳德·奥古斯特)
  • API权限: Mail.Read, Mail.ReadWrite, Mail.Send

3.设置Cloudflare

# Create KV namespace for OAuth state
npx wrangler kv namespace create "OAUTH_KV"

# Update wrangler.jsonc with the KV namespace ID

# Set secrets
npx wrangler secret put MICROSOFT_CLIENT_ID
npx wrangler secret put MICROSOFT_CLIENT_SECRET
npx wrangler secret put MICROSOFT_TENANT_ID
npx wrangler secret put COOKIE_ENCRYPTION_KEY  # Use: openssl rand -hex 32

4.部署

npm run deploy

您的MCP服务器将在 https://your-worker-name.workers.dev/mcp

5.联系克劳德·科沃克

  1. 首选 claude.ai
  2. 点击 设置 → 定制 → 连接器
  3. 点击 添加自定义连接器
  4. 输入您的MCP服务器URL: https://your-worker-name.workers.dev/mcp
  5. 使用您的Microsoft 365帐户进行身份验证

重新身份验证: 如果您的身份验证过期(在大约90天不活动后),您将收到一条清晰的错误消息,其中包含分步说明。只需断开并重新连接连接器即可重新进行身份验证,而不会丢失您的对话。

本地开发

# Start local dev server
npm run dev

# In another terminal, run MCP Inspector
npx @modelcontextprotocol/inspector@latest

# Connect to http://localhost:8788/mcp

文档

建筑

  • Cloudflare员工 -MCP服务器的无服务器运行时
  • 耐用物品 -每个MCP客户端的状态会话
  • KV命名空间 -OAuth状态存储
  • Microsoft Graph API -Outlook邮件操作
  • OAuth 2.1 -安全身份验证流程

安全特性

  • CSRF保护 -令牌和授权流验证
  • 状态约束 -Cookie将OAuth状态绑定到浏览器会话
  • 安全Cookie - __Host- 前缀、HttpOnly、安全、SameSite
  • HMAC签名 -使用密钥签名的已批准客户端列表
  • 一次性使用 -OAuth状态令牌在单次使用后过期

扩展到其他M365服务

此服务器旨在支持Outlook Mail之外的其他Microsoft 365服务。未来的工具可以使用 calendar_, onedrive_, teams_ 前缀用于维护组织。

贡献

欢迎投稿!请在GitHub上打开问题或PR。

许可证

MIT许可证-请参阅 许可证 详情

致谢

内置:

支持