Skip to main content
Glama
Zacccck

Claude-Read-Outlook-Attachments

M365 附件读取器 MCP

一个用于 Claude 的远程 MCP 服务器,可通过 Microsoft Graph API 读取 Outlook 电子邮件并深度解析电子邮件附件。

目前支持的附件处理格式包括 PDF、带 OCR 的扫描版 PDF、Word、PowerPoint、Excel、CSV、纯文本、图像、压缩包以及 Outlook .msg 文件。

状态:早期基于 Windows 的测试版本。适用于个人使用和私有工作流,但尚未成为生产级多用户服务。


为什么存在此项目

Claude 内置的 Microsoft 365 连接器可以列出电子邮件、读取邮件正文并检查日历。但它无法读取电子邮件附件中的实际内容。

这意味着当你问“我最新邮件里的 PDF 说了什么?”时,Claude 可以看到附件的元数据,但无法看到其中的文本、表格、图像或嵌套文档。

本项目填补了这一空白。


它能做什么

该服务器作为远程 HTTP MCP 端点位于 Claude 和 Microsoft 365 之间。它能够:

  1. 通过设备代码流(device code flow)进行 Microsoft 365 身份验证

  2. 通过 Microsoft Graph 列出 Outlook 电子邮件及其附件

  3. 在后端下载附件

  4. 解析文件内容并将结构化文本和图像块直接返回给 Claude

支持的格式

格式

提取内容

PDF

全文内容

扫描版 PDF

OCR 文本,以及可选的渲染页面图像

DOCX

文本和嵌入图像

DOC

文本内容

PPTX / PPTM / PPSX / POTX

幻灯片文本、备注和嵌入图像

PPT

尽力而为的旧版文本提取

XLSX / XLS / CSV

所有工作表转换为 CSV

JPG / JPEG / PNG / GIF / WEBP / BMP / TIFF

作为 MCP 图像块返回以进行视觉分析

ZIP / RAR / 7Z

递归解析压缩包内容

MSG

主题、发件人、正文和嵌入附件

TXT / MD / JSON / XML / HTML

原始文本

Outlook itemAttachment

文本内容

图像处理是一个关键区别:服务器可以将独立的图像附件作为 MCP 图像块返回,从 DOCX 和 PPTX 文件中提取嵌入图像,并在没有文本层时对扫描版 PDF 回退使用 OCR。

MCP 工具

工具

描述

health_check

检查服务器是否存活

begin_auth

启动设备代码登录流程

auth_status

检查身份验证状态

list_recent_messages

列出最近的 Outlook 电子邮件

list_email_attachments

列出特定电子邮件的附件

read_email_attachment

下载、解析并返回附件内容

这些简短的工具名称是服务器注册的底层 m365_* 工具的别名。


实际应用场景

零售 / 销售运营

“拉取最近 5 封每日仪表板邮件,读取 Excel 附件,并分析过去一周所有门店的销售趋势。”

金融 / 会计

“查找供应商发来的主题中包含‘发票’的最新邮件,读取 PDF 附件,并提取总金额、截止日期和明细项目。”

法律 / 合同审查

“打开来自 legal@partner.com 的最新邮件,读取 Word 或 PowerPoint 附件,并总结关键条款。”

高管报告

“读取最新 CFO 邮件中的每周董事会报告附件,并总结图表和关键指标。”

人力资源 / 招聘

“查找来自 recruiting@company.com 的带附件邮件,读取每份简历 PDF,并创建一个候选人对比表。”

供应链 / 采购

“读取最新的供应商报价压缩包,提取其中的电子表格,并将单价与之前的报价进行比较。”


架构

Claude Chat -> Cloudflare Tunnel -> Local Express Server -> Microsoft Graph API
                (public URL)       (localhost:8080)      (Outlook data)
                                           |
                                    Parse attachments
                              (pdf-parse, tesseract.js,
                               mammoth, xlsx, adm-zip,
                                msgreader, archive tools)

对于本地测试,Cloudflare Quick Tunnel 将本地服务器暴露给互联网。Claude 通过指向隧道 URL 的自定义连接器进行连接。


先决条件

  • 带有 PowerShell 的 Windows 10/11

  • Node.js

  • Microsoft 365 / Outlook 账户

  • 支持自定义连接器的 Claude 账户


设置

1. 创建 Microsoft Entra 应用注册

前往 Microsoft Entra 管理中心 -> 应用注册 -> 新注册。

  • 名称:m365-mcp-remote

  • 支持的账户类型:任何组织目录中的账户和个人 Microsoft 账户

然后:

  1. 从概览页面复制应用程序(客户端)ID 和目录(租户)ID

  2. 前往身份验证 -> 启用“允许公共客户端流” -> 保存

  3. 前往 API 权限 -> 添加权限 -> Microsoft Graph -> 委托权限 -> 添加 User.ReadMail.Read -> 授予管理员同意

2. 克隆并安装

git clone https://github.com/Zacccck/MCP.git
cd MCP
npm install

3. 配置环境变量

cp .env.example .env

编辑 .env 并填入你的应用程序客户端 ID:

M365_CLIENT_ID=your-application-client-id-here
M365_TENANT_ID=common

4. 启动服务器

npm start

你应该看到:

Custom M365 HTTP MCP server listening at http://127.0.0.1:8080/mcp

5. 通过 Cloudflare Tunnel 暴露

在新的 PowerShell 窗口中:

winget install --id Cloudflare.cloudflared

然后运行:

cloudflared tunnel --url http://127.0.0.1:8080

复制生成的 https://xxxxx.trycloudflare.com URL。

6. 作为自定义连接器添加到 Claude

在 Claude Chat 中:

  1. 点击输入区域附近的 + 按钮

  2. 打开连接器 -> 添加连接器 -> 自定义连接器

  3. 输入 URL:https://xxxxx.trycloudflare.com/mcp

使用 https:// 并在末尾包含 /mcp。不要使用 http://127.0.0.1:8080/mcp

7. 身份验证

在 Claude 中,输入:

Please call begin_auth

Claude 将返回一个登录 URL 和一个设备代码。打开 URL,输入代码,并完成 Microsoft 登录。然后通过以下方式验证:

Please call auth_status

8. 使用它

Show me my recent outlook emails with attachments
Summarize the contents of the attachments from the email

重要限制

  • 单用户:身份验证状态存储在内存中。一个服务器实例对应一个 Microsoft 账户。

  • 需要两个进程:node server.mjscloudflared tunnel 在使用期间必须保持运行。

  • Quick Tunnel 仅供测试:每次重启 cloudflared 时,Cloudflare URL 都会改变。

  • 需要手动设置:Azure 应用注册、.env 配置和连接器设置仍需手动完成。


故障排除

问题

解决方案

Claude 找不到 MCP 工具

检查 Node 服务器和 Cloudflare 隧道是否仍在运行。隧道 URL 可能在重启后已更改。

invalid_grant 错误

重新检查你的应用注册:支持的账户类型、已启用公共客户端流,以及已授予 User.ReadMail.Read 权限。

未显示设备代码

确保已成功调用 begin_auth。不要手动编造代码。

想要切换账户

停止 Node 服务器,使用 npm start 重启,并使用隐私浏览器窗口进行登录。


项目结构

MCP/
|-- server.mjs
|-- package.json
|-- .env.example
|-- .gitignore
|-- LICENSE
`-- README.md

路线图

  • [ ] 更简单的首次设置

  • [ ] 无需重启即可注销和切换账户

  • [ ] Windows 后台服务模式

  • [ ] 生产部署指南

  • [ ] 多用户会话架构

  • [ ] 更深入的 OCR 语言覆盖和更好的大文件摘要功能


安全说明

这是一个本地测试和原型实现。它尚未准备好用于公共部署。在公开部署之前,你需要根据 /mcp 前端进行身份验证、实现用户会话隔离、安全令牌存储、速率限制以及适当的基础设施。

-
security - not tested
A
license - permissive license
-
quality - not tested

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Zacccck/Claude-MCP-Read-Email-Attachments'

If you have feedback or need assistance with the MCP directory API, please join our Discord server