mcpField
S
SendGrid MCP Server

SendGrid MCP Server

本地服务
github.com通信协作45 周前更新

关于 SendGrid MCP Server

SendGrid MCP Server 将 SendGrid API v3 接入 MCP 客户端,用于邮件操作和分析,涵盖营销、事务邮件、联系人、模板及账户数据。默认启用只读模式。

主要功能

  1. 01发送事务邮件
  2. 02管理营销活动和自动化流程
  3. 03搜索和更新联系人
  4. 04管理动态模板与细分群组
  5. 05分析邮件表现统计
  6. 06默认启用只读模式

适用场景

  1. 01发送个性化事务消息
  2. 02管理营销活动和联系人列表
  3. 03查看送达与互动分析
  4. 04将集成限制为只读访问

MCP 相关

该 MCP 服务将 SendGrid API v3 功能作为工具提供给兼容客户端。支持本地 stdio 和远程 Streamable HTTP 传输。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"deyikong-sendgrid": {
"command": "npx",
"args": [
"-y",
"sendgrid-mcp"
],
"env": {
"SENDGRID_API_KEY": "<SENDGRID_API_KEY>",
"READ_ONLY": "<READ_ONLY>"
}
}
}
}
启动命令npx -y sendgrid-mcp
需要配置的环境变量
SENDGRID_API_KEY密钥Your SendGrid API key (must start with 'SG.').
READ_ONLYWhen true (the default), blocks all write/delete operations at runtime while keeping every tool registered and visible.

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmsendgrid-mcp1.4.0

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

SendGrid MCP 服务

Listed on mcpservers.org smithery badge

一款 Model Context Protocol(MCP)服务,可全面访问 SendGrid API v3,支持电子邮件营销、事务性邮件操作、动态模板管理和详细分析。包含 154 个工具,涵盖电子邮件管理和效果分析的各个方面。

由一名 SendGrid 工程师独立构建并维护,并非 SendGrid 官方产品。

请参阅 RELEASES.md,了解最新版本的变更内容。

功能

  • 营销自动化:创建和管理电子邮件自动化工作流
  • 单次发送营销活动:管理一次性电子邮件营销活动,并详细追踪效果
  • 联系人管理:对联系人执行完整的增删改查操作,并支持高级搜索和批量操作
  • 电子邮件统计与分析:从浏览器、设备、地理位置和电子邮件服务提供商等多个维度分析效果,并提供 13 个月的历史数据
  • 动态细分管理:根据复杂的筛选条件创建、更新和删除联系人细分,并自动刷新
  • 动态模板管理:创建、管理和管理 HTML 电子邮件模板的版本,并支持使用 Handlebars 进行个性化设置
  • 自定义字段管理:定义和管理额外的联系人数据字段,以实现更精细的定向
  • 邮件发送:通过 SendGrid 发送事务性邮件,并全面支持个性化设置
  • 发件人身份管理:管理经过验证的发件人身份,并追踪身份验证状态
  • 抑制列表:管理退信、垃圾邮件举报和退订,以优化送达能力
  • 账户设置:访问账户详情并管理配置
  • 浏览器集成:快速访问 SendGrid 网页界面,以执行可视化操作
  • 只读安全模式:安全操作模式可防止意外修改数据,同时保留完整的分析访问权限

支持的 MCP 客户端

✅ Claude Desktop - 官方桌面应用
✅ Claude Code - 官方命令行工具
✅ Claude 自定义连接器 - 通过 Streamable HTTP(请参阅安装服务)
✅ OpenAI Responses API / Apps SDK - 通过 Streamable HTTP
✅ MCP Market - 托管式一键部署,无需安装(请参阅安装服务)
✅ Cline - VS Code 扩展
✅ Zed Editor - 现代代码编辑器
✅ Continue - VS Code 自动驾驶工具
✅ Codex CLI - 通过 Streamable HTTP
✅ 任何兼容 MCP 的客户端

开始使用

请按顺序完成以下步骤 — 最后,您将安装(或部署)好服务,设置好 SendGrid API 密钥,并连接 MCP 客户端。

无论您最终使用哪种客户端,实际请求路径都如下所示 — 有些客户端会通过 stdio 在本地启动服务,另一些则通过网络使用 Streamable HTTP 访问服务(MCP Market、可自托管),并在此基础上增加客户端身份验证选项:

                                ┌──────────┐
                                │  Client  │
                                └────┬─────┘
              ┌──────────────────────┴───────────────────┐
              │                                          │
           stdio (local subprocess)        HTTP (network)
              │               auth: none | token | oauth │
              │                                          │
              └──────────────────────┬───────────────────┘
                                     ▼
                           ┌────────────────────┐
                           │     MCP Server     │
                           │    (this repo)     │
                           └─────────┬──────────┘
                                     │  SENDGRID_API_KEY
                                     │  (always required, any transport)
                                     ▼
                           ┌────────────────────┐
                           │    SendGrid API    │
                           └────────────────────┘

无论选择哪种路径,都必须设置 SENDGRID_API_KEY。READ_ONLY=true (默认值)是 MCP 服务内部的另一道限制 — 请求进入后,它会阻止创建、更新、删除和发送工具,无论请求通过哪个分支到达。完整的可配置项列表,请参阅环境变量。

1. 安装服务

如果客户端会自行启动服务,请本地安装;如果客户端通过网络连接,请选择远程方式。

本地(stdio) — 适用于 Claude Desktop、Claude Code、Cline、Zed、Continue,或任何将服务作为子进程运行的客户端:

npm install -g sendgrid-mcp

这会全局安装 sendgrid-mcp 命令,MCP 客户端会将其作为子进程启动。需要 Node.js 20+。

远程(HTTP) — 无需本地安装;选择一种方式:

MCP Market(托管,无需安装)

MCP Market 会为你部署并托管此服务 — 无需本地安装,也无需在你的机器上管理环境变量。你仍需要一个 SendGrid API 密钥;你将在 MCP Market 中输入密钥,而不是输入到自己的 shell/配置中。

在 MCP Market 的 MCP Servers 页面中,从以下任一来源部署自定义 MCP:

  • GitHub — 选择 GitHub 来源,选择 Public 或 Private 仓库,粘贴 仓库 URL(https://github.com/deyikong/sendgrid-mcp),并选择 服务名称。
  • npm — 选择 npm 来源,输入软件包名称(sendgrid-mcp), 并选择服务名称。

从 GitHub 仓库部署 从 npm 软件包部署

无论选择哪种方式,MCP Market 都会为你构建并运行服务;准备就绪后,它会显示在 MCP Servers 下,状态为 Running。继续前往 配置 MCP 客户端,设置你的 凭据并连接。


自行托管(Streamable HTTP)

自行运行服务,并通过 Streamable HTTP 对外提供,而不是让 客户端在本地启动它 — 适用于 Claude 自定义连接器、OpenAI 的 Responses API mcp 工具 / Apps SDK,或任何其他远程客户端。

MCP 端点为 POST /mcp;GET /health 会返回供负载均衡器使用的状态文档。 请求以无状态方式处理(无需会话 ID), 这正是托管客户端所期望的方式。

下方的 none/token/oauth 并非连接的替代方式 — 它们是 HTTP 这扇新门上的三种不同门锁,如 上方的请求流程图所示。

快速开始(本地开发)
export SENDGRID_API_KEY="SG.your_api_key_here"
export MCP_TRANSPORT=http
export MCP_AUTH_MODE=token
export MCP_AUTH_TOKEN="$(openssl rand -hex 32)"

sendgrid-mcp
身份验证

将 MCP_AUTH_MODE 设置为以下一种模式:

模式适用场景要求
oauth生产环境 / 远程客户端MCP_OAUTH_ISSUER、MCP_OAUTH_AUDIENCE
token本地开发、简单的自行托管MCP_AUTH_TOKEN(16 个或更多字符)
none仅限环回开发— 在公共地址上绑定时会拒绝启动

OAuth 模式会使此服务成为 OAuth 2.1 资源服务器。它不会 签发或存储凭据 — 它会根据现有身份提供商(Auth0、Okta、Entra ID、Google、Stytch,……)发布的 JWKS, 验证由该身份提供商签发的访问令牌。

export MCP_AUTH_MODE=oauth
export MCP_OAUTH_ISSUER="https://your-tenant.auth0.com"
export MCP_OAUTH_AUDIENCE="https://mcp.example.com"
export MCP_OAUTH_REQUIRED_SCOPES="sendgrid:read"
export MCP_PUBLIC_URL="https://mcp.example.com"

除上述配置外,还必须设置 SENDGRID_API_KEY(参见入门指南中的图示) — OAuth 只控制谁可以访问服务,不控制服务 使用什么与 SendGrid 通信。

服务会在 /.well-known/oauth-protected-resource 发布 RFC 9728 受保护资源元数据,以便客户端自动发现你的授权服务器:未经身份验证的 请求会收到一个 401,其 WWW-Authenticate 标头指向该文档, 客户端读取文档后会将用户引导至你的 IdP 登录,并携带 获取的令牌重试。

如果令牌已过期、签名错误,或签发者或受众不符,令牌会被拒绝(401);如果有效令牌缺少必需的作用域,则会返回 403。

设置身份提供方

无论使用哪种提供方,你都需要配置相同的三项内容:颁发者 URL、受众(此 API 资源的稳定标识符),以及客户端将请求的作用域。以下是几个具体的配置指南:

Auth0
  1. 登录 Auth0 Dashboard,然后前往 Applications → APIs → Create API。
  2. 设置 Identifier——这是你的受众,例如 https://mcp.example.com。它不需要解析到任何内容,只需确保唯一即可。
  3. 在 API 的 Permissions 选项卡下,添加服务应要求的作用域,例如 sendgrid:read、sendgrid:write。
  4. 你的 Issuer URL 是租户域名,显示在 API 的 Settings 选项卡中:https://YOUR_TENANT.auth0.com/。
export MCP_OAUTH_ISSUER="https://YOUR_TENANT.auth0.com/"
export MCP_OAUTH_AUDIENCE="https://mcp.example.com"
export MCP_OAUTH_REQUIRED_SCOPES="sendgrid:read"
Okta
  1. 登录 Okta Admin Console,然后前往 Security → API → Authorization Servers。
  2. 使用 default 授权服务器,或创建一个新的授权服务器。其 Issuer URI 显示在该服务器的设置页面顶部,格式如下:https://{yourOktaDomain}/oauth2/{authServerId}。
  3. 在同一页面中,Audience 字段(默认为 api://default)就是要使用的受众——将其设为专属于此服务的值,例如 api://sendgrid-mcp。
  4. 打开 Scopes 选项卡并添加一个作用域,例如 sendgrid:read。
export MCP_OAUTH_ISSUER="https://YOUR_OKTA_DOMAIN/oauth2/YOUR_AUTH_SERVER_ID"
export MCP_OAUTH_AUDIENCE="api://sendgrid-mcp"
export MCP_OAUTH_REQUIRED_SCOPES="sendgrid:read"
Microsoft Entra ID (Azure AD)
  1. 在 Azure Portal 中,前往 Microsoft Entra ID → App registrations → New registration,将此 MCP 服务注册为资源。
  2. 打开新应用的 Expose an API 页面并设置 Application ID URI——这将成为你的受众,例如 api://<client-id>。
  3. 在同一页面中,点击 Add a scope 定义一个作用域,例如 sendgrid.read。
  4. 你的 Issuer URL 为 https://login.microsoftonline.com/{tenant-id}/v2.0,其中 {tenant-id} 是应用 Overview 页中的目录(租户)ID。
export MCP_OAUTH_ISSUER="https://login.microsoftonline.com/YOUR_TENANT_ID/v2.0"
export MCP_OAUTH_AUDIENCE="api://YOUR_CLIENT_ID"
export MCP_OAUTH_REQUIRED_SCOPES="sendgrid.read"

其他提供方(Google Identity Platform、Stytch 等)也遵循相同的模式:找到 OpenID Connect 颁发者(通常发布在 <issuer>/.well-known/openid-configuration),为此服务定义受众/资源标识符,并为其创建作用域。

无论使用哪种提供方,还要将 MCP_PUBLIC_URL 设置为服务可从外部访问的 URL(例如 https://mcp.example.com)——客户端会在 OAuth 发现过程中使用它。

TLS

可以在进程内终止 TLS:

export TLS_KEY_FILE=/etc/ssl/private/mcp.key
export TLS_CERT_FILE=/etc/ssl/certs/mcp.crt
export TLS_CA_FILE=/etc/ssl/certs/chain.pem   # optional intermediates

……也可以在代理处终止 TLS,并告知服务信任转发的标头:

export TRUST_PROXY=true
export MCP_PUBLIC_URL="https://mcp.example.com"

默认情况下,TRUST_PROXY 处于关闭状态,因为 X-Forwarded-* 标头可由客户端控制,除非你控制的代理会覆盖它们。在进程内模式下,强制要求最低使用 TLS 1.2。

连接客户端

OpenAI(Responses API):

{
  "model": "gpt-5",
  "tools": [{
    "type": "mcp",
    "server_label": "sendgrid",
    "server_url": "https://mcp.example.com/mcp",
    "authorization": "ACCESS_TOKEN"
  }],
  "input": "List my SendGrid automations"
}

Claude(自定义连接器): 将 https://mcp.example.com/mcp 添加为自定义连接器。在 oauth 模式下,Claude 会执行发现流程并提示用户登录;在 token 模式下,直接提供 bearer token。

安全

服务器会拒绝在存在可能悄然暴露你的 SendGrid 账户的配置错误时启动,而不会以弱于你预期的模式运行:

  • 绑定到非环回地址,但既未启用 TLS,也未设置 TRUST_PROXY
  • MCP_AUTH_MODE=none,但绑定地址不是环回地址
  • MCP_PUBLIC_URL 使用 http://,且地址不是环回地址
  • 未设置 MCP_AUTH_TOKEN 或其长度不足,或者在 oauth 模式下未设置签发方和受众
  • TLS_KEY_FILE 和 TLS_CERT_FILE 只设置了其中一个

此外:

  • 保持 READ_ONLY=true,除非你需要写入和发送操作。这是限制影响范围最有效的做法——它决定了泄露的令牌暴露的是分析数据,还是能从你的域名发送邮件。
  • 设置 MCP_ALLOWED_HOSTS / MCP_ALLOWED_ORIGINS,以启用 DNS 重绑定保护;对于可从浏览器访问的本地绑定服务,这一点尤为重要。
  • 将 SendGrid API 密钥的权限范围限制为此服务所需的权限;该密钥才是每个请求背后的真实凭据。

2. 获取 SendGrid API 密钥
  1. 前往 SendGrid API Keys
  2. 点击“Create API Key”
  3. 选择“Full Access”或指定具体权限
  4. 复制生成的密钥(以 SG. 开头)
3. 配置 MCP 客户端
MCP Market

部署好服务后(参见安装服务), 设置凭据并连接客户端。

设置环境变量

打开已部署的服务 → Variables 标签页 → My Credentials,然后 填写:

MCP Market Variables 标签页,显示 SENDGRID_API_KEY 和其他凭据

变量必填说明
SENDGRID_API_KEY✅你的 SendGrid API 密钥(以 SG. 开头)
MCP_SERVER_NAME❌用于识别的服务名称
MCP_SERVER_VERSION❌服务版本
LOG_LEVEL❌日志级别(debug、info、warn、error)
REQUEST_TIMEOUT❌API 请求超时时间,单位为毫秒
READ_ONLY❌启用只读模式(true/false)

每个字段都会单独保存——只有 SENDGRID_API_KEY 是必填项。

连接客户端

在服务页面上点击 + Connect。MCP Market 提供 Claude Desktop、Claude Code、Codex CLI、Cursor、VS Code、Windsurf、Cline、JetBrains、Gemini CLI、Amazon Q、Goose 和 Continue 的一键安装选项——选择你的客户端并按照提示操作。

MCP Market 的 Install server 面板,提供客户端一键安装选项

对于其他客户端,请使用 Connection URL 选项,它会提供一个专属于你部署的 Streamable HTTP 端点。以下示例使用 deyikong/sendgrid-mcp 进行说明——你的端点会使用你自己的用户名和服务名称:

https://link.mcpmarket.com/<your-username>/<your-server-name>/mcp

像配置其他可自托管端点一样进行配置,例如:

# Claude Code
claude mcp add --transport http sendgrid https://link.mcpmarket.com/<your-username>/<your-server-name>/mcp

# Codex CLI
codex mcp add sendgrid --url https://link.mcpmarket.com/<your-username>/<your-server-name>/mcp

MCP Market 负责管理已部署服务的托管、TLS 和可用性;有关账户、账单或部署的问题,请直接联系 MCP Market,而非本代码仓库。


Claude Desktop

支持原生 MCP 的 Claude 官方桌面应用。

配置文件位置:

  • macOS:~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows:%APPDATA%/Claude/claude_desktop_config.json

配置:

{
  "mcpServers": {
    "sendgrid": {
      "command": "sendgrid-mcp",
      "env": {
        "SENDGRID_API_KEY": "SG.your_api_key_here",
        "READ_ONLY": "true"
      }
    }
  }
}

可选配置:

{
  "mcpServers": {
    "sendgrid": {
      "command": "sendgrid-mcp",
      "env": {
        "SENDGRID_API_KEY": "SG.your_api_key_here",
        "READ_ONLY": "false",
        "LOG_LEVEL": "info",
        "REQUEST_TIMEOUT": "30000"
      }
    }
  }
}

配置完成后:

  1. 保存文件
  2. 重启 Claude Desktop
  3. SendGrid MCP 服务将在 Claude 中可用

Claude Code (CLI)

支持 MCP 的 Claude 官方命令行界面。

安装:

npm install -g @anthropic-ai/claude-code

配置文件位置:

  • 所有平台:~/.claude/config.json

配置:

{
  "mcpServers": {
    "sendgrid": {
      "command": "sendgrid-mcp",
      "env": {
        "SENDGRID_API_KEY": "SG.your_api_key_here",
        "READ_ONLY": "true"
      }
    }
  }
}

用法:

# Start Claude Code with SendGrid MCP
claude

# The SendGrid tools will be automatically available
# Ask Claude: "List my SendGrid automations"

Cline (VS Code Extension)

支持 MCP 的热门 VS Code 扩展。

安装:

  1. 从 VS Code marketplace 安装 Cline 扩展
  2. 打开 Cline 设置

配置文件:

  • 打开 VS Code 设置
  • 搜索 "Cline: MCP Settings"
  • 编辑 MCP 配置 JSON

配置:

{
  "mcpServers": {
    "sendgrid": {
      "command": "sendgrid-mcp",
      "env": {
        "SENDGRID_API_KEY": "SG.your_api_key_here",
        "READ_ONLY": "true"
      }
    }
  }
}

Zed Editor

内置 AI 和 MCP 支持的现代代码编辑器。

配置文件位置:

  • macOS/Linux:~/.config/zed/settings.json
  • Windows:%APPDATA%/Zed/settings.json

配置:

{
  "context_servers": {
    "sendgrid-mcp": {
      "command": "sendgrid-mcp",
      "env": {
        "SENDGRID_API_KEY": "SG.your_api_key_here",
        "READ_ONLY": "true"
      }
    }
  }
}

Continue (VS Code Extension)

支持 MCP 的 VS Code 开源自动驾驶助手。

配置文件位置:

  • 所有平台:~/.continue/config.json

配置:

{
  "experimental": {
    "modelContextProtocolServers": [
      {
        "command": "sendgrid-mcp",
        "env": {
          "SENDGRID_API_KEY": "SG.your_api_key_here",
          "READ_ONLY": "true"
        }
      }
    ]
  }
}

Generic MCP Client

适用于以上未列出的任何兼容 MCP 的客户端:

命令行:

# With environment variables
SENDGRID_API_KEY="SG.your_api_key_here" READ_ONLY="true" sendgrid-mcp

配置模板:

{
  "command": "sendgrid-mcp",
  "env": {
    "SENDGRID_API_KEY": "SG.your_api_key_here",
    "READ_ONLY": "true"
  }
}

## 环境变量

服务器完全通过环境变量进行配置。SENDGRID_API_KEY 是唯一必需的变量。

变量必需描述默认值
SENDGRID_API_KEY✅你的 SendGrid API 密钥(以 SG. 开头)-
READ_ONLY❌启用只读模式(true/false)true
MCP_SERVER_NAME❌用于标识的服务器名称sendgrid-mcp
MCP_SERVER_VERSION❌服务器版本1.0.0
LOG_LEVEL❌日志级别(debug、info、warn、error)info
REQUEST_TIMEOUT❌API 请求超时时间,单位为毫秒30000

READ_ONLY 默认为 true。 在此模式下,所有工具都会注册并显示,但创建、更新、删除或发送操作会在运行时被阻止,并显示明确的错误消息——只有列表、获取、搜索和浏览器链接工具会实际运行。在完成设置期间,这是最安全的默认选项。关于被阻止操作的完整说明,请参阅只读模式;准备好允许写入和发送操作后,将 READ_ONLY=false。

这些变量在 MCP 客户端的配置中设置(作为 env 块)——请参阅配置 MCP 客户端。可自托管的 HTTP 模式有自己的一组变量(传输、身份验证、TLS)——请参阅安装服务器。

只读模式

只读模式

为确保安全,SendGrid MCP 服务默认以只读模式(READ_ONLY=true)运行。所有工具都会注册并可用,但可变更操作会在运行时被阻止,并显示有帮助的错误消息。

只读模式的工作方式

当 READ_ONLY=true(默认值)时:

  • 所有工具都会注册并对 AI 助手可见
  • 非变更操作正常运行(列表、获取、搜索、打开浏览器链接)
  • 变更操作会被阻止,并显示明确的错误消息:
    ❌ Operation blocked: Server is running in READ_ONLY mode. Set READ_ONLY=false in your environment to enable write operations.
    
只读模式下安全的操作

当 READ_ONLY=true 时,以下 32 项操作可正常运行:

自动化与营销活动:

  • list_automations、get_automation、open_automation_creator、open_automation_editor
  • list_single_sends、get_single_send、open_single_send_creator、open_single_send_stats

联系人、列表与细分:

  • list_contacts、get_contact、search_contacts、search_contacts_by_emails
  • list_email_lists
  • list_segments、open_segment_creator
  • list_custom_fields

发件人:

  • list_senders、open_csv_uploader

模板:

  • list_templates、get_template、get_template_version、open_template_editor

统计信息(均按设计为只读):

  • get_global_stats、get_stats_overview、get_stats_by_browser、get_stats_by_client_type、get_stats_by_device_type、get_stats_by_mailbox_provider、get_stats_by_country、get_category_stats、get_subuser_stats

实用工具:

  • get_scopes
只读模式下被阻止的操作

当 READ_ONLY=true 时,以下 26 项操作会被阻止:

  • update_automation_settings、update_automation_step、delete_automation
  • create_contact、update_contact、delete_contact
  • create_contact_with_lists、remove_contact_from_lists
  • create_email_list、update_email_list、delete_email_list
  • create_custom_field、update_custom_field、delete_custom_field
  • create_sender、delete_sender
  • update_segment、delete_segment
  • create_template、update_template、delete_template
  • create_template_version、update_template_version、delete_template_version
  • create_html_template
  • send_mail
完全访问模式

若要启用创建、更新、删除和发送操作,请在 MCP 客户端的 env 块中设置 READ_ONLY=false:

{
  "env": {
    "SENDGRID_API_KEY": "SG.your_api_key_here",
    "READ_ONLY": "false"
  }
}

这样即可正常执行所有变更操作,同时保留所有读取操作。

⚠️ 安全提示: 只有在需要写入权限且信任服务器运行环境时,才应关闭只读模式。

## 可用工具

该服务公开了 154 个工具,分为 22 个类别。无论是否启用 READ_ONLY 模式,所有工具都会注册 — 默认会阻止哪些工具,请参阅只读模式。

📚 如果要查看可以直接对 Claude 说的自然语言提示词,请参阅 EXAMPLE_PROMPTS.md。 以下示例展示了底层 JSON 工具调用。

工具摘要
类别工具数只读可变更
营销自动化743
单次发送活动440
联系人 CRUD 操作743
电子邮件列表管理615
细分与自定义字段835
发件人与导入422
动态模板1147
邮件发送101
电子邮件统计与分析990
实用工具110
抑制项211011
域名身份验证与链接品牌化1358
事件与入站解析 Webhook1257
跟踪设置954
邮件设置1165
API 密钥(只读)220
警报(只读)220
团队成员(只读)330
专用 IP(只读)11110
设计库945
电子邮件地址验证101
邮件搜索220
总计1548767

API 密钥、警报、团队成员和专用 IP 在此服务中刻意设为只读,而且完全未开放 SSO/证书管理 — 关于原因,请参阅有意不支持的操作。

营销自动化
  • list_automations - 列出所有营销自动化及其元数据
  • get_automation - 获取特定自动化的详细信息
  • update_automation_settings - 更新自动化级别的设置(名称、状态)
  • update_automation_step - 更新单个步骤的设置(状态、等待时间)
  • delete_automation - 永久删除自动化
  • open_automation_creator - 在浏览器中打开自动化创建器
  • open_automation_editor - 打开特定自动化的编辑器
示例

示例 — 获取自动化详情:

{
  "tool": "get_automation",
  "arguments": {
    "automation_id": "automation_id_here"
  }
}

示例 — 暂停整个自动化:

{
  "tool": "update_automation_settings",
  "arguments": {
    "automation_id": "automation_id_here",
    "status": "paused"
  }
}

示例 — 更新单个步骤(状态、等待时间):

{
  "tool": "update_automation_step",
  "arguments": {
    "automation_id": "automation_id_here",
    "step_id": "step_id_here",
    "step_status": "active",
    "wait_time": 1440
  }
}

示例 — 删除自动化:

{
  "tool": "delete_automation",
  "arguments": {
    "automation_id": "automation_id_here"
  }
}
单次发送活动
  • list_single_sends - 列出所有单次发送活动及其元数据
  • get_single_send - 获取单次发送活动的详细内容和设置
  • open_single_send_creator - 在浏览器中打开活动创建器以进行视觉设计
  • open_single_send_stats - 查看详细的活动效果统计数据
示例

示例 — 获取活动内容和设置:

{
  "tool": "get_single_send",
  "arguments": {
    "singlesend_id": "singlesend_id_here"
  }
}
### 联系人 CRUD 操作
  • list_contacts - 分页并筛选联系人列表
  • get_contact - 获取特定联系人的详细信息
  • create_contact - 创建包含自定义字段的新联系人
  • update_contact - 更新现有联系人的信息和自定义数据
  • delete_contact - 永久删除联系人并清理相关数据
  • search_contacts - 使用高级查询条件搜索联系人
  • search_contacts_by_emails - 按电子邮件地址搜索特定联系人
示例

示例 — 创建新联系人:

{
  "tool": "create_contact",
  "arguments": {
    "contacts": [
      {
        "email": "[email protected]",
        "first_name": "Jane",
        "last_name": "Smith"
      }
    ]
  }
}

示例 — 按电子邮件搜索联系人:

{
  "tool": "search_contacts_by_emails",
  "arguments": {
    "emails": ["[email protected]", "[email protected]"]
  }
}

示例 — 使用查询条件搜索联系人:

{
  "tool": "search_contacts",
  "arguments": {
    "query": "email LIKE '@example.com'",
    "page_size": 10
  }
}

示例 — 更新联系人:

{
  "tool": "update_contact",
  "arguments": {
    "contacts": [
      {
        "id": "contact_id_here",
        "first_name": "John",
        "last_name": "Updated"
      }
    ]
  }
}

示例 — 删除联系人:

{
  "tool": "delete_contact",
  "arguments": {
    "contact_ids": ["contact_id_1", "contact_id_2"]
  }
}
电子邮件列表管理
  • list_email_lists - 列出所有电子邮件列表
  • create_email_list - 创建新的电子邮件列表
  • update_email_list - 更新电子邮件列表属性
  • delete_email_list - 删除电子邮件列表
  • create_contact_with_lists - 创建联系人并将其分配到列表
  • remove_contact_from_lists - 将联系人从特定列表中移除
示例

示例 — 列出电子邮件列表:

{
  "tool": "list_email_lists",
  "arguments": {
    "page_size": 100
  }
}

示例 — 重命名电子邮件列表:

{
  "tool": "update_email_list",
  "arguments": {
    "list_id": "list_id_here",
    "name": "Updated List Name"
  }
}

示例 — 从列表中移除联系人:

{
  "tool": "remove_contact_from_lists",
  "arguments": {
    "list_id": "list_id_here",
    "contact_ids": ["contact_id_1", "contact_id_2"]
  }
}

示例 — 删除电子邮件列表:

{
  "tool": "delete_email_list",
  "arguments": {
    "list_id": "list_id_here"
  }
}
细分群组与自定义字段
  • list_segments - 列出动态细分群组及其父级关系和条件
  • open_segment_creator - 在浏览器中打开细分群组创建器,以可视化方式构建查询
  • update_segment - 更新现有细分群组的名称或查询条件,并实时刷新
  • delete_segment - 删除现有细分群组(不会影响联系人)
  • list_custom_fields - 列出自定义字段定义及其数据类型
  • create_custom_field - 创建新的自定义字段(Text、Number、Date 类型)
  • update_custom_field - 更新现有自定义字段定义
  • delete_custom_field - 删除自定义字段定义并清理相关数据
示例

示例 — 重命名细分群组:

{
  "tool": "update_segment",
  "arguments": {
    "segment_id": "segment_id_here",
    "name": "Updated Segment Name"
  }
}

示例 — 更新细分群组的查询条件:

{
  "tool": "update_segment",
  "arguments": {
    "segment_id": "segment_id_here",
    "query_dsl": "{\"and\": [{\"field\": \"email\", \"value\": \"@example.com\", \"operator\": \"like\"}]}"
  }
}

示例 — 删除细分群组:

{
  "tool": "delete_segment",
  "arguments": {
    "segment_id": "segment_id_here"
  }
}

示例 — 创建自定义字段:

{
  "tool": "create_custom_field",
  "arguments": {
    "name": "customer_tier",
    "field_type": "Text"
  }
}

示例 — 更新自定义字段:

{
  "tool": "update_custom_field",
  "arguments": {
    "field_id": "field_id_here",
    "name": "customer_level"
  }
}

示例 — 删除自定义字段:

{
  "tool": "delete_custom_field",
  "arguments": {
    "field_id": "field_id_here"
  }
}
发件人与导入
  • list_senders - 列出已验证的发件人身份
  • create_sender - 创建新的发件人身份
  • delete_sender - 删除已验证的发件人身份
  • open_csv_uploader - 打开 CSV 上传界面
示例

示例 — 创建发件人身份:

{
  "tool": "create_sender",
  "arguments": {
    "nickname": "Marketing Team",
    "from": { "email": "[email protected]", "name": "Your Company" },
    "reply_to": { "email": "[email protected]", "name": "Your Company" },
    "address": "123 Main St",
    "city": "Denver",
    "state": "CO",
    "zip": "80202",
    "country": "United States"
  }
}

示例 — 删除发件人身份:

{
  "tool": "delete_sender",
  "arguments": {
    "sender_id": "sender_id_here"
  }
}
### 动态模板
  • list_templates - 列出所有动态模板和旧版模板
  • get_template - 获取特定模板的详细信息,包括所有版本
  • create_template - 创建新的动态模板
  • update_template - 更新模板名称和设置
  • delete_template - 删除模板及其所有版本
  • create_template_version - 使用 HTML 内容和设置创建新版本
  • get_template_version - 获取特定模板版本的详细信息
  • update_template_version - 更新版本内容、主题和设置
  • delete_template_version - 删除特定模板版本
  • create_html_template - 一步创建包含 HTML 内容的完整模板(非常适合 AI Agent)
  • open_template_editor - 在浏览器中打开 SendGrid 的可视化模板编辑器

模板支持用于动态内容的 Handlebars 语法({{variable}}、{{#each}}、{{#if}})、内联 CSS 的响应式 HTML、每个模板最多 300 个版本、测试数据预览,以及自动生成纯文本。

示例

示例 — 一步创建完整模板(最适合 AI Agent):

{
  "tool": "create_html_template",
  "arguments": {
    "template_name": "Welcome Email",
    "version_name": "Version 1.0",
    "subject": "Welcome to {{companyName}}, {{firstName}}!",
    "html_content": "<!DOCTYPE html><html><head><meta charset=\"utf-8\"><title>Welcome</title></head><body style=\"font-family: Arial, sans-serif; max-width: 600px; margin: 0 auto;\"><h1 style=\"color: #333;\">Welcome {{firstName}}!</h1><p>Thank you for joining {{companyName}}. We're excited to have you on board.</p></body></html>",
    "test_data": "{\"firstName\":\"John\",\"companyName\":\"Acme Corp\"}"
  }
}

示例 — 添加包含 HTML 内容的新版本:

{
  "tool": "create_template_version",
  "arguments": {
    "template_id": "your_template_id",
    "name": "Newsletter v1.0",
    "subject": "{{month}} Newsletter - {{companyName}}",
    "html_content": "<!DOCTYPE html><html><head><meta charset=\"utf-8\"></head><body><h1>{{month}} Newsletter</h1>{{#each articles}}<div><h2>{{title}}</h2><p>{{summary}}</p><a href=\"{{link}}\">Read More</a></div>{{/each}}</body></html>",
    "test_data": "{\"month\":\"January\",\"companyName\":\"Acme\",\"articles\":[{\"title\":\"Article 1\",\"summary\":\"Summary here\",\"link\":\"https://example.com\"}]}"
  }
}
邮件发送
  • send_mail - 发送事务性邮件(支持使用动态模板数据的模板)
示例

示例 — 发送简单邮件:

{
  "tool": "send_mail",
  "arguments": {
    "personalizations": [
      {
        "to": [{"email": "[email protected]", "name": "John Doe"}],
        "subject": "Hello from SendGrid MCP!"
      }
    ],
    "from": {"email": "[email protected]", "name": "Your Name"},
    "content": [
      {
        "type": "text/plain",
        "value": "Hello! This email was sent via SendGrid MCP server."
      }
    ]
  }
}

示例 — 使用动态模板发送邮件:

{
  "tool": "send_mail",
  "arguments": {
    "personalizations": [
      {
        "to": [{"email": "[email protected]", "name": "John Doe"}],
        "dynamic_template_data": {
          "firstName": "John",
          "companyName": "Acme Corp",
          "orderNumber": "12345",
          "items": [
            {"name": "Product A", "price": "29.99"},
            {"name": "Product B", "price": "19.99"}
          ]
        }
      }
    ],
    "from": {"email": "[email protected]", "name": "Your Company"},
    "template_id": "d-1234567890abcdef1234567890abcdef"
  }
}
邮件统计与分析
  • get_global_stats - 获取整体邮件效果指标
  • get_stats_overview - 获取多个维度的综合统计数据
  • get_stats_by_browser - 按浏览器类型细分的统计数据(Chrome、Firefox、Safari 等)
  • get_stats_by_client_type - 按邮件客户端类型细分的统计数据(桌面、移动设备、Webmail)
  • get_stats_by_device_type - 按设备类型细分的统计数据(桌面、移动设备、平板电脑)
  • get_stats_by_mailbox_provider - 按邮箱服务商细分的统计数据(Gmail、Outlook、Yahoo 等)
  • get_stats_by_country - 按国家和州/省细分的统计数据
  • get_category_stats - 特定邮件类别的统计数据(13 个月历史记录)
  • get_subuser_stats - 特定子用户账户的统计数据

跟踪投递率、打开率和点击率;退信率(硬退信/软退信)、垃圾邮件举报和取消订阅;地理位置效果和设备偏好;邮件客户端兼容性和浏览器渲染效果;以及特定服务商的送达能力。

示例

示例 — 全局邮件统计数据:

{
  "tool": "get_global_stats",
  "arguments": {
    "start_date": "2024-01-01",
    "end_date": "2024-01-31",
    "aggregated_by": "day"
  }
}

示例 — 按邮箱服务商统计:

{
  "tool": "get_stats_by_mailbox_provider",
  "arguments": {
    "start_date": "2024-01-01",
    "end_date": "2024-01-07",
    "aggregated_by": "day",
    "mailbox_providers": "gmail.com,outlook.com,yahoo.com"
  }
}

示例 — 地理位置效果统计数据:

{
  "tool": "get_stats_by_country",
  "arguments": {
    "start_date": "2024-01-01",
    "end_date": "2024-01-31",
    "country": "US",
    "aggregated_by": "week"
  }
}

示例 — 综合统计概览:

{
  "tool": "get_stats_overview",
  "arguments": {
    "start_date": "2024-01-01",
    "end_date": "2024-01-07",
    "aggregated_by": "day",
    "include_subusers": false
  }
}
实用工具
  • get_scopes - 获取可用的 API 权限范围(无需参数)
抑制列表
  • list_suppression_groups - 列出账户中的所有退订(抑制)组
  • create_suppression_group - 创建新的退订(抑制)组
  • get_suppression_group - 获取特定退订(抑制)组的详细信息
  • update_suppression_group - 更新现有抑制组的名称、描述或默认状态
  • delete_suppression_group - 永久删除退订(抑制)组。此操作无法撤销。
  • list_group_suppressions - 列出已退订特定抑制组的所有电子邮件地址
  • add_group_suppressions - 将一个或多个电子邮件地址添加到特定抑制组的退订列表
  • remove_group_suppression - 从特定抑制组的退订列表中移除单个电子邮件地址。此操作只会重新允许发送归属此组类别的邮件,不会在全局范围内重新订阅。
  • list_global_suppressions - 列出账户级全局退订列表中的电子邮件地址,可按时间范围筛选
  • add_global_suppression - 将收件人添加到账户级全局退订列表中,他们将不再收到此账户发送的所有非事务性邮件
  • get_global_suppression - 检查特定电子邮件地址是否在账户级全局退订列表中
  • delete_global_suppression - 从账户级全局抑制列表中移除电子邮件地址,从而重新订阅非事务性邮件
  • list_bounces - 列出所有退信的电子邮件地址,可按时间范围筛选
  • get_bounce - 获取特定电子邮件地址的退信事件记录
  • delete_bounce - 移除电子邮件地址的退信记录,使该地址可以再次接收邮件
  • list_blocks - 列出当前位于阻止列表中的所有电子邮件地址,可按时间范围筛选
  • delete_block - 从阻止列表中移除电子邮件地址,使该地址可以再次接收邮件
  • list_spam_reports - 列出所有举报邮件为垃圾邮件的电子邮件地址,可按时间范围筛选
  • delete_spam_report - 从垃圾邮件举报列表中移除电子邮件地址,使该地址可以再次接收邮件
  • list_invalid_emails - 列出所有被标记为无效的电子邮件地址,可按时间范围筛选
  • delete_invalid_email - 从无效电子邮件列表中移除电子邮件地址,使该地址可以再次接收邮件
域名身份验证与链接品牌化
  • list_authenticated_domains - 列出所有配置为发送邮件的已验证(白标)域名
  • get_authenticated_domain - 获取特定已验证域名的详细信息,包括其 DNS 记录
  • create_authenticated_domain - 为通过自定义域名发送邮件设置域名身份验证(SPF/DKIM)
  • update_authenticated_domain - 更新现有已验证域名的自定义 SPF 或默认设置
  • delete_authenticated_domain - 永久删除已验证域名。此操作无法撤销。
  • validate_authenticated_domain - 检查域名的 DNS 记录是否已正确配置身份验证
  • get_default_authenticated_domain - 获取当前设为默认发送域名的已验证域名
  • list_branded_links - 列出所有配置为点击跟踪的品牌化链接(链接白标)
  • get_branded_link - 获取特定品牌化链接的详细信息,包括其 DNS 记录
  • create_branded_link - 设置品牌化链接跟踪(通过发件人自己的域名而非 sendgrid.net 跟踪点击)
  • update_branded_link - 更新现有品牌化链接的默认设置
  • delete_branded_link - 永久删除品牌化链接。此操作无法撤销。
  • validate_branded_link - 检查品牌化链接的 DNS 记录是否已正确配置
事件与入站解析 Webhook
  • list_event_webhooks - 列出账户上配置的所有事件 Webhook 设置
  • get_event_webhook - 按 ID 获取特定事件 Webhook 的配置
  • create_event_webhook - 创建新的事件 Webhook,将电子邮件事件(已送达、退信、已打开、已点击等)通过 POST 发送到指定 URL
  • update_event_webhook - 更新现有事件 Webhook 的配置
  • delete_event_webhook - 永久删除事件 Webhook 配置。此操作无法撤销。
  • test_event_webhook - 向指定的 Webhook URL 发送测试事件负载,以验证其可访问且配置正确
  • list_inbound_parse_settings - 列出账户上配置的所有入站解析 Webhook 设置
  • get_inbound_parse_setting - 获取特定主机名的入站解析 Webhook 配置
  • create_inbound_parse_setting - 配置入站电子邮件解析,使发送到指定主机名的邮件通过 POST 发送到指定 URL
  • update_inbound_parse_setting - 更新特定主机名的入站解析 Webhook 配置
  • delete_inbound_parse_setting - 永久删除某个主机名的入站解析 Webhook 配置。此操作无法撤销。
  • get_inbound_parse_stats - 获取指定日期范围内解析的入站电子邮件数量统计信息
跟踪设置
  • get_tracking_settings - 通过一次调用获取所有跟踪设置(点击、打开、订阅、Google Analytics)
  • get_click_tracking_settings - 获取当前的点击跟踪设置
  • update_click_tracking_settings - 启用或禁用电子邮件中链接的点击跟踪
  • get_google_analytics_settings - 获取当前的 Google Analytics 跟踪设置
  • update_google_analytics_settings - 更新 Google Analytics 跟踪设置,包括 UTM 活动、内容、媒介、来源和词语值
  • get_open_tracking_settings - 获取当前的打开跟踪设置
  • update_open_tracking_settings - 启用或禁用打开跟踪;该功能会插入一个不可见像素,以记录电子邮件何时被打开
  • get_subscription_tracking_settings - 获取当前的订阅跟踪设置
  • update_subscription_tracking_settings - 更新订阅跟踪设置,包括取消订阅链接内容、落地页、URL 和替换标签
邮件设置
  • get_all_mail_settings - 通过一次调用获取所有邮件设置(地址白名单、退信清理、页脚、转发退信、转发垃圾邮件等)
  • get_address_whitelist_settings - 获取当前的地址白名单邮件设置,该设置用于控制哪些电子邮件地址或域名可绕过所有抑制列表
  • update_address_whitelist_settings - 更新地址白名单设置,用于控制哪些电子邮件地址或域名可绕过所有抑制列表
  • get_bounce_purge_settings - 获取当前的退信清理邮件设置,该设置会在配置的天数后自动清理旧的退信记录
  • update_bounce_purge_settings - 更新退信清理设置,该设置会在配置的天数后自动清理旧的退信记录
  • get_footer_settings - 获取当前的页脚邮件设置,该设置会为每封外发电子邮件添加页脚
  • update_footer_settings - 更新页脚设置,该设置会为每封外发电子邮件添加页脚
  • get_forward_bounce_settings - 获取当前的转发退信邮件设置,该设置会将退信通知转发到指定的电子邮件地址
  • update_forward_bounce_settings - 更新转发退信设置,该设置会将退信通知转发到指定的电子邮件地址
  • get_forward_spam_settings - 获取当前的转发垃圾邮件设置,该设置会将垃圾邮件报告通知转发到指定的电子邮件地址
  • update_forward_spam_settings - 更新转发垃圾邮件设置,该设置会将垃圾邮件报告通知转发到指定的电子邮件地址
API 密钥(只读)
  • list_api_keys - 列出账户中的所有 API 密钥(仅名称和 ID,不包括密钥值)
  • get_api_key - 获取特定 API 密钥的详情,包括其作用范围
警报(只读)
  • list_alerts - 列出账户中配置的所有用量/统计警报
  • get_alert - 获取特定警报的详情
团队成员(只读)
  • list_teammates - 列出账户中的所有团队成员(用户)
  • get_teammate - 获取特定团队成员的详情,包括其权限范围
  • list_pending_teammates - 列出尚未接受的待处理团队成员邀请
专用 IP(只读)
  • list_ip_addresses - 列出分配给账户的所有 IP 地址
  • get_ip_address - 获取特定 IP 地址的详情,包括其预热状态和分配的子用户
  • list_assigned_ips - 列出当前分配给子用户的所有 IP 地址
  • list_ip_pools - 列出账户中的所有 IP 池
  • get_ip_pool - 获取特定 IP 池的详情,包括其中包含的 IP 地址
  • get_remaining_ips - 获取可供购买的额外专用 IP 地址数量及其费用
  • list_ip_warmups - 列出当前处于预热流程中的所有 IP 地址
  • get_ip_warmup_status - 获取特定 IP 地址的预热状态
  • list_allowed_ips - 列出获准通过 API/UI 访问账户的 IP 地址(访问允许列表)
  • get_allowed_ip - 获取访问允许列表中特定条目的详情
  • list_access_activity - 列出近期的账户访问尝试(成功和被拦截的登录/API 调用)
设计库
  • list_designs - 列出设计库中的所有自定义电子邮件设计
  • create_design - 使用原始 HTML 在设计库中创建新的自定义电子邮件设计
  • get_design - 获取设计库中特定设计的详情
  • update_design - 更新设计库中现有设计的内容或元数据
  • delete_design - 从设计库中永久删除自定义设计。此操作无法撤销。
  • duplicate_design - 在设计库中创建现有设计的副本
  • list_prebuilt_designs - 列出 SendGrid 内置的预制设计模板
  • get_prebuilt_design - 获取 SendGrid 内置的某个预制设计的详情
  • duplicate_prebuilt_design - 创建 SendGrid 内置预制设计的可编辑副本
电子邮件地址验证
  • validate_email - 使用 SendGrid 的电子邮件地址验证 API 检查电子邮件地址是否有效且可能成功送达(每次调用都会消耗一个计费验证额度)
消息搜索
  • search_email_activity - 使用 SendGrid 的 SGQL 筛选语法搜索已发送邮件的活动(例如按收件人、状态或主题搜索)——可用于排查特定邮件未能送达的原因
  • get_message_details - 根据邮件 ID 获取单封已发送邮件的完整送达事件历史记录和详情

可用资源

  • sendgrid://automations - 营销自动化数据
  • sendgrid://singlesends - 单次发送营销活动数据
  • sendgrid://lists - 电子邮件列表数据
  • sendgrid://contacts - 联系人分群数据
  • sendgrid://suppressions - 抑制列表(退信、垃圾邮件等)
  • sendgrid://account - 账户资料信息
  • sendgrid://stats - 全局电子邮件统计数据和性能指标(30 天概览)
  • sendgrid://stats/browsers - 按浏览器类型划分的电子邮件统计数据(7 天数据)
  • sendgrid://stats/devices - 按设备类型划分的电子邮件统计数据(7 天数据)
  • sendgrid://stats/geography - 按地理位置划分的电子邮件统计数据(7 天数据)
  • sendgrid://stats/providers - 按邮箱服务提供商划分的电子邮件统计数据(7 天数据)

可用提示词

  • sendgrid_automation_help - 获取营销自动化方面的帮助
  • sendgrid_campaign_help - 获取单次发送营销活动方面的帮助
  • sendgrid_contacts_help - 获取全面联系人管理方面的帮助
  • sendgrid_list_management_help - 获取电子邮件列表 CRUD 操作方面的帮助
  • sendgrid_update_list_help - 获取更新/重命名电子邮件列表方面的帮助
  • sendgrid_contact_crud_help - 获取联系人创建/读取/更新/删除操作方面的帮助
  • sendgrid_custom_fields_help - 获取自定义字段定义管理方面的帮助
  • sendgrid_segment_management_help - 获取动态联系人细分管理方面的帮助
  • sendgrid_sender_management_help - 获取发件人身份管理方面的帮助
  • sendgrid_templates_help - 获取创建和管理动态电子邮件模板方面的帮助
  • sendgrid_suppressions_help - 获取抑制列表方面的帮助
  • sendgrid_settings_help - 获取账户设置方面的帮助
  • sendgrid_mail_send_help - 获取发送电子邮件方面的帮助
  • sendgrid_stats_help - 获取分析电子邮件效果和统计数据方面的帮助

开发与贡献

本节面向希望修改服务或参与开发的开发者。

开发环境设置、项目结构和贡献指南
前置条件
  • Node.js 20+ 和 npm
  • 拥有 API 密钥的 SendGrid 账户
  • Git
开发环境设置
# Clone the repository
git clone https://github.com/deyikong/sendgrid-mcp.git
cd sendgrid-mcp

# Install dependencies
npm install

# Build the project
npm run build

# Link for local development
npm link

# Test the local build
sendgrid-mcp

在 MCP 客户端中使用本地构建版本(而不是通过 npm 安装的二进制文件):

{
  "mcpServers": {
    "sendgrid": {
      "command": "node",
      "args": ["/absolute/path/to/sendgrid-mcp/build/index.js"],
      "env": {
        "SENDGRID_API_KEY": "SG.your_api_key_here",
        "READ_ONLY": "true"
      }
    }
  }
}
项目结构
src/
├── index.ts                    # Main entry point
├── shared/                     # Shared utilities
│   ├── auth.ts                 # Authentication
│   ├── api.ts                  # SendGrid API client
│   ├── env.ts                  # Environment validation
│   └── types.ts                # Shared types
├── tools/                      # Tool definitions
│   ├── automations.ts          # Automation tools (7 tools)
│   ├── campaigns.ts            # Campaign tools (4 tools)
│   ├── contacts.ts             # Contact, list, segment & sender tools (25 tools)
│   ├── mail.ts                 # Mail sending tools (1 tool)
│   ├── misc.ts                 # Miscellaneous tools (1 tool)
│   ├── stats.ts                # Statistics tools (9 tools)
│   └── templates.ts            # Template tools (11 tools)
├── resources/                  # Resource definitions
│   └── sendgrid.ts             # MCP resources
└── prompts/                    # Prompt definitions
    └── help.ts                 # Help prompts
添加新工具
  1. 在 src/tools/ 中的相应文件里添加工具定义
  2. 按照现有模式添加配置和处理程序
  3. 从 src/tools/index.ts 导出
  4. 更新 README.md,添加新工具的文档
  5. 运行 npm run build 进行编译
可用脚本
  • npm run build - 将 TypeScript 编译为 JavaScript
  • npm start - 运行编译后的服务
  • npm test - 构建并运行测试套件
测试更改
# Build the project
npm run build

# Test with environment variables
SENDGRID_API_KEY="SG.your_key" READ_ONLY="true" node build/index.js

如需手动验证真实客户端能否通过各种 HTTP 身份验证模式 (令牌、无身份验证、TLS、OAuth)连接,而不只是运行自动化测试套件,请参阅 TESTING.md。

创建发布版本

仅限维护者:

  1. 更新 package.json 中的版本:

    npm version patch  # or minor, major
    
  2. 推送更改和标签:

    git push && git push --tags
    
  3. 创建 GitHub 发布版本——这会通过 GitHub Actions 触发自动发布到 npm

发布流程
  • 自动化:创建发布版本时,GitHub Actions 会将软件包发布到 npm
  • 来源证明:所有软件包都包含用于安全验证的来源证明
  • 版本控制:遵循语义化版本控制(semver)
  • 软件包:npm 上的 sendgrid-mcp ——使用 npm update -g sendgrid-mcp 更新

故障排除

常见问题
6 个常见问题及解决方法

1. 找不到服务 / 找不到命令

Error: sendgrid-mcp: command not found

解决方法:

  • 确认已全局安装:npm install -g sendgrid-mcp
  • 检查 npm 全局 bin 目录是否在 PATH 中:npm config get prefix
  • 尝试重新安装:npm uninstall -g sendgrid-mcp && npm install -g sendgrid-mcp

2. API 密钥无效

Error: SENDGRID_API_KEY must start with 'SG.'

解决方法:

  • 确认 API 密钥以 SG. 开头
  • 确认已从 SendGrid 复制完整密钥
  • 检查配置中是否有多余的空格或引号
  • 在 SendGrid API Keys 生成新的 API 密钥

3. 权限错误

Error: 403 Forbidden

解决方法:

  • 您的 API 密钥可能没有足够的权限
  • 创建一个具有“Full Access”或所需作用域的新密钥
  • 确认该密钥尚未被撤销或过期

4. 只读模式阻止操作

❌ Operation blocked: Server is running in READ_ONLY mode

解决方法:

  • 这是有意设置的安全保护
  • 若要启用写入操作,请在 MCP 客户端配置中设置 READ_ONLY: "false"
  • 示例:
    {
      "env": {
        "SENDGRID_API_KEY": "SG.your_key",
        "READ_ONLY": "false"
      }
    }
    

5. MCP 客户端未检测到服务

解决方法:

  • 确认特定客户端的配置文件位置
  • 确保 JSON 语法有效(没有尾随逗号,使用正确的引号)
  • 更改配置后重启 MCP 客户端
  • 检查客户端日志中的具体错误消息

6. 连接超时

Error: Request timeout

解决方法:

  • 检查网络连接
  • 在配置中增加超时时间:
    {
      "env": {
        "REQUEST_TIMEOUT": "60000"
      }
    }
    
  • 确认可以访问 SendGrid API(未被防火墙/代理阻止)

获取帮助
调试模式

设置 LOG_LEVEL 以启用详细日志记录:

{
  "env": {
    "SENDGRID_API_KEY": "SG.your_key",
    "LOG_LEVEL": "debug"
  }
}

这将提供有关 API 请求和响应的详细信息。

安全

发现漏洞?请私下报告,而不要创建公开问题 — 请参阅 SECURITY.md。

有意不支持的操作

除了 READ_ONLY 模式在运行时会阻止的操作外,此服务还刻意省略了少数 SendGrid API 功能。这些并非有待日后填补的缺口,而是因为允许大模型自主调用这些功能,会带来波及整个账户的风险,而仅靠 READ_ONLY 开关无法缓解(操作员为了合法的营销自动化写入而以 READ_ONLY=false 运行时,也不应仅因一次被提示词注入的工具调用,就面临失去账户访问权限或耗尽 API 配额的风险):

  • 创建、轮换和删除 API 密钥——仅开放 list_api_keys/get_api_key。创建或删除 API 密钥是提示词注入的典型目标:Agent 处理的恶意网页或电子邮件可能试图诱骗它创建新密钥并将其泄露。
  • 邀请队友、更改权限和移除队友——仅开放 list_teammates/get_teammate/list_pending_teammates。添加、移除或重新设置队友权限属于账户访问控制,存在与 API 密钥相同的注入风险。
  • 购买专用 IP、控制预热以及更改访问允许列表——仅开放读取/列出工具。专用 IP 会产生实际费用,并影响整个账户的邮件送达基础设施;访问允许列表配置错误则可能完全阻断合法的 API 访问。
  • SSO 和证书管理——完全不开放任何相关功能。SSO 配置错误可能导致整个组织无法登录,而且聊天助手基本没有任何正当理由需要管理这些功能。

如果特定自动化确实需要这些功能,请直接使用 SendGrid 控制面板或 API,而不是要求此服务添加这些功能——这是刻意设定的设计边界,并非疏忽。

许可证

本项目采用 ISC 许可证。

贡献

  1. Fork 此仓库
  2. 创建功能分支
  3. 进行更改
  4. 彻底测试
  5. 提交 pull request

支持

如遇到以下相关问题:

反馈

我在 SendGrid 工作,并维护此项目。欢迎提交反馈、错误报告和功能请求——请 提交 issue 或在此仓库中发起讨论。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。