邮件服务器

一个通过Microsoft Graph API实现AI代理发送和接收电子邮件的MCP服务器。

  • by ckriutz
  • C#
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 ckriutz/m365tools-mcp

使用说明

M365电子邮件MCP服务器

MCP(模型上下文协议)服务器,使人工智能代理能够使用Microsoft Graph API通过Microsoft 365发送和接收电子邮件。

特性

  • send_邮件 --从代理帐户发送电子邮件(支持收件人、抄送、密送)
  • list_邮件 --列出最近收件箱中的电子邮件,包括主题、发件人、日期和预览
  • read_邮件 --阅读特定电子邮件的完整内容
  • 回复_电子邮件 --回复特定电子邮件

先决条件

1.Azure Entra ID应用程序注册

  1. 首选 Azure 门户 → 微软Entra ID → 应用注册 → 新注册
  2. 姓名: M365ToolsMcp (或你的选择)
  3. 支持的帐户类型: 单租户
  4. 点击 注册

2.添加API权限

  1. 首选 API权限 → 添加权限 → 微软图形 → 应用程序权限
  2. 添加:
    • Mail.ReadWrite
    • Mail.Send
  3. 点击 授予管理员同意 为您的租户

3.创建客户端密码

  1. 首选 证书和秘密 → 新客户机密
  2. 立即复制机密值(不会再次显示)

4.记录配置值

您需要:

  • 租户ID (来自概述页面)
  • 客户端ID /应用程序ID(来自概述页面)
  • 客户端密钥 (从步骤3开始)

配置

更新 appsettings.json:

{
  "AzureAd": {
    "TenantId": "your-tenant-id",
    "ClientId": "your-client-id",
    "ClientSecret": "your-client-secret"
  },
  "Email": {
    "UserId": "email@domain.com"
  }
}

为了发展,使用。NET用户机密改为:

dotnet user-secrets init
dotnet user-secrets set "AzureAd:TenantId" "your-tenant-id"
dotnet user-secrets set "AzureAd:ClientId" "your-client-id"
dotnet user-secrets set "AzureAd:ClientSecret" "your-client-secret"

跑步

dotnet run

服务器启动于 http://localhost:5000 默认情况下使用HTTP/SSE传输。

从MCP客户端连接

将您的MCP客户端(例如OpenClaw、VS Code Copilot、Claude Desktop)指向:

http://localhost:5067/

服务器通过HTTP上的标准MCP协议和服务器发送事件公开工具。

项目结构

├── Program.cs                  # ASP.NET Core host + MCP server setup
├── appsettings.json            # Configuration (Entra ID, email)
├── Services/
│   └── GraphEmailService.cs    # Microsoft Graph email operations
└── Tools/
    ├── SendEmailTool.cs        # send_email MCP tool
    ├── ListEmailsTool.cs       # list_emails MCP tool
    ├── ReadEmailTool.cs        # read_email MCP tool
    └── ReplyEmailTool.cs       # reply_email MCP tool