邮件服务器

一个通过Microsoft Graph API为AI模型提供Microsoft Outlook邮件访问的MCP服务器。

  • by tristandistretti
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 tristandistretti/MCP-demo

使用说明

MCP电子邮件服务器

一个MCP(模型上下文协议)服务器,通过Microsoft Graph API为人工智能模型提供访问Microsoft Outlook电子邮件的权限。

概述

该项目通过两种方式实现了AI模型的电子邮件访问:

  • FastAPI服务器 (server.py)-用于Ollama测试的HTTP/REST端点
  • MCP服务器 (mcp_server.py)-Claude Desktop和其他MCP客户端的官方MCP协议实施

建筑

AI Model → MCP Server → Microsoft Graph API → Outlook

这两种实现都包装了相同的Microsoft Graph API调用,并将其公开为人工智能模型可以使用的可发现工具。

特性

  • 获取电子邮件 -从收件箱检索最近的电子邮件
  • send_邮件 -向收件人发送电子邮件
  • 带有令牌缓存的OAuth2设备代码身份验证

设置

  1. 安装依赖项:
pip install -r requirements.txt
  1. 配置Azure应用程序:

    • 创建Azure AD应用程序注册
    • 添加API权限: Mail.Read, Mail.Send (委托)
    • 复制客户端ID和租户ID
  2. 设置环境变量:

# .env file
AZURE_CLIENT_ID=your-client-id
AZURE_TENANT_ID=your-tenant-id
  1. 身份验证:
python authenticate.py

遵循设备代码流。令牌缓存在 ~/.email_mcp_token_cache.bin

用法

使用FastAPI+Ollama进行测试

# Start HTTP server
python server.py

# Run Ollama test
python test_ollama.py

与MCP检查器一起使用

npx @modelcontextprotocol/inspector python mcp_server.py

导航到web界面以:

  • 查看可用工具
  • 测试工具执行
  • 检查请求/响应流

与Claude Desktop一起使用

添加到您的Claude桌面配置(~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "email": {
      "command": "python",
      "args": ["/path/to/mcp_server.py"]
    }
  }
}

文件

  • authenticate.py -一次性身份验证脚本
  • server.py -FastAPI HTTP服务器
  • mcp_server.py -MCP协议服务器
  • test_ollama.py -Ollama集成测试

认证

该项目使用OAuth2设备代码流:

  1. 跑 authenticate.py 一次获得代币
  2. 令牌由两台服务器缓存和重用
  3. 令牌过期时重新进行身份验证(通常为1小时)

检查令牌状态:

python authenticate.py check

运作原理

  1. 工具定义:两个服务器都使用描述参数的模式公开相同的工具
  2. 人工智能发现:AI模型查询可用工具及其模式
  3. 工具执行:AI生成正确的工具调用,服务器根据Microsoft Graph API执行
  4. 响应:将真实电子邮件数据返回给AI模型