项目简介
这是一个基于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模板进行基础设施即代码部署。
安装步骤
- 克隆仓库:
git clone https://github.com/lukemurraynz/acs-email-mcp-server.git cd acs-email-mcp-server - 恢复依赖:
dotnet restore - 配置Azure通信服务 (ACS) 端点:
在运行环境(例如 'local.settings.json' 文件或环境变量)中设置以下变量:
- 'ACS_ENDPOINT': 您的Azure通信服务资源的端点URL,例如 'https://<你的ACS资源名>.communication.azure.com/'。
- 'DEFAULT_SENDER_ADDRESS': 默认发件人邮箱地址,必须是已在ACS中验证的域名下的邮箱(推荐使用Azure托管域名 'donotreply@{domain-guid}.azurecomm.net' 或自定义已验证域名)。
- 本地运行(可选):
这将在本地启动服务器,通常监听在 'http://0.0.0.0:8080' 或 'FUNCTIONS_CUSTOMHANDLER_PORT' 指定的端口。func start
服务器配置(供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请求。
信息
分类
通信与社交