SendGrid MCP
Un servidor de Model Context Protocol (MCP) que proporciona acceso integral a la API v3 de SendGrid para marketing por correo electrónico, operaciones de correo transaccional, gestión de plantillas dinámicas y análisis detallados. Incluye 58 herramientas que cubren todos los aspectos de la gestión de correos electrónicos y el análisis de rendimiento.
Documentación
Servidor MCP de SendGrid
Un servidor de Protocolo de Contexto de Modelo (MCP) que proporciona acceso integral a la API v3 de SendGrid para marketing por correo electrónico, operaciones de correo transaccional, gestión de plantillas dinámicas y análisis detallados. Cuenta con 154 herramientas que cubren todos los aspectos de la gestión de correos electrónicos y el análisis de rendimiento.
Construido y mantenido por un ingeniero de SendGrid, como proyecto independiente — no es un producto oficial de SendGrid.
Consulta RELEASES.md para ver qué ha cambiado en la última versión.
Características
- Automatizaciones de marketing: Crea y gestiona flujos de trabajo de automatización de correos electrónicos
- Campañas de envío único: Gestiona campañas de correo electrónico únicas con seguimiento detallado de rendimiento
- Gestión de contactos: Operaciones CRUD completas para contactos con búsqueda avanzada y operaciones masivas
- Estadísticas y análisis de correo electrónico: Análisis de rendimiento multidimensional en navegadores, dispositivos, geografía y proveedores de correo electrónico con datos históricos de 13 meses
- Gestión de segmentos dinámicos: Crea, actualiza y elimina segmentos de contactos con criterios de filtrado complejos que se actualizan automáticamente
- Gestión de plantillas dinámicas: Crea, gestiona y versiona plantillas de correo electrónico HTML con soporte de Handlebars para personalización
- Gestión de campos personalizados: Define y gestiona campos de datos de contacto adicionales para una segmentación mejorada
- Envío de correos: Envía correos electrónicos transaccionales a través de SendGrid con soporte completo de personalización
- Gestión de identidad del remitente: Gestiona identidades de remitente verificadas con seguimiento de autenticación
- Listas de supresión: Gestiona rebotes, informes de spam y cancelaciones de suscripción para optimizar la entregabilidad
- Configuración de la cuenta: Accede a los detalles de la cuenta y a la gestión de configuración
- Integración con navegador: Enlaces rápidos a la interfaz web de SendGrid para operaciones visuales
- Modo seguro de solo lectura: Modo de operación seguro que previene la modificación accidental de datos mientras mantiene acceso completo a los análisis
Clientes MCP compatibles
✅ Claude Desktop - Aplicación de escritorio oficial ✅ Claude Code - Herramienta CLI oficial ✅ Conectores personalizados de Claude - vía Streamable HTTP (consulta Instalar el servidor) ✅ OpenAI Responses API / Apps SDK - vía Streamable HTTP ✅ MCP Market - Alojado, despliegue con un clic, sin instalación requerida (consulta Instalar el servidor) ✅ Cline - Extensión de VS Code ✅ Zed Editor - Editor de código moderno ✅ Continue - Autopiloto de VS Code ✅ Codex CLI - vía Streamable HTTP ✅ Cualquier cliente compatible con MCP
Primeros pasos
Sigue estos pasos en orden — al final tendrás el servidor instalado (o desplegado), tu clave de API de SendGrid configurada y tu cliente MCP conectado.
Esta es la ruta de solicitud real, independientemente del cliente que termines usando — algunos lanzan el servidor localmente a través de stdio, otros lo alcanzan a través de la red vía Streamable HTTP (MCP Market, autoalojado), lo que añade una opción de autenticación de cliente adicional:
┌──────────┐
│ 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 es requerido sin importar qué ruta tomes. READ_ONLY=true
(el predeterminado) es una barrera adicional dentro del cuadro del Servidor MCP — bloquea
las herramientas de crear/actualizar/eliminar/enviar una vez que una solicitud ya está dentro, sin importar
en qué rama llegó. Consulta Variables de entorno
para la lista completa de lo que puedes configurar.
1. Instalar el servidor
Instálalo localmente si tu cliente lo lanza por sí mismo, o ve remoto si se conecta a través de la red.
Local (stdio) — para Claude Desktop, Claude Code, Cline, Zed, Continue, o cualquier cliente que ejecute el servidor como subproceso:
npm install -g sendgrid-mcp
Esto instala el comando sendgrid-mcp globalmente, que tu cliente MCP lanzará como subproceso. Requiere Node.js 20+.
Remoto (HTTP) — nada que instalar localmente; elige uno:
MCP Market (alojado, sin instalación requerida)
MCP Market despliega y aloja este servidor por ti — nada que instalar localmente y sin variables de entorno que gestionar en tu máquina. Aún necesitas una clave de API de SendGrid; la ingresarás en MCP Market en lugar de en tu propia terminal/configuración.
Desde la página Servidores MCP de MCP Market, despliega un MCP personalizado desde cualquiera de las fuentes:
- GitHub — selecciona la fuente de GitHub, elige repositorio Público o Privado, pega
la URL del repositorio (
https://github.com/deyikong/sendgrid-mcp) y elige un nombre de servidor. - npm — selecciona la fuente de npm, ingresa el nombre del paquete (
sendgrid-mcp) y elige un nombre de servidor.

De cualquier manera, MCP Market lo construye y ejecuta por ti; aparece bajo
Servidores MCP con un estado Running una vez que esté listo. Continúa a
Configurar tu cliente MCP para establecer tus
credenciales y conectarte.
Autoalojado (Streamable HTTP)
Ejecuta el servidor tú mismo y exponlo a través de Streamable HTTP en lugar de dejar que
un cliente lo lance localmente — para conectores personalizados de Claude, la herramienta
mcp de OpenAI Responses API / Apps SDK, o cualquier otro cliente remoto.
El endpoint de MCP es POST /mcp; GET /health devuelve un documento de estado para
balanceadores de carga. Las solicitudes se manejan sin estado (no se requiere id de sesión),
que es lo que esperan los clientes alojados.
none/token/oauth a continuación no son formas alternativas de conectarse — son
tres cerraduras diferentes en la única puerta nueva (HTTP), como se muestra en el
diagrama de flujo de solicitudes anterior.
Inicio rápido (desarrollo local)
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
Autenticación
Establece MCP_AUTH_MODE a uno de:
| Modo | Uso para | Requiere |
|---|---|---|
oauth | Producción / clientes remotos | MCP_OAUTH_ISSUER, MCP_OAUTH_AUDIENCE |
token | Desarrollo local, autoalojamiento simple | MCP_AUTH_TOKEN (16+ caracteres) |
none | Solo desarrollo de bucle local | — se niega a iniciar en un enlace público |
Modo OAuth convierte este servidor en un servidor de recursos OAuth 2.1. No emite ni almacena credenciales — verifica los tokens de acceso emitidos por tu proveedor de identidad existente (Auth0, Okta, Entra ID, Google, Stytch, …) contra el JWKS publicado de ese proveedor.
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 (consulta el diagrama en Primeros pasos)
sigue siendo requerido junto con estos — OAuth solo controla quién puede alcanzar el servidor, no lo que el servidor
usa para comunicarse con SendGrid.
El servidor publica RFC 9728
Metadatos de Recursos Protegidos en /.well-known/oauth-protected-resource, por lo que
los clientes descubren tu servidor de autorización automáticamente: una solicitud
no autenticada recibe un 401 cuyo encabezado WWW-Authenticate apunta a ese documento,
el cliente lo lee, envía al usuario a tu IdP para iniciar sesión y reintenta con el
token resultante.
Los tokens se rechazan (401) si están expirados, mal firmados o emitidos para un
emisor o audiencia diferente; un token válido que carece de un alcance requerido recibe 403.
Configurando tu proveedor de identidad
Cualquiera que sea el proveedor que uses, estás configurando las mismas tres cosas: una URL de emisor, una audiencia (un identificador estable para este recurso de API) y un alcance que los clientes solicitarán. Algunos tutoriales concretos:
Auth0
- Inicia sesión en tu Panel de Auth0 y ve a Aplicaciones → APIs → Crear API.
- Establece un Identificador — esta es tu audiencia, p. ej.
https://mcp.example.com. No necesita resolver a nada; solo necesita ser único. - En la pestaña Permisos de la API, agrega los alcances que tu servidor debe
requerir, p. ej.
sendgrid:read,sendgrid:write. - Tu URL de emisor es tu dominio de inquilino, que se muestra en la pestaña Configuración
de la API:
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
- Inicia sesión en la Consola de administración de Okta y ve a Seguridad → API → Servidores de autorización.
- Usa el servidor de autorización
default, o crea uno nuevo. Su URI de emisor, que se muestra en la parte superior de la página de configuración del servidor, se ve comohttps://{yourOktaDomain}/oauth2/{authServerId}. - En la misma página, el campo Audiencia (predeterminado
api://default) es lo que usarás para la audiencia — establécelo a algo específico para este servidor, p. ej.api://sendgrid-mcp. - Abre la pestaña Alcances y agrega un alcance, p. ej.
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)
- En el Portal de Azure, ve a Microsoft Entra ID → Registros de aplicaciones → Nuevo registro para representar este servidor MCP como un recurso.
- Abre la página Exponer una API de la nueva aplicación y establece el
URI de ID de aplicación — esto se convierte en tu audiencia, p. ej.
api://<client-id>. - En la misma página, haz clic en Agregar un alcance para definir uno, p. ej.
sendgrid.read. - Tu URL de emisor es
https://login.microsoftonline.com/{tenant-id}/v2.0, donde{tenant-id}es el ID de directorio (inquilino) de la página Descripción general de la aplicación.
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"
Otros proveedores (Google Identity Platform, Stytch, …) siguen la misma forma:
encuentra el emisor de OpenID Connect (generalmente publicado en
<issuer>/.well-known/openid-configuration), define un identificador de audiencia/recurso
para este servidor y crea un alcance para él.
Cualquiera que sea el proveedor que uses, también establece MCP_PUBLIC_URL a la
URL accesible externamente de tu servidor (p. ej. https://mcp.example.com) —
los clientes la usan durante el descubrimiento de OAuth.
TLS
O termina TLS en el proceso:
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
…o termínalo en un proxy y dile al servidor que confíe en los encabezados reenviados:
export TRUST_PROXY=true
export MCP_PUBLIC_URL="https://mcp.example.com"
TRUST_PROXY está desactivado por defecto porque los encabezados X-Forwarded-* son
controlados por el cliente a menos que un proxy que tú controlas los sobrescriba. TLS 1.2 es el
mínimo aplicado en el modo en proceso.
Conectando clientes
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 (conector personalizado): agrega https://mcp.example.com/mcp como un conector
personalizado. En modo oauth, Claude recorre el flujo de descubrimiento y solicita al usuario
iniciar sesión; en modo token, proporciona el token de portador directamente.
Seguridad
El servidor se niega a iniciar en configuraciones incorrectas que expondrían silenciosamente tu cuenta de SendGrid, en lugar de iniciar en un modo más débil del que pretendías:
- Enlazar a una dirección que no sea de bucle local sin TLS o
TRUST_PROXY MCP_AUTH_MODE=noneen cualquier cosa que no sea un enlace de bucle local- Un
http://MCP_PUBLIC_URLque no sea de bucle local - Un
MCP_AUTH_TOKENfaltante o de longitud insuficiente, o modooauthsin un emisor y audiencia TLS_KEY_FILEyTLS_CERT_FILEestablecidos solo uno del par
Más allá de eso:
- Mantén
READ_ONLY=truea menos que necesites operaciones de escritura y envío. Esta es la limitación más efectiva del radio de explosión — es la diferencia entre un token filtrado que expone análisis y uno que envía correos desde tu dominio. - Establece
MCP_ALLOWED_HOSTS/MCP_ALLOWED_ORIGINSpara habilitar la protección contra reenlace de DNS, que es más importante para servidores enlazados localmente accesibles desde un navegador. - Limita tu clave de API de SendGrid a solo los permisos que este servidor necesita; la clave es la credencial real detrás de cada solicitud.
2. Obtén tu clave de API de SendGrid
- Ve a Claves de API de SendGrid
- Haz clic en "Crear clave de API"
- Elige "Acceso completo" o selecciona permisos específicos
- Copia la clave generada (comienza con
SG.)
3. Configura tu cliente MCP
MCP Market
Una vez que tu servidor esté desplegado (consulta Instalar el servidor), establece tus credenciales y conecta un cliente.
Establece tus variables de entorno
Abre tu servidor desplegado → la pestaña Variables → Mis credenciales, y completa:

| Variable | Obligatorio | Descripción |
|---|---|---|
SENDGRID_API_KEY | ✅ | Tu clave de API de SendGrid (empieza con SG.) |
MCP_SERVER_NAME | ❌ | Nombre del servidor para identificación |
MCP_SERVER_VERSION | ❌ | Versión del servidor |
LOG_LEVEL | ❌ | Nivel de registro (debug, info, warn, error) |
REQUEST_TIMEOUT | ❌ | Tiempo de espera de solicitudes de API en milisegundos |
READ_ONLY | ❌ | Habilitar modo de solo lectura (true/false) |
Cada campo se guarda de forma independiente: solo SENDGRID_API_KEY es obligatorio.
Conectar un cliente
Haz clic en + Conectar en la página de tu servidor. MCP Market muestra opciones de instalación con un clic para Claude Desktop, Claude Code, Codex CLI, Cursor, VS Code, Windsurf, Cline, JetBrains, Gemini CLI, Amazon Q, Goose y Continue: elige la tuya y sigue sus instrucciones.

Para cualquier otro cliente, usa la opción URL de conexión, que te
proporciona un endpoint HTTP Streamable exclusivo para tu implementación. Los ejemplos
a continuación usan deyikong/sendgrid-mcp solo como ilustración: el tuyo tendrá tu propio
nombre de usuario y nombre de servidor:
https://link.mcpmarket.com/<your-username>/<your-server-name>/mcp
Conéctalo de la misma manera que cualquier otro endpoint autohospedado, por ejemplo:
# 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 gestiona el alojamiento, TLS y la disponibilidad del servidor implementado; para preguntas sobre cuentas, facturación o implementación, consulta directamente a MCP Market en lugar de este repositorio.
Claude Desktop
La aplicación de escritorio oficial de Claude con soporte nativo para MCP.
Ubicaciones de archivos de configuración:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%/Claude/claude_desktop_config.json
Configuración:
{
"mcpServers": {
"sendgrid": {
"command": "sendgrid-mcp",
"env": {
"SENDGRID_API_KEY": "SG.your_api_key_here",
"READ_ONLY": "true"
}
}
}
}
Configuración opcional:
{
"mcpServers": {
"sendgrid": {
"command": "sendgrid-mcp",
"env": {
"SENDGRID_API_KEY": "SG.your_api_key_here",
"READ_ONLY": "false",
"LOG_LEVEL": "info",
"REQUEST_TIMEOUT": "30000"
}
}
}
}
Después de la configuración:
- Guarda el archivo
- Reinicia Claude Desktop
- El servidor SendGrid MCP estará disponible en Claude
Claude Code (CLI)
La interfaz de línea de comandos oficial de Claude con soporte para MCP.
Instalación:
npm install -g @anthropic-ai/claude-code
Ubicación del archivo de configuración:
- Todas las plataformas:
~/.claude/config.json
Configuración:
{
"mcpServers": {
"sendgrid": {
"command": "sendgrid-mcp",
"env": {
"SENDGRID_API_KEY": "SG.your_api_key_here",
"READ_ONLY": "true"
}
}
}
}
Uso:
# Start Claude Code with SendGrid MCP
claude
# The SendGrid tools will be automatically available
# Ask Claude: "List my SendGrid automations"
Cline (Extensión de VS Code)
Extensión popular de VS Code con soporte para MCP.
Instalación:
- Instala la extensión Cline desde el marketplace de VS Code
- Abre la configuración de Cline
Archivo de configuración:
- Abre la configuración de VS Code
- Busca "Cline: MCP Settings"
- Edita el JSON de configuración de MCP
Configuración:
{
"mcpServers": {
"sendgrid": {
"command": "sendgrid-mcp",
"env": {
"SENDGRID_API_KEY": "SG.your_api_key_here",
"READ_ONLY": "true"
}
}
}
}
Editor Zed
Editor de código moderno con IA integrada y soporte para MCP.
Ubicación del archivo de configuración:
- macOS/Linux:
~/.config/zed/settings.json - Windows:
%APPDATA%/Zed/settings.json
Configuración:
{
"context_servers": {
"sendgrid-mcp": {
"command": "sendgrid-mcp",
"env": {
"SENDGRID_API_KEY": "SG.your_api_key_here",
"READ_ONLY": "true"
}
}
}
}
Continue (Extensión de VS Code)
Autopiloto de código abierto para VS Code con soporte para MCP.
Ubicación del archivo de configuración:
- Todas las plataformas:
~/.continue/config.json
Configuración:
{
"experimental": {
"modelContextProtocolServers": [
{
"command": "sendgrid-mcp",
"env": {
"SENDGRID_API_KEY": "SG.your_api_key_here",
"READ_ONLY": "true"
}
}
]
}
}
Cliente MCP genérico
Para cualquier cliente compatible con MCP que no esté en la lista anterior:
Línea de comandos:
# With environment variables
SENDGRID_API_KEY="SG.your_api_key_here" READ_ONLY="true" sendgrid-mcp
Plantilla de configuración:
{
"command": "sendgrid-mcp",
"env": {
"SENDGRID_API_KEY": "SG.your_api_key_here",
"READ_ONLY": "true"
}
}
Variables de entorno
El servidor se configura completamente mediante variables de entorno. SENDGRID_API_KEY es la única obligatoria.
| Variable | Obligatorio | Descripción | Predeterminado |
|---|---|---|---|
SENDGRID_API_KEY | ✅ | Tu clave de API de SendGrid (empieza con SG.) | - |
READ_ONLY | ❌ | Habilitar modo de solo lectura (true/false) | true |
MCP_SERVER_NAME | ❌ | Nombre del servidor para identificación | sendgrid-mcp |
MCP_SERVER_VERSION | ❌ | Versión del servidor | 1.0.0 |
LOG_LEVEL | ❌ | Nivel de registro (debug, info, warn, error) | info |
REQUEST_TIMEOUT | ❌ | Tiempo de espera de solicitudes de API en milisegundos | 30000 |
READ_ONLY tiene como valor predeterminado true. En este modo, todas las herramientas están registradas y visibles, pero las operaciones que crean, actualizan, eliminan o envían se bloquean en tiempo de ejecución con un mensaje de error claro: solo las herramientas de listar/obtener/buscar/enlaces de navegador se ejecutan realmente. Este es el valor predeterminado más seguro mientras te estás configurando. Consulta Modo de solo lectura para ver el desglose completo de lo que está bloqueado, y establece READ_ONLY=false cuando estés listo para permitir operaciones de escritura y envío.
Estas variables se configuran dentro de la configuración de tu cliente MCP (como un bloque env): consulta Configura tu cliente MCP. El modo HTTP autohospedado tiene su propio conjunto de variables (transporte, autenticación, TLS): consulta Instala el servidor.
Modo de solo lectura
Modo de solo lectura
De forma predeterminada, el servidor SendGrid MCP se ejecuta en modo de solo lectura (READ_ONLY=true) por seguridad. Todas las herramientas están registradas y disponibles, pero las operaciones mutables se bloquean en tiempo de ejecución con mensajes de error útiles.
Cómo funciona el modo de solo lectura
Cuando READ_ONLY=true (predeterminado):
- Todas las herramientas están registradas y visibles para el asistente de IA
- Las operaciones no mutables funcionan con normalidad (listar, obtener, buscar, abrir enlaces de navegador)
- Las operaciones mutables se bloquean con un mensaje de error claro:
❌ Operation blocked: Server is running in READ_ONLY mode. Set READ_ONLY=false in your environment to enable write operations.
Operaciones seguras en modo de solo lectura
Estas 32 operaciones funcionan con normalidad cuando READ_ONLY=true:
Automatizaciones y campañas:
list_automations,get_automation,open_automation_creator,open_automation_editorlist_single_sends,get_single_send,open_single_send_creator,open_single_send_stats
Contactos, listas y segmentos:
list_contacts,get_contact,search_contacts,search_contacts_by_emailslist_email_listslist_segments,open_segment_creatorlist_custom_fields
Remitentes:
list_senders,open_csv_uploader
Plantillas:
list_templates,get_template,get_template_version,open_template_editor
Estadísticas (todas de solo lectura por diseño):
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
Utilidades:
get_scopes
Operaciones bloqueadas en modo de solo lectura
Estas 26 operaciones se bloquean cuando READ_ONLY=true:
update_automation_settings,update_automation_step,delete_automationcreate_contact,update_contact,delete_contactcreate_contact_with_lists,remove_contact_from_listscreate_email_list,update_email_list,delete_email_listcreate_custom_field,update_custom_field,delete_custom_fieldcreate_sender,delete_senderupdate_segment,delete_segmentcreate_template,update_template,delete_templatecreate_template_version,update_template_version,delete_template_versioncreate_html_templatesend_mail
Modo de acceso completo
Para habilitar operaciones de crear, actualizar, eliminar y enviar, establece READ_ONLY=false en el bloque env de tu cliente MCP:
{
"env": {
"SENDGRID_API_KEY": "SG.your_api_key_here",
"READ_ONLY": "false"
}
}
Esto permitirá que todas las operaciones mutables se ejecuten con normalidad mientras se mantienen todas las operaciones de lectura.
⚠️ Nota de seguridad: Solo desactiva el modo de solo lectura si necesitas acceso de escritura y confías en el entorno donde se ejecuta el servidor.
Herramientas disponibles
El servidor expone 154 herramientas agrupadas en 22 categorías. Todas las herramientas están registradas independientemente del modo READ_ONLY: consulta Modo de solo lectura para ver cuáles están bloqueadas de forma predeterminada.
📚 Para indicaciones en lenguaje natural que puedes decir directamente a Claude, consulta EXAMPLE_PROMPTS.md. Los ejemplos a continuación muestran las llamadas JSON subyacentes a las herramientas.
Resumen de herramientas
Las claves de API, alertas, compañeros de equipo e IP dedicadas son deliberadamente de solo lectura en este servidor, y la gestión de SSO/certificados no está expuesta en absoluto: consulta Operaciones intencionalmente no compatibles para saber por qué.
Automatizaciones de marketing
list_automations- Lista todas las automatizaciones de marketing con metadatosget_automation- Obtiene información detallada sobre una automatización específicaupdate_automation_settings- Actualiza la configuración a nivel de automatización (nombre, estado)update_automation_step- Actualiza la configuración de pasos individuales (estado, tiempo de espera)delete_automation- Elimina permanentemente una automatizaciónopen_automation_creator- Abre el creador de automatizaciones en el navegadoropen_automation_editor- Abre el editor de una automatización específica
Ejemplos
Ejemplo: obtener detalles de una automatización:
{
"tool": "get_automation",
"arguments": {
"automation_id": "automation_id_here"
}
}
Ejemplo: pausar una automatización completa:
{
"tool": "update_automation_settings",
"arguments": {
"automation_id": "automation_id_here",
"status": "paused"
}
}
Ejemplo: actualizar un solo paso (estado, tiempo de espera):
{
"tool": "update_automation_step",
"arguments": {
"automation_id": "automation_id_here",
"step_id": "step_id_here",
"step_status": "active",
"wait_time": 1440
}
}
Ejemplo: eliminar una automatización:
{
"tool": "delete_automation",
"arguments": {
"automation_id": "automation_id_here"
}
}
Campañas de envío único
list_single_sends- Lista todas las campañas de envío único con metadatosget_single_send- Recupera el contenido detallado y la configuración de una campaña de envío únicoopen_single_send_creator- Abre el creador de campañas en el navegador para diseño visualopen_single_send_stats- Ve estadísticas detalladas de rendimiento de la campaña
Ejemplos
Ejemplo: obtener el contenido y la configuración de una campaña:
{
"tool": "get_single_send",
"arguments": {
"singlesend_id": "singlesend_id_here"
}
}
Operaciones CRUD de contactos
list_contacts- Lista todos los contactos con paginación y filtradoget_contact- Obtiene información detallada sobre un contacto específicocreate_contact- Crea nuevos contactos con campos personalizadosupdate_contact- Actualiza la información de contactos existentes y datos personalizadosdelete_contact- Elimina contactos permanentemente con limpiezasearch_contacts- Busca contactos usando condiciones de consulta avanzadassearch_contacts_by_emails- Busca contactos específicos por direcciones de correo
Ejemplos
Ejemplo: crear un nuevo contacto:
{
"tool": "create_contact",
"arguments": {
"contacts": [
{
"email": "newuser@example.com",
"first_name": "Jane",
"last_name": "Smith"
}
]
}
}
Ejemplo: buscar contactos por correo:
{
"tool": "search_contacts_by_emails",
"arguments": {
"emails": ["john@example.com", "jane@example.com"]
}
}
Ejemplo: buscar contactos con una condición de consulta:
{
"tool": "search_contacts",
"arguments": {
"query": "email LIKE '@example.com'",
"page_size": 10
}
}
Ejemplo: actualizar un contacto:
{
"tool": "update_contact",
"arguments": {
"contacts": [
{
"id": "contact_id_here",
"first_name": "John",
"last_name": "Updated"
}
]
}
}
Ejemplo: eliminar contactos:
{
"tool": "delete_contact",
"arguments": {
"contact_ids": ["contact_id_1", "contact_id_2"]
}
}
Gestión de listas de correo
list_email_lists- Lista todas las listas de correocreate_email_list- Crea una nueva lista de correoupdate_email_list- Actualiza las propiedades de la lista de correodelete_email_list- Elimina una lista de correocreate_contact_with_lists- Crea contactos y los asigna a listasremove_contact_from_lists- Elimina contactos de una lista específica
Ejemplos
Ejemplo: listar listas de correo:
{
"tool": "list_email_lists",
"arguments": {
"page_size": 100
}
}
Ejemplo: renombrar una lista de correo:
{
"tool": "update_email_list",
"arguments": {
"list_id": "list_id_here",
"name": "Updated List Name"
}
}
Ejemplo — eliminar contactos de una lista:
{
"tool": "remove_contact_from_lists",
"arguments": {
"list_id": "list_id_here",
"contact_ids": ["contact_id_1", "contact_id_2"]
}
}
Ejemplo — eliminar una lista de correo:
{
"tool": "delete_email_list",
"arguments": {
"list_id": "list_id_here"
}
}
Segmentos y Campos Personalizados
list_segments- Listar segmentos dinámicos con relaciones de padre e criteriosopen_segment_creator- Abrir el creador de segmentos en el navegador para construcción visual de consultasupdate_segment- Actualizar el nombre o los criterios de consulta de un segmento existente con actualización en tiempo realdelete_segment- Eliminar un segmento existente (los contactos no se ven afectados)list_custom_fields- Listar definiciones de campos personalizados con tipos de datoscreate_custom_field- Crear nuevos campos personalizados (tipos Texto, Número, Fecha)update_custom_field- Actualizar definiciones de campos personalizados existentesdelete_custom_field- Eliminar definiciones de campos personalizados con limpieza de datos
Ejemplos
Ejemplo — renombrar un segmento:
{
"tool": "update_segment",
"arguments": {
"segment_id": "segment_id_here",
"name": "Updated Segment Name"
}
}
Ejemplo — actualizar los criterios de consulta de un segmento:
{
"tool": "update_segment",
"arguments": {
"segment_id": "segment_id_here",
"query_dsl": "{\"and\": [{\"field\": \"email\", \"value\": \"@example.com\", \"operator\": \"like\"}]}"
}
}
Ejemplo — eliminar un segmento:
{
"tool": "delete_segment",
"arguments": {
"segment_id": "segment_id_here"
}
}
Ejemplo — crear un campo personalizado:
{
"tool": "create_custom_field",
"arguments": {
"name": "customer_tier",
"field_type": "Text"
}
}
Ejemplo — actualizar un campo personalizado:
{
"tool": "update_custom_field",
"arguments": {
"field_id": "field_id_here",
"name": "customer_level"
}
}
Ejemplo — eliminar un campo personalizado:
{
"tool": "delete_custom_field",
"arguments": {
"field_id": "field_id_here"
}
}
Remitentes e Importación
list_senders- Listar identidades de remitente verificadascreate_sender- Crear nueva identidad de remitentedelete_sender- Eliminar una identidad de remitente verificadaopen_csv_uploader- Abrir la interfaz de carga CSV
Ejemplos
Ejemplo — crear una identidad de remitente:
{
"tool": "create_sender",
"arguments": {
"nickname": "Marketing Team",
"from": { "email": "marketing@yourdomain.com", "name": "Your Company" },
"reply_to": { "email": "replies@yourdomain.com", "name": "Your Company" },
"address": "123 Main St",
"city": "Denver",
"state": "CO",
"zip": "80202",
"country": "United States"
}
}
Ejemplo — eliminar una identidad de remitente:
{
"tool": "delete_sender",
"arguments": {
"sender_id": "sender_id_here"
}
}
Plantillas Dinámicas
list_templates- Listar todas las plantillas dinámicas y heredadasget_template- Obtener detalles de una plantilla específica, incluyendo todas sus versionescreate_template- Crear una nueva plantilla dinámicaupdate_template- Actualizar el nombre y la configuración de la plantilladelete_template- Eliminar una plantilla y todas sus versionescreate_template_version- Crear una nueva versión con contenido HTML y configuraciónget_template_version- Obtener detalles de una versión específica de plantillaupdate_template_version- Actualizar contenido, asunto y configuración de la versióndelete_template_version- Eliminar una versión específica de plantillacreate_html_template- Crear plantilla completa con contenido HTML en un solo paso (perfecto para agentes de IA)open_template_editor- Abrir el editor visual de plantillas de SendGrid en el navegador
Las plantillas admiten sintaxis Handlebars para contenido dinámico ({{variable}}, {{#each}}, {{#if}}), HTML responsivo con CSS en línea, hasta 300 versiones por plantilla, vistas previas con datos de prueba y generación automática de texto plano.
Ejemplos
Ejemplo — crear una plantilla completa en un solo paso (mejor para agentes de IA):
{
"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\"}"
}
}
Ejemplo — agregar una nueva versión con contenido 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\"}]}"
}
}
Envío de Correos
send_mail- Enviar correos transaccionales (admite plantillas con datos dinámicos de plantilla)
Ejemplos
Ejemplo — enviar un correo simple:
{
"tool": "send_mail",
"arguments": {
"personalizations": [
{
"to": [{"email": "recipient@example.com", "name": "John Doe"}],
"subject": "Hello from SendGrid MCP!"
}
],
"from": {"email": "sender@yourdomain.com", "name": "Your Name"},
"content": [
{
"type": "text/plain",
"value": "Hello! This email was sent via SendGrid MCP server."
}
]
}
}
Ejemplo — enviar usando una plantilla dinámica:
{
"tool": "send_mail",
"arguments": {
"personalizations": [
{
"to": [{"email": "user@example.com", "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": "noreply@yourcompany.com", "name": "Your Company"},
"template_id": "d-1234567890abcdef1234567890abcdef"
}
}
Estadísticas y Análisis de Correos
get_global_stats- Recuperar métricas generales de rendimiento de correosget_stats_overview- Obtener estadísticas completas en múltiples dimensionesget_stats_by_browser- Estadísticas desglosadas por tipo de navegador (Chrome, Firefox, Safari, etc.)get_stats_by_client_type- Estadísticas por tipo de cliente de correo (escritorio, móvil, webmail)get_stats_by_device_type- Estadísticas por tipo de dispositivo (escritorio, móvil, tableta)get_stats_by_mailbox_provider- Estadísticas por proveedor de buzón (Gmail, Outlook, Yahoo, etc.)get_stats_by_country- Estadísticas por país y estado/provinciaget_category_stats- Estadísticas para categorías específicas de correos (historial de 13 meses)get_subuser_stats- Estadísticas para cuentas de subusuario específicas
Realiza seguimiento de tasas de entrega, apertura y clics; tasas de rebote (duro/blando), informes de spam y bajas; rendimiento geográfico y preferencias de dispositivo; compatibilidad con clientes de correo y renderizado en navegadores; y entregabilidad específica por proveedor.
Ejemplos
Ejemplo — estadísticas globales de correos:
{
"tool": "get_global_stats",
"arguments": {
"start_date": "2024-01-01",
"end_date": "2024-01-31",
"aggregated_by": "day"
}
}
Ejemplo — estadísticas por proveedor de buzón:
{
"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"
}
}
Ejemplo — estadísticas de rendimiento geográfico:
{
"tool": "get_stats_by_country",
"arguments": {
"start_date": "2024-01-01",
"end_date": "2024-01-31",
"country": "US",
"aggregated_by": "week"
}
}
Ejemplo — resumen completo de estadísticas:
{
"tool": "get_stats_overview",
"arguments": {
"start_date": "2024-01-01",
"end_date": "2024-01-07",
"aggregated_by": "day",
"include_subusers": false
}
}
Utilidades
get_scopes- Obtener alcances de permisos de API disponibles (sin argumentos)
Exclusiones
list_suppression_groups- Listar todos los grupos de baja (exclusión) en la cuentacreate_suppression_group- Crear un nuevo grupo de baja (exclusión)get_suppression_group- Obtener detalles sobre un grupo de baja (exclusión) específicoupdate_suppression_group- Actualizar el nombre, la descripción o el estado predeterminado de un grupo de exclusión existentedelete_suppression_group- Eliminar permanentemente un grupo de baja (exclusión). Esta acción no se puede deshacer.list_group_suppressions- Listar todas las direcciones de correo que se han dado de baja de un grupo de exclusión específicoadd_group_suppressions- Agregar una o más direcciones de correo a la lista de bajas de un grupo de exclusión específicoremove_group_suppression- Eliminar una única dirección de correo de la lista de bajas de un grupo de exclusión específico. Esto solo vuelve a permitir el correo asignado a la categoría de este grupo; no es una reinscripción global.list_global_suppressions- Listar direcciones de correo en la lista global de bajas de toda la cuenta, opcionalmente filtradas por un rango de tiempoadd_global_suppression- Agregar destinatarios a la lista global de bajas de toda la cuenta; dejarán de recibir todo el correo no transaccional de esta cuentaget_global_suppression- Verificar si una dirección de correo específica está en la lista global de bajas de toda la cuentadelete_global_suppression- Eliminar una dirección de correo de la lista global de exclusiones de toda la cuenta, reinscribiéndola efectivamente al correo no transaccionallist_bounces- Listar todas las direcciones de correo que han rebotado, opcionalmente filtradas por un rango de tiempoget_bounce- Obtener los eventos de rebote registrados para una dirección de correo específicadelete_bounce- Eliminar un registro de rebote para una dirección de correo para que esta pueda volver a recibir correoslist_blocks- Listar todas las direcciones de correo actualmente en la lista de bloqueos, opcionalmente filtradas por un rango de tiempodelete_block- Eliminar una dirección de correo de la lista de bloqueos para que esta pueda volver a recibir correoslist_spam_reports- Listar todas las direcciones de correo que han reportado correos como spam, opcionalmente filtradas por un rango de tiempodelete_spam_report- Eliminar una dirección de correo de la lista de informes de spam para que esta pueda volver a recibir correoslist_invalid_emails- Listar todas las direcciones de correo que han sido marcadas como inválidas, opcionalmente filtradas por un rango de tiempodelete_invalid_email- Eliminar una dirección de correo de la lista de correos inválidos para que esta pueda volver a recibir correos
Autenticación de Dominio y Marca de Enlaces
list_authenticated_domains- Listar todos los dominios autenticados (whitelabel) configurados para el envío de correosget_authenticated_domain- Obtener información detallada sobre un dominio autenticado específico, incluyendo sus registros DNScreate_authenticated_domain- Configurar la autenticación de dominio (SPF/DKIM) para el envío de correos desde un dominio personalizadoupdate_authenticated_domain- Actualizar el SPF personalizado o la configuración predeterminada de un dominio autenticado existentedelete_authenticated_domain- Eliminar permanentemente un dominio autenticado. Esta acción no se puede deshacer.validate_authenticated_domain- Verificar si los registros DNS del dominio están configurados correctamente para la autenticaciónget_default_authenticated_domain- Obtener el dominio autenticado actualmente configurado como predeterminado para el envío de correoslist_branded_links- Listar todos los enlaces con marca (whitelabels de enlace) configurados para el seguimiento de clicsget_branded_link- Obtener información detallada sobre un enlace con marca específico, incluyendo sus registros DNScreate_branded_link- Configurar el seguimiento de enlaces con marca (seguimiento de clics a través del dominio propio del remitente en lugar de sendgrid.net)update_branded_link- Actualizar la configuración predeterminada de un enlace con marca existentedelete_branded_link- Eliminar permanentemente un enlace con marca. Esta acción no se puede deshacer.validate_branded_link- Verificar si los registros DNS del enlace con marca están configurados correctamente
Webhooks de Eventos y Análisis de Entrada
list_event_webhooks- Listar todas las configuraciones de Webhook de Eventos en la cuentaget_event_webhook- Obtener la configuración de un Webhook de Eventos específico por IDcreate_event_webhook- Crea un nuevo Webhook de Eventos que envía eventos de correo (entregado, rebotado, abierto, clicado, etc.) a la URL dadaupdate_event_webhook- Actualizar la configuración de un Webhook de Eventos existentedelete_event_webhook- Eliminar permanentemente una configuración de Webhook de Eventos. Esta acción no se puede deshacer.test_event_webhook- Envía una carga útil de evento de prueba a la URL del webhook para verificar que sea accesible y esté configurada correctamentelist_inbound_parse_settings- Listar todas las configuraciones de webhook de Análisis de Entrada en la cuentaget_inbound_parse_setting- Obtener la configuración del webhook de Análisis de Entrada para un nombre de host específicocreate_inbound_parse_setting- Configura el análisis de correo entrante para que el correo enviado al nombre de host dado se envíe a la URL dadaupdate_inbound_parse_setting- Actualizar la configuración del webhook de Análisis de Entrada para un nombre de host específicodelete_inbound_parse_setting- Eliminar permanentemente una configuración de webhook de Análisis de Entrada para un nombre de host. Esta acción no se puede deshacer.get_inbound_parse_stats- Obtener estadísticas sobre el número de correos entrantes analizados en un rango de fechas determinado
Configuración de Seguimiento
get_tracking_settings- Recuperar toda la configuración de seguimiento (clics, aperturas, suscripciones, Google Analytics) en una sola llamadaget_click_tracking_settings- Recuperar la configuración actual de seguimiento de clicsupdate_click_tracking_settings- Habilitar o deshabilitar el seguimiento de clics en los enlaces dentro de los correosget_google_analytics_settings- Recuperar la configuración actual de seguimiento de Google Analyticsupdate_google_analytics_settings- Actualizar la configuración de seguimiento de Google Analytics, incluyendo valores de campaña UTM, contenido, medio, fuente y términoget_open_tracking_settings- Recuperar la configuración actual de seguimiento de aperturasupdate_open_tracking_settings- Habilitar o deshabilitar el seguimiento de aperturas, que inserta un píxel invisible para registrar cuándo se abre un correoget_subscription_tracking_settings- Recuperar la configuración actual de seguimiento de suscripcionesupdate_subscription_tracking_settings- Actualizar la configuración de seguimiento de suscripciones, incluyendo el contenido del enlace de baja, la página de destino, la URL y la etiqueta de reemplazo
Configuración de Correo
get_all_mail_settings- Recuperar toda la configuración de correo (lista blanca de direcciones, purga de rebotes, pie de página, reenvío de rebotes, reenvío de spam, etc.) en una sola llamadaget_address_whitelist_settings- Recuperar la configuración actual de lista blanca de direcciones, que controla qué direcciones de correo o dominios omiten todas las listas de exclusiónupdate_address_whitelist_settings- Actualizar la configuración de lista blanca de direcciones que controla qué direcciones de correo o dominios omiten todas las listas de exclusiónget_bounce_purge_settings- Recuperar la configuración actual de purga de rebotes, que purga automáticamente los registros de rebote antiguos después de un número configurado de díasupdate_bounce_purge_settings- Actualizar la configuración de purga de rebotes que purga automáticamente los registros de rebote antiguos después de un número configurado de díasget_footer_settings- Recuperar la configuración actual de pie de página, que agrega un pie de página a cada correo salienteupdate_footer_settings- Actualizar la configuración de pie de página que agrega un pie de página a cada correo salienteget_forward_bounce_settings- Recuperar la configuración actual de reenvío de rebotes, que reenvía notificaciones de rebote a una dirección de correo dadaupdate_forward_bounce_settings- Actualizar la configuración de reenvío de rebotes que reenvía notificaciones de rebote a una dirección de correo dadaget_forward_spam_settings- Recuperar la configuración actual de reenvío de spam, que reenvía notificaciones de informes de spam a una dirección de correo dadaupdate_forward_spam_settings- Actualizar la configuración de reenvío de spam que reenvía notificaciones de informes de spam a una dirección de correo dada
Claves de API (solo lectura)
list_api_keys- Lista todas las claves de API de la cuenta (solo nombres e IDs, no los valores secretos de las claves)get_api_key- Obtén detalles de una clave de API específica, incluidos sus alcances
Alertas (solo lectura)
list_alerts- Lista todas las alertas de uso/estadísticas configuradas en la cuentaget_alert- Obtén detalles de una alerta específica
Compañeros de equipo (solo lectura)
list_teammates- Lista todos los compañeros de equipo (usuarios) de la cuentaget_teammate- Obtén detalles de un compañero de equipo específico, incluidos sus alcances de permisoslist_pending_teammates- Lista las invitaciones de compañeros de equipo pendientes que aún no han sido aceptadas
IPs dedicadas (solo lectura)
list_ip_addresses- Lista todas las direcciones IP asignadas a la cuentaget_ip_address- Obtén detalles de una dirección IP específica, incluido su estado de calentamiento y subusuarios asignadoslist_assigned_ips- Lista todas las direcciones IP que están actualmente asignadas a un subusuariolist_ip_pools- Lista todos los grupos de IP de la cuentaget_ip_pool- Obtén detalles de un grupo de IP específico, incluidas las direcciones IP que contieneget_remaining_ips- Obtén el recuento y el costo de las direcciones IP dedicadas adicionales disponibles para compralist_ip_warmups- Lista todas las direcciones IP que están actualmente en proceso de calentamientoget_ip_warmup_status- Obtén el estado de calentamiento de una dirección IP específicalist_allowed_ips- Lista las direcciones IP permitidas para acceder a la cuenta a través de la API/UI (la lista de permitidos de acceso)get_allowed_ip- Obtén detalles de una entrada específica en la lista de permitidos de accesolist_access_activity- Lista los intentos recientes de acceso a la cuenta (inicios de sesión/llamadas a la API exitosos y bloqueados)
Biblioteca de Diseños
list_designs- Lista todos los diseños de correo electrónico personalizados en la Biblioteca de Diseñoscreate_design- Crea un nuevo diseño de correo electrónico personalizado en la Biblioteca de Diseños a partir de HTML sin procesarget_design- Obtén detalles de un diseño específico en la Biblioteca de Diseñosupdate_design- Actualiza el contenido o los metadatos de un diseño existente en la Biblioteca de Diseñosdelete_design- Elimina permanentemente un diseño personalizado de la Biblioteca de Diseños. Esta acción no se puede deshacer.duplicate_design- Crea una copia de un diseño existente en la Biblioteca de Diseñoslist_prebuilt_designs- Lista las plantillas de diseño predefinidas integradas de SendGridget_prebuilt_design- Obtén detalles de uno de los diseños predefinidos integrados de SendGridduplicate_prebuilt_design- Crea una copia editable de uno de los diseños predefinidos integrados de SendGrid
Validación de Direcciones de Correo Electrónico
validate_email- Comprueba si una dirección de correo electrónico es válida y probablemente entregable, utilizando la API de Validación de Direcciones de Correo Electrónico de SendGrid (consume un crédito de validación facturado por llamada)
Búsqueda de Mensajes
search_email_activity- Busca la actividad de mensajes enviados utilizando la sintaxis de filtro SGQL de SendGrid (por ejemplo, por destinatario, estado o asunto) — útil para solucionar problemas de por qué un correo electrónico específico no fue entregadoget_message_details- Obtén el historial completo de eventos de entrega y detalles de un solo mensaje enviado por su ID de mensaje
Recursos Disponibles
sendgrid://automations- Datos de automatizaciones de marketingsendgrid://singlesends- Datos de campañas de envío únicosendgrid://lists- Datos de listas de correo electrónicosendgrid://contacts- Datos de segmentos de contactossendgrid://suppressions- Listas de supresión (rebotes, spam, etc.)sendgrid://account- Información del perfil de la cuentasendgrid://stats- Estadísticas globales de correo electrónico y métricas de rendimiento (resumen de 30 días)sendgrid://stats/browsers- Estadísticas de correo electrónico por tipo de navegador (datos de 7 días)sendgrid://stats/devices- Estadísticas de correo electrónico por tipo de dispositivo (datos de 7 días)sendgrid://stats/geography- Estadísticas de correo electrónico por ubicación geográfica (datos de 7 días)sendgrid://stats/providers- Estadísticas de correo electrónico por proveedor de buzón (datos de 7 días)
Prompts Disponibles
sendgrid_automation_help- Obtén ayuda con automatizaciones de marketingsendgrid_campaign_help- Obtén ayuda con campañas de envío únicosendgrid_contacts_help- Obtén ayuda con la gestión integral de contactossendgrid_list_management_help- Obtén ayuda con operaciones CRUD de listas de correo electrónicosendgrid_update_list_help- Obtén ayuda con la actualización/renombrado de listas de correo electrónicosendgrid_contact_crud_help- Obtén ayuda con operaciones de crear/leer/actualizar/eliminar contactossendgrid_custom_fields_help- Obtén ayuda con la gestión de definiciones de campos personalizadossendgrid_segment_management_help- Obtén ayuda con la gestión de segmentos de contactos dinámicossendgrid_sender_management_help- Obtén ayuda con la gestión de identidad del remitentesendgrid_templates_help- Obtén ayuda con la creación y gestión de plantillas de correo electrónico dinámicassendgrid_suppressions_help- Obtén ayuda con listas de supresiónsendgrid_settings_help- Obtén ayuda con la configuración de la cuentasendgrid_mail_send_help- Obtén ayuda con el envío de correos electrónicossendgrid_stats_help- Obtén ayuda con el análisis del rendimiento y las estadísticas de correo electrónico
Desarrollo y Contribuciones
Esta sección es para desarrolladores que quieran modificar el servidor o contribuir al desarrollo.
Configuración de desarrollo, estructura del proyecto y guía de contribución
Requisitos previos
- Node.js 20+ y npm
- Cuenta de SendGrid con clave de API
- Git
Configuración de Desarrollo
# 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
Usando una compilación local en un cliente MCP (en lugar del binario instalado por 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"
}
}
}
}
Estructura del Proyecto
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
Agregar Nuevas Herramientas
- Agrega la definición de la herramienta al archivo apropiado en
src/tools/ - Sigue el patrón existente con configuración y manejador
- Exporta desde
src/tools/index.ts - Actualiza README.md con la documentación de la nueva herramienta
- Ejecuta
npm run buildpara compilar
Scripts Disponibles
npm run build- Compila TypeScript a JavaScriptnpm start- Ejecuta el servidor compiladonpm test- Compila y ejecuta la suite de pruebas
Probando Tus Cambios
# Build the project
npm run build
# Test with environment variables
SENDGRID_API_KEY="SG.your_key" READ_ONLY="true" node build/index.js
Para verificar manualmente que un cliente real pueda conectarse a través de cada modo de autenticación HTTP (token, none, TLS, OAuth) en lugar de solo la suite automatizada, consulta TESTING.md.
Creando un Lanzamiento
Solo para mantenedores:
-
Actualiza la versión en
package.json:npm version patch # or minor, major -
Envía los cambios y las etiquetas:
git push && git push --tags -
Crea un lanzamiento de GitHub: esto activa la publicación automática en npm a través de GitHub Actions
Proceso de Publicación
- Automatizado: GitHub Actions publica en npm al crear un lanzamiento
- Procedencia: Todos los paquetes incluyen atestación de procedencia por seguridad
- Versionado: Sigue el versionado semántico (semver)
- Paquete:
sendgrid-mcpen npm — actualiza connpm update -g sendgrid-mcp
Solución de Problemas
Problemas Comunes
6 problemas comunes y soluciones
1. Servidor No Encontrado / Comando No Encontrado
Error: sendgrid-mcp: command not found
Solución:
- Asegúrate de haber instalado globalmente:
npm install -g sendgrid-mcp - Verifica que el directorio bin global de npm esté en PATH:
npm config get prefix - Intenta reinstalar:
npm uninstall -g sendgrid-mcp && npm install -g sendgrid-mcp
2. Clave de API Inválida
Error: SENDGRID_API_KEY must start with 'SG.'
Solución:
- Asegúrate de que tu clave de API comience con
SG. - Verifica que copiaste la clave completa de SendGrid
- Revisa si hay espacios adicionales o comillas en tu configuración
- Genera una nueva clave de API en Claves de API de SendGrid
3. Errores de Permisos
Error: 403 Forbidden
Solución:
- Tu clave de API puede no tener permisos suficientes
- Crea una nueva clave con "Acceso Completo" o los alcances requeridos
- Verifica que la clave no haya sido revocada o expirada
4. El Modo de Solo Lectura Bloquea Operaciones
❌ Operation blocked: Server is running in READ_ONLY mode
Solución:
- Esto es una protección de seguridad intencional
- Para habilitar operaciones de escritura, establece
READ_ONLY: "false"en la configuración de tu cliente MCP - Ejemplo:
{ "env": { "SENDGRID_API_KEY": "SG.your_key", "READ_ONLY": "false" } }
5. El Cliente MCP No Detecta el Servidor
Solución:
- Verifica la ubicación del archivo de configuración para tu cliente específico
- Asegúrate de que la sintaxis JSON sea válida (sin comas finales, comillas adecuadas)
- Reinicia tu cliente MCP después de los cambios de configuración
- Revisa los registros del cliente para ver mensajes de error específicos
6. Tiempo de Espera de Conexión Agotado
Error: Request timeout
Solución:
- Verifica tu conexión a internet
- Aumenta el tiempo de espera en la configuración:
{ "env": { "REQUEST_TIMEOUT": "60000" } } - Verifica que la API de SendGrid sea accesible (no bloqueada por firewall/proxy)
Obtener Ayuda
- Ayuda Integrada: Usa los prompts de ayuda en tu cliente MCP (por ejemplo, pregúntale a Claude: "ayuda con automatizaciones de sendgrid")
- API de SendGrid: Documentación Oficial de la API
- Protocolo MCP: Documentación del Protocolo de Contexto de Modelo
- Problemas: Reporta errores en el repositorio de GitHub
Modo de Depuración
Habilita el registro detallado configurando LOG_LEVEL:
{
"env": {
"SENDGRID_API_KEY": "SG.your_key",
"LOG_LEVEL": "debug"
}
}
Esto proporcionará información detallada sobre las solicitudes y respuestas de la API.
Seguridad
¿Encontraste una vulnerabilidad? Por favor, repórtala de forma privada en lugar de abrir un problema público — consulta SECURITY.md.
Operaciones Intencionalmente No Soportadas
Un puñado de capacidades de la API de SendGrid se omiten deliberadamente de este servidor, además de lo que el modo READ_ONLY bloquea en tiempo de ejecución. Estas no son brechas que se llenarán más tarde — están excluidas porque permitir que un LLM las llame de forma autónoma conlleva un radio de explosión a nivel de cuenta que un interruptor de READ_ONLY por sí solo no mitiga (un operador que ejecuta con READ_ONLY=false para escrituras legítimas de automatización de marketing no debería estar también a una llamada de herramienta inyectada por prompt de perder acceso a la cuenta o presupuesto de API):
- Creación/rotación/eliminación de claves de API — solo se exponen
list_api_keys/get_api_key. Acuñar o eliminar claves de API es un objetivo clásico de inyección de prompts: una página web maliciosa o un correo electrónico que un agente procese podría intentar engañarlo para crear una nueva clave y exfiltrarla. - Invitaciones de compañeros de equipo, cambios de permisos y eliminación — solo se exponen
list_teammates/get_teammate/list_pending_teammates. Agregar, eliminar o re-permisionar compañeros de equipo es control de acceso a la cuenta con el mismo riesgo de inyección que las claves de API. - Compras de IP dedicadas, control de calentamiento y cambios en la lista de permitidos de acceso — solo se exponen herramientas de lectura/listado. Las IP dedicadas cuestan dinero real y afectan la infraestructura de entregabilidad a nivel de cuenta; los errores en la lista de permitidos de acceso pueden bloquear por completo el acceso legítimo a la API.
- Gestión de SSO y certificados — no se exponen en absoluto, en ninguna forma. Configurar mal el SSO puede bloquear a una organización completa del inicio de sesión, y esencialmente no hay una razón legítima para que un asistente de chat lo gestione.
Si necesitas alguna de estas para una automatización específica, usa el panel de control de SendGrid o la API directamente en lugar de solicitar que este servidor las agregue — eso es un límite de diseño deliberado, no una supervisión.
Licencia
Este proyecto está licenciado bajo la Licencia ISC.
Contribuciones
- Haz un fork del repositorio
- Crea una rama de características
- Realiza tus cambios
- Prueba a fondo
- Envía una solicitud de extracción
Soporte
Para problemas relacionados con:
- API de SendGrid: Consulta la Documentación de SendGrid
- Protocolo MCP: Consulta el Protocolo de Contexto de Modelo
- Este Servidor: Abre un problema en este repositorio
Comentarios
Trabajo en SendGrid y mantengo este proyecto. Los comentarios, informes de errores y solicitudes de funciones siempre son bienvenidos — por favor abre un problema o inicia una discusión en el repositorio.