返回市场
发送网格-MCP

发送网格-MCP

作者:Garoth20 星标更新:2025-02-26

项目介绍

SendGrid MCP Server

<img src="assets/sendgrid-logo.png" width="256" height="256" alt="SendGrid Logo" />

这是一个模型上下文协议(MCP)服务器,提供对SendGrid营销API的访问,用于电子邮件营销和联系人管理。https://docs.sendgrid.com/api-reference/how-to-use-the-sendgrid-v3-api

演示

在这个演示中,我们要求Cline SendGrid代理创建一个新的联系人列表,添加我的电子邮件地址到该列表中,自动生成一个关于Lost Cities的事实模板,并将邮件发送给该列表。在此过程中,Cline会自动识别出它需要知道我们已验证的发件人以及应使用的取消订阅组。一封漂亮的邮件被送到了我的收件箱,让我惊喜不已!

<img src="assets/1.png" width="760" alt="SendGrid MCP 演示 1" /> <img src="assets/2.png" width="760" alt="SendGrid MCP 演示 2" /> <img src="assets/3.png" width="760" alt="SendGrid MCP 演示 3" /> <img src="assets/4.png" width="760" alt="SendGrid MCP 演示 4" /> <img src="assets/5.png" width="760" alt="SendGrid MCP 演示 5" /> <img src="assets/6.png" width="760" alt="SendGrid MCP 演示 6" /> <img src="assets/7.png" width="760" alt="SendGrid MCP 演示 7" /> <img src="assets/8.png" width="760" alt="SendGrid MCP 演示 8" /> <img src="assets/9.png" width="760" alt="SendGrid MCP 演示 9" />

关于API支持的重要说明

此服务器仅支持SendGrid的v3 API,不提供对旧版功能的支持。这包括:

  • 动态模板仅支持 - 不支持旧版模板
  • 营销API v3用于所有联系人及联系人列表操作
  • 单次发送API用于批量邮件发送

可用工具

联系人管理

list_contacts

列出您SendGrid账户中的所有联系人。

// 不需要参数

add_contact

向您的SendGrid营销联系人中添加一个联系人。

{
  email: string;           // 必需:联系人电子邮件地址
  first_name?: string;     // 可选:联系人名
  last_name?: string;      // 可选:联系人姓
  custom_fields?: object;  // 可选:自定义字段值
}

delete_contacts

从您的SendGrid账户中删除联系人。

{
  emails: string[];  // 必需:要删除的电子邮件地址数组
}

get_contacts_by_list

获取SendGrid列表中的所有联系人。

{
  list_id: string;  // 必需:联系人列表ID
}

列表管理

list_contact_lists

列出您SendGrid账户中的所有联系人列表。

// 不需要参数

create_contact_list

在SendGrid中创建新的联系人列表。

{
  name: string;  // 必需:联系人列表名称
}

delete_list

从SendGrid中删除联系人列表。

{
  list_id: string;  // 必需:要删除的联系人列表ID
}

add_contacts_to_list

将联系人添加到现有的SendGrid列表中。

{
  list_id: string;    // 必需:联系人列表ID
  emails: string[];   // 必需:要添加的电子邮件地址数组
}

remove_contacts_from_list

从SendGrid列表中移除联系人而不删除它们。

{
  list_id: string;    // 必需:联系人列表ID
  emails: string[];   // 必需:要移除的电子邮件地址数组
}

邮件发送

send_email

使用SendGrid发送邮件。

{
  to: string;                             // 必需:收件人电子邮件地址
  subject: string;                        // 必需:邮件主题行
  text: string;                          // 必需:纯文本内容
  from: string;                          // 必需:已验证的发件人电子邮件地址
  html?: string;                         // 可选:HTML内容
  template_id?: string;                  // 可选:动态模板ID
  dynamic_template_data?: object;        // 可选:模板变量
}

send_to_list

使用SendGrid单次发送向联系人列表发送邮件。

{
  name: string;                          // 必需:单次发送的名称
  list_ids: string[];                    // 必需:要发送到的列表ID数组
  subject: string;                       // 必需:邮件主题行
  html_content: string;                  // 必需:HTML内容
  plain_content: string;                 // 必需:纯文本内容
  sender_id: number;                     // 必需:已验证发件人的ID
  suppression_group_id?: number;         // 如果未提供custom_unsubscribe_url,则必需
  custom_unsubscribe_url?: string;       // 如果未提供suppression_group_id,则必需
}

模板管理(仅限动态模板)

create_template

创建新的动态电子邮件模板。

{
  name: string;           // 必需:模板名称
  subject: string;        // 必需:默认主题行
  html_content: string;   // 必需:带有handlebars语法的HTML内容
  plain_content: string;  // 必需:带有handlebars语法的纯文本内容
}

list_templates

列出所有动态电子邮件模板。

// 不需要参数

get_template

通过ID检索模板。

{
  template_id: string;  // 必需:要检索的模板ID
}

delete_template

删除动态模板。

{
  template_id: string;  // 必需:要删除的模板ID
}

分析与验证

get_stats

获取SendGrid电子邮件统计信息。

{
  start_date: string;                          // 必需:开始日期(YYYY-MM-DD)
  end_date?: string;                           // 可选:结束日期(YYYY-MM-DD)
  aggregated_by?: 'day' | 'week' | 'month';    // 可选:聚合周期
}

validate_email

使用SendGrid验证电子邮件地址。

{
  email: string;  // 必需:要验证的电子邮件地址
}

账户管理

list_verified_senders

列出所有已验证的发件人身份。

// 不需要参数

list_suppression_groups

列出所有取消订阅组。

// 不需要参数

安装

git clone https://github.com/Garoth/sendgrid-mcp.git
cd sendgrid-mcp
npm install

配置

  1. 获取您的SendGrid API密钥:

    • 登录到您的SendGrid账户
    • 前往设置 > API密钥
    • 创建一个具有完全访问权限的新API密钥
    • 安全保存API密钥,因为它不会再次显示
  2. 将其添加到VSCode设置中的Cline MCP设置文件内(例如 ~/.config/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json):

{
  "mcpServers": {
    "sendgrid": {
      "command": "node",
      "args": ["/path/to/sendgrid-mcp/build/index.js"],
      "env": {
        "SENDGRID_API_KEY": "your-api-key-here"
      },
      "disabled": false,
      "autoApprove": [
        "list_contacts",
        "list_contact_lists",
        "list_templates",
        "list_single_sends",
        "get_single_send",
        "list_verified_senders",
        "list_suppression_groups",
        "get_stats",
        "validate_email"
      ]
    }
  }
}

注意:修改数据的工具(如发送邮件或删除联系人)有意排除在autoApprove之外以确保安全。

开发

设置测试

测试使用真实的API调用来确保准确响应。要运行测试:

  1. 复制示例环境文件:

    cp .env.example .env
    
  2. 编辑.env并添加您的SendGrid API密钥:

    SENDGRID_API_KEY=your-api-key-here
    

    注意:.env文件被git忽略以防止提交敏感信息。

  3. 运行测试:

    npm test
    

构建

npm run build

重要注意事项

  • 发送到列表的邮件必须提供suppression_group_id或custom_unsubscribe_url之一,以符合电子邮件法规
  • 发件人电子邮件地址必须先在SendGrid中进行验证才能用于发送邮件
  • 所有模板都作为支持handlebars语法的动态模板创建(例如,{{variable_name}})
  • 单次发送API用于所有批量邮件操作,因为它提供了更好的跟踪和管理能力
  • SendGrid API是“最终一致”的 - 数据更改(如添加联系人或更新列表)可能不会立即出现

许可证

MIT

SendGrid标志版权归Twilio所有