项目简介

这是一个基于C# .NET 8构建的MCP (Model Context Protocol) 服务器,旨在作为Azure Functions的自定义处理程序运行。它利用Azure通信服务 (ACS) 提供强大的邮件自动化功能,包括发送带附件的HTML或纯文本邮件,使用预定义模板,并具备健壮的错误处理机制。该服务器通过标准化的MCP协议,使LLM客户端能够轻松地调用邮件发送功能。

主要功能点

  • MCP服务器核心: 遵循Model Context Protocol标准,与LLM客户端进行高效、标准化的通信。
  • 邮件发送工具: 提供多种工具来发送邮件,例如:
    • 'SendEmail': 发送带完整选项(HTML/纯文本、附件、发件人/收件人显示名)的邮件。
    • 'SendSimpleEmail': 发送参数极简的纯文本邮件。
    • 'SendEmailWithMultipleAttachments': 发送带多个附件的邮件。
    • 'SendIncidentEmail': 使用预定义的事件通知模板发送紧急邮件。
    • 'ListEmailTemplates': 列出所有可用的邮件模板及其所需的变量。
  • 模板管理: 内置邮件模板,支持变量替换,方便快速生成结构化邮件。
  • 附件处理: 支持通过文件路径或Base64编码内容添加附件,并进行大小校验。
  • 错误处理与监控: 内置健康检查 ('/api/healthz') 和就绪检查 ('/api/ready') 端点,提供详细的错误响应和故障排除信息。
  • 云原生部署: 可部署为Azure Functions自定义处理程序,支持Bicep模板进行基础设施即代码部署。

安装步骤

  1. 克隆仓库:
    git clone https://github.com/lukemurraynz/acs-email-mcp-server.git
    cd acs-email-mcp-server
  2. 恢复依赖:
    dotnet restore
  3. 配置Azure通信服务 (ACS) 端点: 在运行环境(例如 'local.settings.json' 文件或环境变量)中设置以下变量:
    • 'ACS_ENDPOINT': 您的Azure通信服务资源的端点URL,例如 'https://<你的ACS资源名>.communication.azure.com/'。
    • 'DEFAULT_SENDER_ADDRESS': 默认发件人邮箱地址,必须是已在ACS中验证的域名下的邮箱(推荐使用Azure托管域名 'donotreply@{domain-guid}.azurecomm.net' 或自定义已验证域名)。
  4. 本地运行(可选):
    func start
    这将在本地启动服务器,通常监听在 'http://0.0.0.0:8080' 或 'FUNCTIONS_CUSTOMHANDLER_PORT' 指定的端口。

服务器配置(供MCP客户端连接)

MCP客户端需要配置MCP服务器的启动命令和参数才能建立连接。以下是一个示例JSON配置,它描述了如何在本地启动此MCP服务器,请根据您的实际部署情况调整 'command' 和 'args'。

{
  "server_name": "ACS邮件MCP服务器",
  "command": "func",
  "args": [
    "start",
    "--port",
    "8080"
  ],
  "environment": {
    "ACS_ENDPOINT": "https://<你的ACS资源名>.communication.azure.com/",
    "DEFAULT_SENDER_ADDRESS": "donotreply@<你的域名GUID>.azurecomm.net",
    "FUNCTIONS_CUSTOMHANDLER_PORT": "8080"
  },
  "description": "连接到基于Azure通信服务的MCP邮件服务器。请确保在environment中配置有效的ACS_ENDPOINT和DEFAULT_SENDER_ADDRESS。"
}

参数注释:

  • 'server_name': 这是一个人类可读的服务器名称,用于MCP客户端识别。
  • 'command': 启动MCP服务器进程的命令。对于本地运行,通常是 'func' (Azure Functions Core Tools)。
  • 'args': 传递给 'command' 的参数列表。对于本地运行,'start' 用于启动Functions应用,'--port 8080' 指定监听端口。
  • 'environment': 启动MCP服务器进程时需要设置的环境变量。
    • 'ACS_ENDPOINT': 您的Azure通信服务资源的访问端点。
    • 'DEFAULT_SENDER_ADDRESS': 邮件的默认发件人地址,必须是经过验证的有效地址。
    • 'FUNCTIONS_CUSTOMHANDLER_PORT': MCP服务器监听的端口,应与 'args' 中指定的端口一致。
  • 'description': 对此MCP服务器配置的简要描述。

基本使用方法

LLM客户端可以通过MCP协议调用服务器提供的邮件工具。例如,调用 'SendEmail' 工具发送一封带有主题和正文的邮件:

LLM提示示例: “发送一封邮件给 '[email protected]',主题是 '会议提醒',内容是 '别忘了我们明天下午2点的会议'。”

LLM客户端底层调用 (JSON-RPC 请求示例,LLM客户端将自动构建):

{
  "jsonrpc": "2.0",
  "method": "EmailTools.SendEmail",
  "params": {
    "recipientAddress": "[email protected]",
    "subject": "会议提醒",
    "body": "别忘了我们明天下午2点的会议",
    "senderAddress": "[email protected]"
  },
  "id": 1
}

这个JSON-RPC调用将触发MCP服务器执行 'EmailTools.SendEmail' 方法,并将邮件通过Azure通信服务发送出去。其他工具如 'SendIncidentEmail' 和 'ListEmailTemplates' 也可以通过类似的方式被调用,LLM客户端会根据用户的提示自动选择并构建相应的JSON-RPC请求。

信息

分类

通信与社交