Microsoft Graph MCP服务器

一个将Microsoft Graph转化为易于使用的MCP服务器的工具,使AI助手能够无缝处理Microsoft 365中的电子邮件、日历和联系人。

  • by marlonluo2018
  • Python
  • 本地部署
  • 11 星标
  • 更新于
在 GitHub 查看 marlonluo2018/microsoft_graph_mcp_server

使用说明

Microsoft Graph MCP服务器

一种非常简单的方法来给你的人工智能助手 微软365内部的超能力.

这个项目将Microsoft Graph变成了一个易于使用的MCP服务器,这样Claude、您的自定义代理或任何MCP客户端都可以立即与您的 电子邮件、日历和联系人.

没有Azure设置。没有图形API知识。只需安装→ 登录→ 您的AI将成为Microsoft 365高级用户。


⭐ 为什么开发者喜欢这个项目

  • 你的人工智能可以自然地阅读、搜索、回复和组织电子邮件
  • 批量电子邮件操作 --在一次通话中删除或存档多封电子邮件(不再是一封接一封!)
  • 它通过真实的可用性检查来理解和管理您的日历
  • 它使用简单的MCP工具处理触点
  • 它使用微软的设备登录安全地工作——没有秘密,没有风险
  • 它只适用于零配置的本地机器

这是 最快的方法 让你的AI代理 实际上很有用 在工作中。

如果此项目为您节省了时间:
👉 请在回购中加星——这真的很有帮助! ⭐


🚀 快速开始

1.安装

pip install -r requirements.txt

多模式支持:图像压缩需要 Pillow>=10.0.0 (包含在requirements.txt中)。如果未安装,则返回的图像将不进行压缩。

或者:

pip install uv
uvx .

2.链接到克劳德桌面

打开:

%APPDATA%/Claude/claude_desktop_config.json

选择以下配置方法之一:

方法1:使用 uv run (推荐)

{
  "mcpServers": {
    "microsoft-graph": {
      "command": "uv",
      "args": ["run", "--directory", "<path-to-your-local-repo>", "microsoft-graph-mcp-server"]
    }
  }
}

推荐:此方法直接使用您的本地代码,因此更改无需重新安装即可立即生效。

方法2:使用 uvx (本地路径)

{
  "mcpServers": {
    "microsoft-graph": {
      "command": "uvx",
      "args": ["--from", "<path-to-your-local-repo>", "microsoft-graph-mcp-server"]
    }
  }
}

备注:

  • 第一次或代码更改后,运行: uv tool install --force <path-to-your-local-repo>
  • uvx 缓存该包,因此您需要重新安装以获取代码更新

方法3:使用 python -m

{
  "mcpServers": {
    "microsoft-graph": {
      "command": "py",
      "args": ["-m", "microsoft_graph_mcp_server"]
    }
  }
}

备注:

  • 视窗:使用 py (Python启动器)自动查找您的Python安装
  • Linux/Mac:替换 py 和 python 或 python3
  • 从项目目录运行或通过安装 pip install -e .

3.登录

在Claude中,只需问:“请帮我登录Microsoft Graph”

克劳德将致电:

{
  "tool": "auth",
  "action": "start"
}

点击链接→ 输入代码→ 登录。
那就告诉克劳德:“我已完成浏览器登录”

然后克劳德将完成:

{
  "tool": "auth",
  "action": "complete"
}

你已连接。您的AI助手现在可以访问Microsoft 365。


🌟 你的AI能做什么

下面是 友好但完整 功能概述——旨在给潜在用户留下深刻印象,帮助人们一目了然地了解项目的强大功能。


🔧 配置AI助手(推荐)

将系统提示复制到您的AI助手配置中:

SYSTEM_PROMPT.md

适用于克劳德桌面,添加到您的项目或自定义说明中。这提供了:

  • 智能工作流选择(对于简单的电子邮件,AI自动选择快速模式,对于复杂的电子邮件,自动选择完整模式)
  • 电子邮件的HTML格式规则
  • 日历冲突检测意识
  • 使用MCP工具的最佳实践

对于其他AI助手,将SYSTEM_PROMPT.md内容用作系统指令。


📧 电子邮件超级大国

您的AI可以:

  • 按发件人、主题、正文或自然过滤器搜索电子邮件
  • 专注收件箱支持 -默认情况下,搜索“聚焦”电子邮件,并可选择搜索“其他”或全部
  • 打开完整的电子邮件内容,包括附件
  • 下载附件 到工作区进行LLM分析(Excel、PDF、图像等)
  • 多模态LLM的图像分析 -在线查看和分析图像附件(屏幕截图、照片、图表)
  • 使用HTML回复、转发和撰写新邮件
  • 移动、删除、存档或批量管理邮件
  • 使用快速本地缓存浏览电子邮件
  • 按时间范围筛选(“今天”、“本周”、“过去30天”)
  • 处理文件夹:创建、重命名、删除、移动

示例

{
  "tool": "search_emails",
  "query": "invoices",
  "search_type": "subject"
}

附件下载示例

{
  "tool": "get_email_content",
  "cache_number": 1,
  "download_attachments": true
}

附件保存到 workspace/attachments 并且可以由其他工具(文件读取器、图像查看器等)进行处理。

聚焦收件箱示例

{
  "tool": "search_emails",
  "query": "newsletter",
  "inference_classification": "other"
}

📅 日历智能

您的AI可以:

  • 搜索所有即将举行的活动
  • 创建或修改会议
  • 取消活动并通知与会者
  • 接受或拒绝邀请
  • 检查多个与会者的可用性
  • 创建重复事件
  • 自动处理时区

示例

{
  "tool": "manage_event_as_organizer",
  "action": "create",
  "subject": "Project Sync",
  "start": "2026-02-26T14:00",
  "end": "2026-02-26T14:30"
}

👥 联系人搜索

  • 通过姓名或电子邮件查找组织中的人员
  • 需要时回退到模糊匹配
  • 登录后立即生效
{
  "tool": "search_contacts",
  "query": "john li"
}


🧠 为什么这个项目存在

现代人工智能助手需要与你的真实工作工具——电子邮件、会议、文件——进行交互。
Microsoft Graph提供了所有这些功能,但是:

  • API很复杂
  • 身份验证令人望而生畏
  • Azure应用程序注册很痛苦
  • 开发人员想要简单,而不是官僚主义

此MCP服务器解决了所有问题:

  • 零Azure设置
  • 零图API学习曲线
  • 零复杂性

只需安装即可。


🔥 真实世界的用例和人工智能友好的工作流程

这些实际例子准确地展示了潜在用户 为什么这个项目很重要,工作流程专为人工智能使用而设计——简单、可预测、可靠。


用例:“自动报告代理”

你的人工智能可以扫描你的收件箱和日历,然后生成每周摘要报告。

  • 提取上周的电子邮件
  • 提取关键事件
  • 确定行动项目
  • 起草一封干净的每周摘要电子邮件
  • 将其发送给您的团队

工作流程

  1. 让克劳德搜索电子邮件:“查找过去7天的电子邮件”

克劳德将致电:

{
  "tool": "search_emails",
  "days": 7
}
  1. 让克劳德浏览结果:“为我分析电子邮件”

克劳德将致电:

{
  "tool": "browse_email_cache",
  "page_number": 1,
  "mode": "llm"
}

退货:电子邮件摘要,包括发件人、主题、日期和缓存号,便于参考。在 llm 模式下,克劳德每页收到更多电子邮件(默认为20封),以便进行高效分析。

  1. 让克劳德搜索事件:“查找上周的日历事件”

克劳德将致电:

{
  "tool": "search_events",
  "time_range": "last_week"
}
  1. 请克劳德发送摘要电子邮件:“向团队发送每周总结”

克劳德将致电:

{
  "tool": "send_email",
  "action": "send_new",
  "to": ["team@example.com"],
  "subject": "Weekly Summary",
  "htmlbody": "<p>Here's the update...</p>"
}

用例:批量BCC转发

您的AI可以搜索电子邮件,并使用CSV文件通过BCC将其转发给多个收件人。

工作流程

  1. 让克劳德按主题搜索电子邮件:“查找主题为‘公司公告’的电子邮件”

克劳德将致电:

{
  "tool": "search_emails",
  "query": "Company Announcement",
  "search_type": "subject"
}
  1. 让克劳德浏览电子邮件缓存:“显示主题为‘公司公告’的电子邮件”

克劳德将致电:

{
  "tool": "browse_email_cache",
  "page_number": 1,
  "mode": "llm"
}
  1. 请Claude验证电子邮件内容:“显示电子邮件号码1”

克劳德将致电:

{
  "tool": "get_email_content",
  "cache_number": 1
}
  1. 要求Claude使用CSV通过BCC批量转发:“将1号电子邮件转发给CSV文件中的所有收件人”

克劳德将致电:

{
  "tool": "send_email",
  "action": "forward",
  "cache_number": 1,
  "bcc_csv_file": "C:/path/to/recipients.csv",
  "subject": "Fwd: Company Announcement",
  "htmlbody": "<p>Please see the company announcement below.</p>"
}

备注CSV文件应包含一列,标题为“电子邮件”,其中包含所有收件人的电子邮件地址。


用例:安排会议

您的AI可以通过Teams链接检查可用性并安排会议。

工作流程

  1. 让克劳德检查与会者的可用性:“查看3月1日约翰和简的空房情况”

克劳德将致电:

{
  "tool": "check_attendee_availability",
  "attendees": ["john@example.com", "jane@example.com"],
  "date": "2026-03-01"
}
  1. 让克劳德安排一次会议:“安排3月1日下午2点与约翰和简会面30分钟”

克劳德将致电:

{
  "tool": "manage_event_as_organizer",
  "action": "create",
  "subject": "Project Discussion",
  "start": "2026-03-01T14:00",
  "end": "2026-03-01T14:30",
  "attendees": ["john@example.com", "jane@example.com"],
  "team": true
}

备注:The "team": true 参数将团队会议链接添加到事件中。


用例:清理收件箱

您的AI可以帮助您在一次操作中批量删除或存档多封电子邮件。

工作流程

  1. 让克劳德搜索电子邮件:“查找来自的电子邮件newsletter@example.com"

克劳德将致电:

{
  "tool": "search_emails",
  "query": "newsletter@example.com",
  "search_type": "sender"
}
  1. 让克劳德浏览结果:“显示这些电子邮件”

克劳德将致电:

{
  "tool": "browse_email_cache",
  "page_number": 1,
  "mode": "llm"
}
  1. 让克劳德删除多封电子邮件:“删除电子邮件1、2、3、4和5”

克劳德将致电:

{
  "tool": "manage_emails",
  "action": "delete_multiple",
  "cache_numbers": [1, 2, 3, 4, 5]
}

或者将其存档:“将电子邮件1到5存档”

克劳德将致电:

{
  "tool": "manage_emails",
  "action": "archive_multiple",
  "cache_numbers": [1, 2, 3, 4, 5]
}

备注:所有电子邮件都在一次批处理中处理-高效快捷!


用例:下载并分析附件

你的人工智能可以下载电子邮件附件,并使用其他工具进行分析。

工作流程

  1. 让克劳德搜索带有附件的电子邮件:“查找带有Excel附件的电子邮件”

克劳德将致电:

{
  "tool": "search_emails",
  "query": "xlsx",
  "search_type": "body"
}
  1. 让克劳德浏览结果:“显示这些电子邮件”

克劳德将致电:

{
  "tool": "browse_email_cache",
  "page_number": 1,
  "mode": "llm"
}

退货:电子邮件摘要,附件信息(名称、大小、内容类型)可见。

  1. 让Claude下载附件:“从电子邮件1下载Excel附件”

克劳德将致电:

{
  "tool": "get_email_content",
  "cache_number": 1,
  "download_attachments": true,
  "attachment_names": ["report.xlsx"]
}

退货:电子邮件内容及其附件已保存到 workspace/attachments/report.xlsx

  1. 使用其他工具进行分析:“读取Excel文件并对其进行总结”

Claude现在可以使用文件读取工具来处理下载的附件。

主要特点:

  • 下载前查看附件名称/类型(在browse_email_cache中)
  • 仅下载特定附件 attachment_names 参数
  • 自定义下载路径 download_path 参数
  • 内联附件(嵌入图像)会自动跳过

用例:分析图像附件(多模式)

使用多模式LLM时,您的AI可以直接查看和分析图像附件。

工作流程

  1. 让克劳德搜索包含图像的电子邮件:“查找带有图像附件的电子邮件”

克劳德将致电:

{
  "tool": "search_emails",
  "days": 7
}
  1. 让克劳德浏览结果:“显示电子邮件”

克劳德将致电:

{
  "tool": "browse_email_cache",
  "page_number": 1,
  "mode": "llm"
}

退货:显示附件类型的电子邮件摘要(例如。, contentType: image/png)

  1. 让克劳德查看带有图片的电子邮件:“显示带有图像的1号电子邮件”

克劳德将致电:

{
  "tool": "get_email_content",
  "cache_number": 1,
  "return_html": true
}

退货:返回图像的电子邮件内容为 ImageContent 以便多模态LLM直接分析。

  1. 克劳德分析图像:“屏幕截图中有什么?”

Claude将描述它在图像中看到的内容——屏幕截图、图表、照片、图表等。

配置 (in .env):

MULTIMODAL_SUPPORTED=true
IMAGE_MAX_SIZE_KB=50
IMAGE_MAX_DIMENSION=1024
IMAGE_QUALITY=75

备注:图像会自动压缩以符合LLM API限制。


用户模式电子邮件浏览

供人类浏览 (当您想逐页查看电子邮件时):

  1. 让克劳德搜索电子邮件:“查找本周的电子邮件”

克劳德将致电:

{
  "tool": "search_emails",
  "time_range": "this_week"
}
  1. 让克劳德逐页浏览:“显示电子邮件的第一页”

克劳德将致电:

{
  "tool": "browse_email_cache",
  "page_number": 1,
  "mode": "user"
}

退货:包含发件人、主题、日期和缓存号的电子邮件摘要。在 user 模式下,每页收到的电子邮件更少(默认为5封),便于人类阅读。

  1. 导航到下一页:“显示下一页”

克劳德将致电:

{
  "tool": "browse_email_cache",
  "page_number": 2,
  "mode": "user"
}
  1. 查看特定电子邮件:“显示3号电子邮件”

克劳德将致电:

{
  "tool": "get_email_content",
  "cache_number": 3
}
  1. 请克劳德回复电子邮件:“回复3号电子邮件说谢谢”

克劳德将致电:

{
  "tool": "send_email",
  "action": "reply",
  "cache_number": 3,
  "htmlbody": "<p>Thank you!</p>"
}

关键区别:使用 "mode": "user" 当你想手动逐页浏览电子邮件时,页面尺寸更小,更容易让人阅读。


电子邮件工作流(LLM模式)

  1. 让克劳德搜索电子邮件:“查找有关预算的电子邮件”

克劳德将致电:

{
  "tool": "search_emails",
  "query": "budget"
}
  1. 让克劳德浏览结果:“显示预算电子邮件”

克劳德将致电:

{
  "tool": "browse_email_cache",
  "page_number": 1,
  "mode": "llm"
}

退货:电子邮件摘要,包括发件人、主题、日期和缓存号,便于参考。在 llm 模式下,克劳德每页收到更多电子邮件(默认为20封),以便进行高效分析。

  1. 让Claude查看特定电子邮件:“显示第二封电子邮件”

克劳德将致电:

{
  "tool": "get_email_content",
  "cache_number": 2
}
  1. 请克劳德回复:“回复此电子邮件说它看起来不错”

克劳德将致电:

{
  "tool": "send_email",
  "action": "reply",
  "cache_number": 2,
  "htmlbody": "<p>Looks good!</p>"
}

日历工作流

  1. 让克劳德搜索事件:“查找本周的日历事件”

克劳德将致电:

{
  "tool": "search_events",
  "time_range": "this_week"
}
  1. 让Claude浏览活动:“显示事件的第一页”

克劳德将致电:

{
  "tool": "browse_events",
  "page_number": 1,
  "mode": "user"
}
  1. 请Claude查看活动详情:“显示事件编号1”

克劳德将致电:

{
  "tool": "get_event_detail",
  "cache_number": 1
}
  1. 请克劳德对事件作出回应:“接受事件编号1”

克劳德将致电:

{
  "tool": "manage_event_as_attendee",
  "action": "accept",
  "cache_number": 1
}


🙌 您想支持该项目吗?

如果这对你有帮助, 请考虑在存储库中突出显示.
它激励了持续的开发,并帮助其他人发现该工具。


� 完整的MCP工具参考

以下是所有可用MCP工具的完整列表,并附有简单说明:

🔐 身份验证和设置

  • auth -管理Microsoft Graph身份验证(启动、完成、刷新、注销)
  • user_settings -配置用户偏好,如时区、搜索天数和页面大小

📧 邮件管理

  • search_emails -按发件人、主题、正文或时间范围搜索或列出电子邮件。支持聚焦收件箱过滤(focused, other, all).使用 end_date="now" 从特定日期搜索到当前时间
  • browse_email_cache -使用分页浏览缓存的电子邮件(人类用户模式,人工智能分析llm模式)
  • get_email_content -获取完整的电子邮件内容,包括附件。使用 return_html=true 获取完整的HTML正文
  • send_email -使用HTML支持发送新电子邮件、回复或转发
  • manage_emails -移动、删除、存档、标记或分类电子邮件
  • manage_mail_folder -创建、重命名、删除或移动电子邮件文件夹

📅 日历管理

  • search_events -按主题或组织者搜索或列出日历事件
  • browse_events -使用分页浏览缓存的日历事件
  • get_event_detail -获取特定事件的详细信息
  • manage_event_as_organizer -为您自己的活动创建、更新、取消、转发或向与会者发送电子邮件
  • manage_event_as_attendee -接受、拒绝、暂时接受、建议新时间、向与会者发送电子邮件或删除已取消的活动邀请
  • check_attendee_availability -检查会议日程安排的可用性

👥 人员和联系人

  • search_contacts -通过姓名或电子邮件查找组织中的人员

🔑 关键工作流模式

电子邮件工作流:

  1. search_emails -将电子邮件加载到缓存中
  2. browse_email_cache -使用适当的模式浏览(llm 对于AI, user 人类)
  3. get_email_content -查看特定电子邮件详细信息
  4. send_email 或 manage_emails -采取行动

日历工作流:

  1. search_events -将事件加载到缓存中
  2. browse_events -浏览事件
  3. get_event_detail -查看特定事件
  4. manage_event_as_attendee 或 manage_event_as_organizer -采取行动

身份验证工作流:

  1. 尝试 auth 和 refresh 动作优先-如果经过身份验证,则继续
  2. 如果刷新失败(无令牌或已过期): auth 和 start → 获取验证URL和代码
  3. 在浏览器中打开URL,输入代码,完成Microsoft登录
  4. auth 和 complete 行动→ 身份验证已完成

注: 刷新令牌的有效期约为90天。始终尝试 refresh 首先,当需要进行身份验证时。

所有工具均遵循JSON格式 "tool": "tool_name" 作为第一个参数,使它们易于与Claude等人工智能助手一起使用。