邮件管理工具

SendGrid MCP Server是一个基于MCP协议的邮件管理和报告工具,提供自动化交互端点,支持通过自然语言读取、创建、分析和管理邮件模板及指标。

  • by garethcull
  • Python
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 garethcull/sendgrid-mcp

使用说明

SendGrid MCP服务器

一种模型上下文协议(MCP)服务器,将SendGrid电子邮件管理和报告工具作为MCP兼容端点公开。此MCP服务器为与SendGrid的自动交互提供端点-允许AI助手、MCP客户端(如OpenAI的Responses API、Cursor)或原型MCP客户端通过自然语言读取、创建、分析和管理电子邮件模板或指标。

此服务器使用Flask构建,可以部署到Google Cloud Run或支持基于Python的web服务的任何环境中。

它最初是作为prototyper.ai的Studio产品的一部分设计的,旨在帮助简化电子邮件营销创建。当您在prototyper.ai Studio中连接此MCP时,您可以将任何动态电子邮件模板导入Studio画布,使用Gemini 3 Pro等领先模型进行更改,并将这些更改保存回您的Sendgrid帐户。

您还可以使用prototyper.ai Chat从您的Sendgrid帐户中提取与电子邮件相关的统计数据。

尽管此MCP工具是为prototyper.ai构建的,但它与其他MCP远程客户端兼容。也可以随意尝试一下!

MCP功能

此SendGrid MCP服务器通过MCP协议公开了多种工具:

  • list_email_templates–获取可用SendGrid动态电子邮件模板的列表。
  • get_html_template_by_id–检索特定模板id的html正文。
  • save.email_html_template–将新的或更新的html电子邮件模板保存到SendGrid。
  • get_aggregate_email_stats–按天、周或月聚合电子邮件性能指标(已发送、打开、点击等),并通过聊天提供。

所有端点都受到保护。必须提供有效的MCP_TOKEN作为授权的共享密钥。

MCP架构

此MCP服务器包含两个文件:

  1. app.py-主python文件,用于对mcp_helper.py的请求进行身份验证和委托
  2. mcp_helper.py-包含所有SendGrid特定的逻辑,包括电子邮件模板管理和统计报告生成。

app.py

带有POST/mcp的Flask应用程序 通过返回204 No Content来处理JSON-RPC通知 mcp方法逻辑委托给mcp_helper

mcp_helper.py

handle_request路由初始化、工具/列表、工具/调用 包含用于与SendGrid REST API交互并格式化LLM或MCP使用的结果的业务逻辑。

端点和协议

JSON-RPC MCP(此服务器首选) POST/mcp 内容类型:应用程序/json 授权:承载MCP_TOKEN 方法 初始化→ 返回protocolVersion、serverInfo、功能 工具/列表→ 返回带有inputSchema的工具(camelCase) 工具/调用→ 返回带有内容数组的结果 通知/已初始化→ 不得返回JSON-RPC主体;回答204

环境变量

此MCP服务器需要设置环境变量才能正常工作。它们是:

MCP_TOKEN–所有传入请求的授权令牌。 SENDGRID_API_KEY–SENDGRID API密钥,具有足够的权限读取和写入模板以及获取分析。

本地设置

Python环境

创建并激活虚拟环境

python3-m视频 source.ven/bin/activate

安装依赖项

pip安装-r要求.txt

环境变量(示例) export MCP_TOKEN=“您的共享令牌” export SENDGRID_API_KEY=“your-SENDGRID-API-KEY”

在本地运行

导出FLASK_APP=APP.py 烧瓶运行--主机0.0.0.0--端口8080

快速JSON-RPC测试

使用Python请求来验证初始化、通知/初始化、工具/列表和工具/调用。替换基本URL和令牌。

import requests, json

BASE = "https://<your-cloud-run-host>/mcp"
AUTH = "Bearer <your-mcp-token>"

def rpc(method, params, id_):
    payload = {"jsonrpc":"2.0","id":id_, "method":method, "params":params}
    r = requests.post(BASE, headers={"Authorization": AUTH, "Content-Type":"application/json"}, data=json.dumps(payload))
    print(method, r.status_code)
    print(r.text[:600])
    return r

# 1) initialize
rpc("initialize", {}, "1")

# 2) tools/list
rpc("tools/list", {}, "2")

# 3) tools/call
rpc("tools/call", {
    "name":"get_aggregate_email_stats",
  "arguments":{"start_date":"2025-01-01","end_date":"2025-01-31","aggregated_by":"day"}
}, "3")

OpenAI响应API工具配置

此MCP工具最初设计用于使用OpenAI Responses API。有关OpenAI的Responses API和MCP的更多详细信息,请查看本食谱: https://cookbook.openai.com/examples/mcp/mcp_tool_guide

在响应API请求中配置MCP工具。将server_url指向您的/mcp端点,并包含Authorization标头。

tools = [
  {
    "type": "mcp",
    "server_label": "sendgrid-mcp",
    "server_url": "https://<your-cloud-run-host>/mcp",
    "headers": { "Authorization": "Bearer <your-mcp-token>" },
    "require_approval": "never"
  }
]

添加新工具

通过在MCP_helper.py中扩展handle_tools_list(),并在handle_tool_call()中定义逻辑,可以注册新的MCP工具。

例子:

{
  "name": "list_email_templates",
  "description": "Fetches available SendGrid templates",
  "inputSchema": {
    "type": "object",
    "properties": {
      "list_type": {"type":"string","description":"dynamic or legacy"}
    },
    "required": ["list_type"]
  }
}

然后在handle_tool_call()中处理它:

if tool_name == "list_email_templates":
    data = list_email_templates(arguments)
    return {"content":[{"type":"text","text":str(data)}]}

安全考虑

所有/mcp路由都需要有效的mcp_TOKEN进行授权。 确保使用的SENDGRID_API_KEY具有正确的API权限(邮件发送、市场营销和统计API作用域)。 避免记录或公开电子邮件数据。

部署到Google Cloud Run

此MCP服务器设计用于轻松部署到Google Cloud Run。

  1. 使用轻量级Python基础映像将代码容器化。
  2. 在Cloud Run服务中设置环境变量。
  3. 确保您的服务配置了用于安全访问的Authorization标头。

以下是一篇文章的链接,该文章帮助我将此MCP服务器部署到Google Cloud Run: https://docs.cloud.google.com/run/docs/quickstarts/build-and-deploy/deploy-python-service

许可证

麻省理工学院

贡献与支持

欢迎反馈、问题和PR。由于带宽限制,我无法提供此代码库的免费更新时间表。

如果您需要帮助定制此MCP服务器,我可以提供付费咨询和自由项目。欢迎在LinkedIn上与我联系: https://www.linkedin.com/in/garethcull/

感谢您查看SendGrid MCP服务器!此工具可帮助开发人员和AI代理在几分钟内自动化SendGrid分析、报告和模板管理。

发邮件快乐!