返回市场
outlook邮件服务器

outlook邮件服务器

作者:ryaker194 星标更新:2025-11-02

项目介绍

MseeP.ai 安全评估徽章

模块化Outlook MCP服务器

这是一个模块化的Outlook MCP(模型上下文协议)服务器实现,通过Microsoft Graph API连接Claude与Microsoft Outlook。

认证由MCPHub提供:https://mcphub.com/mcp-servers/ryaker/outlook-mcp

目录结构

/modular/
├── index.js                 # 主入口点
├── config.js                # 配置设置
├── auth/                    # 认证模块
│   ├── index.js             # 认证导出
│   ├── token-manager.js     # 令牌存储和刷新
│   └── tools.js             # 与认证相关的工具
├── calendar/                # 日历功能
│   ├── index.js             # 日历导出
│   ├── list.js              # 列出事件
│   ├── create.js            # 创建事件
│   ├── delete.js            # 删除事件
│   ├── cancel.js            # 取消
│   ├── accept.js            # 接受事件
│   ├── tentative.js         # 暂时接受事件
│   ├── decline.js           # 拒绝事件
├── email/                   # 邮件功能
│   ├── index.js             # 邮件导出
│   ├── list.js              # 列出邮件
│   ├── search.js            # 搜索邮件
│   ├── read.js              # 阅读邮件
│   └── send.js              # 发送邮件
└── utils/                   # 工具函数
    ├── graph-api.js         # Microsoft Graph API辅助
    ├── odata-helpers.js     # 构建OData查询
    └── mock-data.js         # 测试模式数据

特性

  • 认证:使用Microsoft Graph API的OAuth 2.0认证
  • 邮件管理:列出、搜索、阅读和发送邮件
  • 日历管理:列出、创建、接受、拒绝和删除日历事件
  • 模块化结构:清晰的责任分离以提高可维护性
  • OData过滤处理:正确转义和格式化OData查询
  • 测试模式:模拟响应进行测试而不调用真实API

快速开始

  1. 安装依赖npm install
  2. Azure配置:在Azure门户中注册应用(详见以下详细步骤)
  3. 配置环境:复制.env.example.env并添加您的Azure凭据
  4. 配置Claude:更新Claude Desktop配置中的服务器路径
  5. 启动认证服务器npm run auth-server
  6. 认证:使用Claude中的认证工具获取OAuth URL
  7. 开始使用:通过Claude访问您的Outlook数据!

安装

先决条件

  • Node.js 14.0.0或更高版本
  • npm或yarn包管理器
  • Azure账户用于应用注册

安装依赖

npm install

这将安装所需的依赖项,包括:

  • @modelcontextprotocol/sdk - MCP协议实现
  • dotenv - 环境变量管理

Azure应用注册与配置

要使用此MCP服务器,您需要首先在Azure门户中注册和配置一个应用。以下步骤将引导您完成注册新应用、配置其权限以及生成客户端密钥的过程。

应用注册

  1. 在浏览器中打开Azure门户
  2. 使用Microsoft工作或个人账户登录
  3. 搜索或点击“应用注册”
  4. 点击“新建注册”
  5. 输入应用名称,例如“Outlook MCP服务器”
  6. 选择“任何组织目录中的帐户和个人Microsoft帐户”选项
  7. 在“重定向URI”部分,从下拉菜单中选择“Web”,并在文本框中输入“http://localhost:3333/auth/callback”
  8. 点击“注册”
  9. 从应用设置页面的概览部分,复制“应用程序(客户端)ID”,并将其作为MS_CLIENT_ID添加到.env文件中,同时作为OUTLOOK_CLIENT_ID添加到claude-config-sample.json文件中

应用权限

  1. 在Azure门户的应用设置页面中,选择“管理”下的“API权限”选项
  2. 点击“添加权限”
  3. 点击“Microsoft Graph”
  4. 选择“委派权限”
  5. 搜索以下权限并选中每个权限旁边的复选框
    • offline_access
    • User.Read
    • Mail.Read
    • Mail.Send
    • Calendars.Read
    • Calendars.ReadWrite
    • Contacts.Read
  6. 点击“添加权限”

客户端密钥

  1. 在Azure门户的应用设置页面中,选择“管理”下的“证书和密钥”选项
  2. 切换到“客户端密钥”标签
  3. 点击“新建客户端密钥”
  4. 输入描述,例如“客户端密钥”
  5. 选择最长可能的过期时间
  6. 点击“添加”
  7. ⚠️重要:复制密钥的(而不是密钥ID),并保存以备下一步使用

配置

1. 环境变量

在项目根目录中通过复制示例创建一个.env文件:

cp .env.example .env

编辑.env并添加您的Azure凭据:

# 从Azure门户 > 应用注册 > 您的应用获取这些值
MS_CLIENT_ID=your-application-client-id-here
MS_CLIENT_SECRET=your-client-secret-VALUE-here
USE_TEST_MODE=false

重要提示:

  • .env文件中使用MS_CLIENT_IDMS_CLIENT_SECRET
  • 对于Claude Desktop配置,您将使用OUTLOOK_CLIENT_IDOUTLOOK_CLIENT_SECRET
  • 始终使用客户端密钥的,而不是密钥ID

2. Claude Desktop配置

claude-config-sample.json复制配置到您的Claude Desktop配置文件,并更新路径和凭据:

{
  "mcpServers": {
    "outlook-assistant": {
      "command": "node",
      "args": [
        "/absolute/path/to/outlook-mcp/index.js"
      ],
      "env": {
        "USE_TEST_MODE": "false",
        "OUTLOOK_CLIENT_ID": "your-client-id-here",
        "OUTLOOK_CLIENT_SECRET": "your-client-secret-here"
      }
    }
  }
}

3. 高级配置(可选)

要配置服务器行为,您可以编辑config.js来更改:

  • 服务器名称和版本
  • 测试模式设置
  • 认证参数
  • 邮件字段选择
  • API端点

使用Claude Desktop

  1. 配置Claude Desktop:添加服务器配置(参见上述配置部分)
  2. 重启Claude Desktop:关闭并重新打开Claude Desktop以加载新的MCP服务器
  3. 启动认证服务器:打开终端并运行npm run auth-server
  4. 认证:在Claude Desktop中,使用authenticate工具获取OAuth URL
  5. 完成OAuth流程:在浏览器中访问该URL并使用Microsoft帐户登录
  6. 开始使用:一旦认证成功,您就可以在Claude中使用所有Outlook工具了!

单独运行

您可以使用以下命令测试服务器:

./test-modular-server.sh

这将使用MCP Inspector直接连接到服务器,让您测试可用工具。

认证流程

认证过程需要两个步骤:

第一步:启动认证服务器

npm run auth-server

这将在端口3333上启动一个本地服务器,处理来自Microsoft的OAuth回调。

⚠️重要:必须在尝试认证之前运行认证服务器。如果服务器未运行,认证URL将无法工作。

第二步:使用Microsoft进行认证

  1. 在Claude Desktop中,使用authenticate工具
  2. Claude将提供类似这样的URL:http://localhost:3333/auth?client_id=your-client-id
  3. 在浏览器中访问此URL
  4. 使用您的Microsoft帐户登录
  5. 授权请求的权限
  6. 您将被重定向回成功页面
  7. 令牌将自动存储在~/.outlook-mcp-tokens.json

认证服务器可以在成功认证后停止(令牌已保存)。但是,如果您需要重新认证,则需要重新启动它。

故障排除

常见安装问题

"无法找到模块'@modelcontextprotocol/sdk/server/index.js'"

解决方案:先安装依赖项:

npm install

"错误:监听EADDRINUSE:地址已在使用中:::3333"

解决方案:端口3333已被占用。终止现有进程:

npx kill-port 3333

然后重新启动认证服务器:npm run auth-server

认证问题

"提供的客户端密钥无效"(错误AADSTS7000215)

根本原因:您使用的是Secret ID而不是Secret Value。

解决方案

  1. 转到Azure门户 > 应用注册 > 您的应用 > 证书和密钥
  2. 复制列(而不是Secret ID列)
  3. 更新以下内容:
    • .env文件:MS_CLIENT_SECRET=actual-secret-value
    • Claude Desktop配置:OUTLOOK_CLIENT_SECRET=actual-secret-value
  4. 重新启动认证服务器:npm run auth-server

认证URL无法工作 / “无法到达此站点”

根本原因:认证服务器没有运行。

解决方案

  1. 首先启动认证服务器:npm run auth-server
  2. 等待“认证服务器正在运行于http://localhost:3333”
  3. 然后在Claude中尝试认证URL

成功设置后仍显示“需要认证”

根本原因:令牌可能已过期或损坏。

解决方案

  1. 检查令牌文件是否存在:~/.outlook-mcp-tokens.json
  2. 如果损坏,删除文件并重新认证
  3. 重新启动认证服务器并重新认证

配置问题

服务器在Claude Desktop中无法启动

解决方案

  1. 检查Claude Desktop配置中的绝对路径
  2. 确保在Claude配置中设置了OUTLOOK_CLIENT_IDOUTLOOK_CLIENT_SECRET
  3. 配置更改后重新启动Claude Desktop

环境变量未加载

解决方案

  1. 确保项目根目录中存在.env文件
  2. .env中使用MS_CLIENT_IDMS_CLIENT_SECRET
  3. 不要在.env文件中的值周围添加引号

API和运行时问题

  • OData过滤错误:检查服务器日志中的转义序列问题
  • API调用失败:查看响应中的详细错误消息
  • 令牌刷新问题:删除~/.outlook-mcp-tokens.json并重新认证

获取帮助

如果您仍然遇到问题:

  1. 检查npm run auth-server的控制台输出以获取详细错误信息
  2. 验证您的Azure应用注册设置是否与文档匹配
  3. 确保您具有所需的Microsoft Graph API权限

扩展服务器

要添加更多功能:

  1. 创建新的模块目录(例如,calendar/
  2. 在单独的文件中实现工具处理器
  3. 从模块索引文件导出工具定义
  4. index.js中导入并添加工具到TOOLS数组