Outlook邮件交互服务器

一个基于Spring Boot和Microsoft Graph API构建的服务器,允许AI代理通过流式HTTP传输与Outlook邮件进行交互。

  • by mindfld
  • Java
  • 本地部署
  • 更新于
在 GitHub 查看 mindfld/outlook-mcp

使用说明

Outlook MCP服务器

此存储库包含一个用于Microsoft Outlook的MCP(模型上下文协议)服务器,该服务器使用Spring Boot和Microsoft Graph API构建。它允许AI代理使用以下方式与您的电子邮件进行交互 可流式HTTP传输.

特性

  • 委托身份验证:使用 设备代码流,允许您使用自己的Microsoft帐户安全登录。
  • 苏格兰和南方能源公司运输:通过HTTP公开MCP工具,与标准MCP客户端兼容。
  • 丰富的电子邮件工具:
    • get_recent_emails:获取上周的消息。
    • get_email_by_id:查看完整的消息内容和元数据。
    • delete_email_by_id:删除不需要的电子邮件。 (因不安全而暂时禁用)
    • create_draft_response:准备答复以供审查。

建筑

  • 认证:将客户端密码替换为 DeviceCodeCredential 为了更好的个人安全。
  • API:用途 graphClient.me() 对于所有操作,确保代理充当经过身份验证的用户。
  • Spring Boot:提供web服务器和生命周期管理。

如何跑步

1.Azure门户设置

要使用此服务器,您需要 应用程序注册 在 Azure门户:

  1. 注册应用程序:转到“应用程序注册”>“新注册”。
    • 姓名: Outlook MCP Server
    • 支持的帐户类型: Accounts in any organizational directory (Any Microsoft Entra ID tenant - Multitenant) and personal Microsoft accounts (e.g. Skype, Xbox) (建议个人使用)。
  2. API权限:转至“API权限”>“添加权限”>《Microsoft Graph》> “委托权限”.
    • 搜索并添加: Mail.Read, Mail.ReadWrite, Mail.Send.
    • 单击“添加权限”。
  3. 启用公共客户端流:转到“身份验证”。
    • 向下滚动到“高级设置”。
    • 集 “允许公共客户端流” 到 是这是设备代码流所必需的。
    • 单击“保存”。
  4. 获取ID:从“概述”选项卡中,复制 应用程序(客户端)ID 和 目录(租户)ID.

2.配置环境

将这些值设置为环境变量:

export AZURE_CLIENT_ID="your-client-id"
export AZURE_TENANT_ID="your-tenant-id"

2.构建和启动

mvn clean package
java -jar target/outlook-mcp-1.0-SNAPSHOT.jar

3.完成登录(第一轮)

应用程序启动后,请按照终端中的说明进行操作:

  1. 打开 https://microsoft.com/devicelogin.
  2. 输入终端中显示的代码。
  3. 使用您的Microsoft帐户登录。

连接代理(技术细节)

服务器在端口上运行 8443 默认情况下(HTTPS),并遵循 模型上下文协议.

[!注意] 服务器使用 自签名证书.通过连接时 curl 或其他工具,您必须使用 -k 或 --insecure 标记以忽略SSL警告。

1.启动会话(流式HTTP)

要启动连接,请执行 GET 请求与 Accept: text/event-stream 头球

端点: GET https://localhost:8443/mcp/ 头球: Accept: text/event-stream

卷发示例

curl -kN -H "Accept: text/event-stream" https://localhost:8443/mcp/

服务器将响应一个事件,其中包含您的 sessionId.

2.初始化服务器

一旦你有了 sessionId,发送一个 initialize 请求通过 POST. 重要:您必须包括 mcp-session-id 头球

端点: POST https://localhost:8443/mcp/ 标头:

  • Content-Type: application/json
  • mcp-session-id: <YOUR_SESSION_ID>

请求正文:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "initialize",
  "params": {
    "protocolVersion": "2024-11-05",
    "capabilities": {},
    "clientInfo": {
      "name": "my-client",
      "version": "1.0.0"
    }
  }
}

2.工具使用示例

所有工具请求应通过以下方式发送 POST 到 https://localhost:8443/mcp/ 随着 mcp-session-id 头球

标头:

  • Content-Type: application/json
  • mcp-session-id: <YOUR_SESSION_ID>

列出可用工具

{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/list"
}

呼叫 get_recent_emails

{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "get_recent_emails",
    "arguments": {
      "limit": 5
    }
  }
}

呼叫 create_draft_response

{
  "jsonrpc": "2.0",
  "id": 4,
  "method": "tools/call",
  "params": {
    "name": "create_draft_response",
    "arguments": {
      "email_id": "YOUR_EMAIL_ID",
      "body": "Thank you for your email. I will look into this."
    }
  }
}