Outlook集成服务器

一个支持多账户的Microsoft Outlook集成服务器,提供日历和邮件管理功能。

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

使用说明

MCP Outlook服务器

用于Microsoft Outlook集成的MCP(模型上下文协议)服务器,支持多帐户。

特性

  • 🔐 与Microsoft进行OAuth2身份验证
  • 📅 日历管理(读、写、创建事件)
  • 📧 电子邮件管理(读取、发送、文件夹)
  • 🏢 多帐户支持(多个Microsoft帐户)
  • 💾 自动令牌刷新
  • 🔄 所有账户的并发操作

安装

# Clone the repository
git clone https://github.com/renkosteenbeek/mcp-outlook-server.git
cd mcp-outlook-server

# Install dependencies
npm install

# Build the project
npm run build

配置

1.Azure应用程序注册

对于要连接的每个Microsoft帐户,您都需要一个应用程序注册。

直接链接到应用程序注册:

https://entra.microsoft.com/#view/Microsoft_AAD_RegisteredApps/ApplicationsListBlade

创建应用程序注册的步骤:

  1. 转到 应用程序注册页面

  2. 点击“新建注册”

  3. 配置应用程序:

    • 名字: MCP Outlook Integration (或您喜欢的任何名称)
    • 支持的帐户类型:根据您的需求进行选择:
      • 对于个人Microsoft帐户:“任何组织目录中的帐户和个人Microsoft帐户”
      • 仅适用于工作/学校帐户:“仅适用于此组织目录中的帐户”
      • 对于多租户:“任何组织目录中的帐户”
    • 重定向URI:
      • 平台: Web
      • URI: http://localhost:3000/auth/callback
    • 点击“注册”
  4. 注册后,保存这些值:

    • 应用程序(客户端)ID:在概述页面上找到
    • 目录(租户)ID:在概述页面上找到(个人帐户使用“常用”)
  5. 创建客户端密码:

    • 转到左侧菜单中的“证书和机密”
    • 点击“新建客户端密码”
    • 添加描述并选择过期时间
    • 点击“添加”
    • 重要:立即复制机密值(不会再次显示)
  6. 配置API权限:

    • 转到左侧菜单中的“API权限”
    • 点击“添加权限”
    • 选择“Microsoft Graph”
    • 选择“委派权限”
    • 选择这些权限:
      • User.Read
      • Mail.Read
      • Mail.ReadWrite
      • Mail.Send
      • Calendars.Read
      • Calendars.ReadWrite
    • 点击“添加权限”
    • 如果您是管理员,请单击“授予管理员同意”(可选)
  7. 配置身份验证设置:

    • 转到左侧菜单中的“身份验证”
    • 在“平台配置”下,确保您有一个“Web”平台
    • 验证重定向URI是否为: http://localhost:3000/auth/callback
    • 在“隐性拨款和混合资金流”下,不勾选这两个选项
    • 点击“保存”

2.配置文件

创建一个 config.json 项目根目录中的文件:

{
  "accounts": [
    {
      "name": "Personal",
      "tenantId": "common",
      "clientId": "your-client-id",
      "clientSecret": "your-client-secret"
    },
    {
      "name": "Work",
      "tenantId": "your-tenant-id",
      "clientId": "your-client-id",
      "clientSecret": "your-client-secret"
    }
  ],
  "server": {
    "port": 3000,
    "redirectUri": "http://localhost:3000/auth/callback"
  }
}

3.克劳德桌面配置

添加到您的Claude桌面配置(claude_desktop_config.json):

{
  "mcpServers": {
    "outlook": {
      "command": "node",
      "args": ["/path/to/mcp-outlook-server/dist/index.js"],
      "env": {}
    }
  }
}

Claude中的用法

认证

Login to your accounts: outlook_auth_login

日历功能

- List calendars: outlook_calendar_list
- View events: outlook_calendar_events_list
- Create event: outlook_calendar_event_create with subject, startDateTime, endDateTime

电子邮件功能

- List folders: outlook_mail_folders_list
- View emails: outlook_mail_messages_list
- Send email: outlook_mail_send with to, subject, body

多账户支持

  • 默认情况下,所有操作都在所有配置的帐户上运行
  • 使用 account 针对特定帐户的参数
  • 为清楚起见,回复中包括帐户名称

发展

# Run in development mode
npm run dev

# Test authentication
npm run test

多账户功能

  • 配置多个Microsoft帐户(个人、工作等)
  • 所有账户同时执行操作
  • 按帐户名筛选结果
  • 每个帐户都维护自己的身份验证状态

安全

  • 客户端机密安全地存储在配置文件中
  • 每个帐户加密存储令牌
  • 每个帐户自动刷新令牌
  • OAuth2与PKCE结合,增强安全性

故障排除

  1. “未注册回复地址”:在Azure门户中添加重定向URI
  2. “客户端密码无效”:检查密码是否已过期
  3. “权限被拒绝”:验证Azure门户中的API权限
  4. 令牌已过期:服务器会自动刷新,请重试