Outlook协议服务器

一个为Microsoft Outlook设计的Model Context Protocol (MCP)服务器,允许AI代理如Claude Desktop通过Microsoft Graph API与邮箱和日历交互。

  • by FRESHSK
  • JavaScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 FRESHSK/mcp_outlook_calendar

使用说明

MCP Outlook服务器

服务器 模型上下文协议(MCP) 对于Microsoft Outlook,允许AI代理 克劳德桌面 通过Microsoft Graph API与邮箱和日历交互。


✨ 功能

  • 📧 邮件 :阅读、查看和发送电子邮件
  • 📅 日历 :使用自动团队链接列出和创建事件
  • 🔐 认证 :具有持久令牌缓存的Azure AD设备代码流
  • 🔄 自动刷新 :令牌自动续订

🛠️ 可用工具

工具 描述 设置
list_messages 列出收件箱中最后10封电子邮件 -
get_message 阅读电子邮件的全部内容 message_id
send_message 发送电子邮件 subject, toRecipients, content, contentType
list_events 列出未来7天的活动 -
create_event 创建事件(具有自动团队链接) subject, startDateTime, endDateTime, location, content, attendees

🧰 先决条件


🚀 逐步安装

步骤1-克隆项目

git clone https://github.com/FRESHSK/mcp_outlook_01.git
cd mcp_outlook_01
npm install

步骤2-创建Azure AD应用程序(一次)

  1. 继续 Azure门户-应用程序注册
  2. 点击 “新注册”
  3. 填写表格:
    • 名字 : MCP Outlook
    • 支持的帐户类型 :选择第三个选项 (多租户+个人Microsoft帐户)
    • 重定向URI : Public client/native → http://localhost
    • 点击 注册
  4. 启用公共流:
    • 菜单粗鲁→ 认证
    • 滚动底座→ 高级设置
    • 允许公共客户端流 → 是
    • 点击 保存
  5. 复印机l'应用程序(客户端)ID 从那时起 概述

步骤3-添加Microsoft图形API权限

  1. 在 Azure 门户,转到您的应用程序注册
  2. 菜单粗鲁→ API权限
  3. 点击 “添加权限”
  4. 选择 微软图形
  5. 选择 委托权限
  6. 搜索并检查以下权限:
权限 类型 描述
User.Read 委托 阅读登录用户的个人资料
Mail.Read 授权阅读电子邮件
Mail.Read.Shared 授权阅读共享电子邮件
Mail.ReadBasic 授权阅读电子邮件的基本信息
Mail.ReadWrite 授权阅读和编辑电子邮件
Mail.ReadWrite.Shared 授权阅读和编辑共享电子邮件
Mail.Send 委托发送电子邮件
Mail.Send.Shared 代表他人发送电子邮件
Calendars.Read 授权阅读日历
Calendars.Read.Shared 授权阅读共享日历
Calendars.ReadBasic 授权阅读基本日历信息
Calendars.ReadWrite 授权阅读和编辑日历
Calendars.ReadWrite.Shared 委派 阅读和编辑共享日历
  1. 点击 “添加权限”
  2. 点击 “授予管理员对…的同意” 然后确认

Azure门户的预期结果:

✅ User.Read                    (Delegated) - Granted
✅ Mail.Read                    (Delegated) - Granted
✅ Mail.Read.Shared             (Delegated) - Granted
✅ Mail.ReadBasic               (Delegated) - Granted
✅ Mail.ReadWrite               (Delegated) - Granted
✅ Mail.ReadWrite.Shared        (Delegated) - Granted
✅ Mail.Send                    (Delegated) - Granted
✅ Mail.Send.Shared             (Delegated) - Granted
✅ Calendars.Read               (Delegated) - Granted
✅ Calendars.Read.Shared        (Delegated) - Granted
✅ Calendars.ReadBasic          (Delegated) - Granted
✅ Calendars.ReadWrite          (Delegated) - Granted
✅ Calendars.ReadWrite.Shared   (Delegated) - Granted

步骤4-配置环境变量

cp .env.example .env

编辑 .env :

MICROSOFT_CLIENT_ID=ton-client-id-azure
MICROSOFT_TENANT_ID=common

⚠️ 永远不要提交文件 .env -他在 .gitignore

ℹ️ 利用 common 个人账户或组织账户的账户持有人ID。


步骤5-首次Microsoft身份验证

node server.js

您将在终端中看到:

To sign in, use a web browser to open the page
https://microsoft.com/devicelogin and enter the code XXXXXXXX
  1. 打开 https://microsoft.com/devicelogin
  2. 输入终端中显示的代码
  3. 使用您的Microsoft帐户登录
  4. 文件 token_cache.json 将自动创建

✅ 此步骤只需要一次。令牌自动更新。


步骤6-设置Claude桌面

编辑文件 claude_desktop_config.json de Claude桌面:

  • 视窗 : C:\Users\<user>\AppData\Roaming\Claude\claude_desktop_config.json
  • 苹果电脑 : ~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "outlook": {
      "command": "node",
      "args": [
        "C:\\chemin\\absolu\\vers\\mcp_outlook_01\\server.js"
      ]
    }
  }
}

步骤7-重新启动Claude桌面

关闭并重新启动Claude桌面。你现在可以问克劳德:

  • “给我看我最新的电子邮件”
  • “Lis l'email de GitHub”
  • “给我的同事发电子邮件”
  • “这周我有什么计划?”
  • “安排明天上午10点与[电子邮件]会面” (自动创建团队链接)

📁 项目结构

mcp_outlook_01/
├── server.js              # Serveur MCP principal
├── .env                   # Variables d'environnement (non commité)
├── .env.example           # Template des variables d'environnement
├── .gitignore             # Fichiers ignorés par Git
├── token_cache.json       # Cache du token MSAL (non commité)
└── package.json           # Dépendances Node.js

📦 主要依赖项

包装 用法
@modelcontextprotocol/sdk MCP服务器
@azure/msal-node 身份验证Microsoft
node-fetch 对图形API的HTTP请求
dotenv 环境变量
zod 验证工具设置

🔒 安全

  • 文件 .env 包含键在 .gitignore
  • 乐 token_cache.json 包含Microsoft令牌的是 .gitignore
  • 永远不要在GitHub中提交API密钥或令牌

🐛 故障排除

MCP在Claude桌面中没有响应? →检查日志: AppData\Roaming\Claude\logs\mcp-server-outlook.log

身份验证错误还是新权限? →删除 token_cache.json 并重新启动 node server.js 为了重新验证

错误 fetch is not a function ? →检查 node-fetch 安装良好: npm install node-fetch

发送电子邮件时出错? →代码处理202接受的响应-验证 server.js 是最新的


📝 许可证

麻省理工学院