微软365 AI代理服务器

一个连接Cowork AI与Microsoft Graph API的个人MCP服务器,提供电子邮件智能处理、附件提取、文档理解等核心功能,适用于办公自动化、合规检查、销售跟进等场景。

  • by jaswanthkolisetty
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 jaswanthkolisetty/mcp-email-server

使用说明

个人MCP服务器-微软365+克劳德

将您的AI连接到Microsoft 365所提供的一切。阅读电子邮件、管理文件、查询日历、在整个组织中搜索,所有这些都可以通过Cowork中的自然对话完成。

该项目是一个个人模型上下文协议(MCP)服务器,用于桥接 Cowork的代理人工智能 随着 Microsoft Graph API。它在Azure上运行,全天候保持在线,并使您的AI能够真正访问您的Microsoft 365工作区,不仅是摘要或预览,还有它可以推理、采取行动并帮助您处理的实际数据。

当前的实现侧重于电子邮件和OneDrive。该架构旨在扩展到Microsoft Graph公开的任何内容:日历、团队、SharePoint、联系人、计划器等。


为何这很重要

大多数人将AI用作聊天助手。他们复制粘贴电子邮件,提出问题,复制答案。它确实有效,但速度慢,需要手动操作,而且人工智能从来没有完整的上下文。

这改变了这一点。

当Cowork连接到您的MCP服务器时,它可以直接实时访问您的实际数据。你别再做中间人了。人工智能会进入你的系统,找到它需要的东西,并代表你行事,而不是你把信息带给人工智能。

从助理到代理的转变是真正提高生产力的地方。


你今天能做什么

服务器目前向Cowork公开了五个工具:

电子邮件智能 让Cowork用任何过滤器组合搜索你的收件箱:发件人、日期范围、关键字,或者电子邮件是否有附件。它读取完整的电子邮件,而不仅仅是一段。

附件提取 Cowork可以将任何电子邮件的附件直接下载到你的OneDrive中,按发件人和日期自动组织。无需手动下载,无需深入文件夹。

文档理解 一旦文件进入OneDrive,Cowork就可以打开它并读取内容——PDF、Word文档、Excel电子表格、CSV、图像。它提取文本和原因,这样你就可以对自己还没有打开的文档提出问题。


真实场景——实践中的情况

场景1-每周供应商审查 采购经理每周都会收到来自不同供应商的数十张发票。他们没有打开每一张发票,下载附件,手动检查数字,而是打开Cowork并说:“提取本月收到的所有发票,下载它们,并按供应商给我一份总金额的摘要。”Cowork在一分钟内完成了这项工作。过去需要一个小时的时间是在第一杯咖啡之前完成的。

场景2-合同审计 法律团队需要审查第一季度签署的所有合同。这些合同分散在来自多个发件人的电子邮件附件中。一位律师助理告诉考克:“找到1月至3月期间我们的外部律师发送的所有带有PDF附件的电子邮件,下载它们,并标记任何提到终止条款的电子邮件。”考克搜索、下载、阅读每一份文件,并返回一份结构化报告。

场景3-销售跟进 两周来,一位销售代表一直在与潜在客户来回发送电子邮件。在一个重要的电话之前,他们会问Cowork:“总结与这个潜在客户交换的所有内容,提取他们发送的任何文件,并突出我们做出的任何承诺。”Cowork会阅读整个帖子和附件,然后在几秒钟内做一个干净的简报。

情景4-高管简报 一位幕僚长需要为执行团队提供一份周一上午的总结。他们设置了一个重复的共同工作任务:每周一早上8点,在关键领域搜索周末的所有电子邮件,提取任何附件,并生成一份结构化的简报文件。在任何人走进办公室之前,它都在OneDrive中等待。

场景5-合规性检查 合规官需要核实所有要求的报告是否按时提交。他们问Cowork:“找到上个季度我们报告团队发送的每一封包含Excel附件的电子邮件,全部下载,并确认提交日期与我们的时间表相匹配。”Cowork将电子邮件时间戳与文件内容进行交叉引用,并标记任何空白。


建筑

Your Computer                       Azure (Cloud)
─────────────                       ──────────────────────────────────
Cowork / Claude Desktop             MCP Email Server
  │                                   │
  └── mcp-remote (local proxy) ──────▶│  MCPApp (ASGI)
       HTTPS + X-API-Key              │  ├── /health
                                      │  ├── API key auth
                                      │  ├── Host header normalization
                                      │  └── /mcp (FastMCP)
                                      │       ├── search_emails
                                      │       ├── get_email_details
                                      │       ├── download_attachment_to_onedrive
                                      │       ├── list_onedrive_files
                                      │       └── read_onedrive_file
                                      │
                              ┌───────┴────────┐
                              ▼                ▼
                    Microsoft Graph API     OneDrive
                    (OAuth2 · Mail.Read)    (EmailAttachments/)
                    (Files.ReadWrite.All)

运输: FastMCP·流式HTTP 平台: Azure容器应用 认证: OAuth2客户端凭据(Azure AD)+X-API-Key中间件


连接到共同工作

从以下位置安装Node.js nodejs.org,然后打开Cowork的开发人员设置并添加:

{
  "mcpServers": {
    "ms-email-server": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://mcp-email-server.thankfulmeadow-426e0542.eastus.azurecontainerapps.io/mcp",
        "--header",
        "X-API-Key:mcp-email-secret-key-2026"
      ]
    }
  }
}

重新启动Cowork。工具将自动显示。


OneDrive存储结构

所有下载的附件都经过整理,无需任何手动操作:

OneDrive/
└── EmailAttachments/
    └── sender@company.com/
        └── 2026/
            └── 03/
                └── abc123_invoice.pdf

扩展到完整的Microsoft 365 Surface

目前的工具包括电子邮件和文件。Microsoft Graph公开的内容要多得多,而此服务器旨在扩展。添加新功能意味着编写一个函数。一些自然延伸:

  • 日历 -让Cowork阅读你的日程安排,找到空闲时间,总结即将举行的会议
  • 团队 -搜索消息,提取频道中共享的文件
  • SharePoint -查询整个组织中的文档库
  • 联系人 -查找同事,用组织数据丰富电子邮件上下文
  • 计划员/任务 -自动从电子邮件对话中创建和跟踪任务

其中每一个都遵循这里已经建立的相同模式:通过Azure AD验证一次,调用Graph API,将结构化数据返回给Cowork。


部署您自己的实例

先决条件

  • 通过安装Azure CLI并进行身份验证 az login
  • Azure订阅
  • Microsoft 365帐户

1.注册Azure AD应用程序

  1. 首选 portal.azure.com 并打开 应用程序注册
  2. 创建新注册,选择单个租户,然后复制 客户端ID 和 租户ID
  3. 在...之下 证书和秘密,创建新的客户端密钥并立即复制该值
  4. 在...之下 API权限,添加 Mail.Read 和 Files.ReadWrite.All 作为应用程序权限
  5. 点击 授予管理员同意

2.激活OneDrive

登录到…… portal.office.com 打开OneDrive一次即可配置存储空间。

3.配置环境变量

复制 .env.example 到 .env 并填写您的值:

TENANT_ID=your-azure-tenant-id
CLIENT_ID=your-azure-client-id
CLIENT_SECRET=your-azure-client-secret
USER_EMAIL=your@email.com
API_KEY=choose-a-strong-random-key

4.验证访问权限

pip install -r requirements.txt
python test_auth.py

5.部署到Azure

az group create --name mcp-email-rg --location eastus
az containerapp env create --name mcp-email-env --resource-group mcp-email-rg --location eastus

az containerapp up \
  --name mcp-email-server \
  --resource-group mcp-email-rg \
  --environment mcp-email-env \
  --source . \
  --ingress external \
  --target-port 8000

az containerapp update \
  --name mcp-email-server \
  --resource-group mcp-email-rg \
  --set-env-vars \
    TENANT_ID="your-tenant-id" \
    CLIENT_ID="your-client-id" \
    CLIENT_SECRET="your-client-secret" \
    USER_EMAIL="your@email.com" \
    API_KEY="your-secret-key"

6.更新协作配置

将Cowork MCP配置中的服务器URL和API密钥替换为您自己的Azure部署URL。


代码库概述

文件 目的
main.py ASGI服务器、请求管道、所有五个MCP工具
graph_client.py Microsoft Graph API客户端,OAuth2令牌管理
onedrive_client.py OneDrive读写操作
file_reader.py 从PDF、Word、Excel、CSV、图像中提取文本
config.py 配置完全从环境变量加载
test_auth.py 验证Graph API凭据和邮箱访问
Dockerfile Azure部署的容器定义

健康检查

curl https://your-server-url.azurecontainerapps.io/health

预期响应: {"status": "ok"}