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

Listed on mcpservers.org smithery badge

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.

Deploying from a GitHub repo Deploying from an npm package

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:

ModoUso paraRequiere
oauthProducción / clientes remotosMCP_OAUTH_ISSUER, MCP_OAUTH_AUDIENCE
tokenDesarrollo local, autoalojamiento simpleMCP_AUTH_TOKEN (16+ caracteres)
noneSolo 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
  1. Inicia sesión en tu Panel de Auth0 y ve a Aplicaciones → APIs → Crear API.
  2. Establece un Identificador — esta es tu audiencia, p. ej. https://mcp.example.com. No necesita resolver a nada; solo necesita ser único.
  3. En la pestaña Permisos de la API, agrega los alcances que tu servidor debe requerir, p. ej. sendgrid:read, sendgrid:write.
  4. 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
  1. Inicia sesión en la Consola de administración de Okta y ve a Seguridad → API → Servidores de autorización.
  2. 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 como https://{yourOktaDomain}/oauth2/{authServerId}.
  3. 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.
  4. 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)
  1. En el Portal de Azure, ve a Microsoft Entra ID → Registros de aplicaciones → Nuevo registro para representar este servidor MCP como un recurso.
  2. 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>.
  3. En la misma página, haz clic en Agregar un alcance para definir uno, p. ej. sendgrid.read.
  4. 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=none en cualquier cosa que no sea un enlace de bucle local
  • Un http:// MCP_PUBLIC_URL que no sea de bucle local
  • Un MCP_AUTH_TOKEN faltante o de longitud insuficiente, o modo oauth sin un emisor y audiencia
  • TLS_KEY_FILE y TLS_CERT_FILE establecidos solo uno del par

Más allá de eso:

  • Mantén READ_ONLY=true a 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_ORIGINS para 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

  1. Ve a Claves de API de SendGrid
  2. Haz clic en "Crear clave de API"
  3. Elige "Acceso completo" o selecciona permisos específicos
  4. 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 VariablesMis credenciales, y completa:

MCP Market Variables tab showing SENDGRID_API_KEY and other credentials

VariableObligatorioDescripción
SENDGRID_API_KEYTu clave de API de SendGrid (empieza con SG.)
MCP_SERVER_NAMENombre del servidor para identificación
MCP_SERVER_VERSIONVersión del servidor
LOG_LEVELNivel de registro (debug, info, warn, error)
REQUEST_TIMEOUTTiempo de espera de solicitudes de API en milisegundos
READ_ONLYHabilitar 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.

MCP Market's Install server panel with one-click client options

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:

  1. Guarda el archivo
  2. Reinicia Claude Desktop
  3. 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:

  1. Instala la extensión Cline desde el marketplace de VS Code
  2. 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.

VariableObligatorioDescripciónPredeterminado
SENDGRID_API_KEYTu clave de API de SendGrid (empieza con SG.)-
READ_ONLYHabilitar modo de solo lectura (true/false)true
MCP_SERVER_NAMENombre del servidor para identificaciónsendgrid-mcp
MCP_SERVER_VERSIONVersión del servidor1.0.0
LOG_LEVELNivel de registro (debug, info, warn, error)info
REQUEST_TIMEOUTTiempo de espera de solicitudes de API en milisegundos30000

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_editor
  • list_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_emails
  • list_email_lists
  • list_segments, open_segment_creator
  • list_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_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

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

CategoríaHerramientasSolo lecturaMutables
Automatizaciones de marketing743
Campañas de envío único440
Operaciones CRUD de contactos743
Gestión de listas de correo615
Segmentos y campos personalizados835
Remitentes e importación422
Plantillas dinámicas1147
Envío de correo101
Estadísticas y análisis de correo990
Utilidades110
Supresiones211011
Autenticación de dominio y marca de enlaces1358
Webhooks de eventos y análisis de entrada1257
Configuración de seguimiento954
Configuración de correo1165
Claves de API (solo lectura)220
Alertas (solo lectura)220
Compañeros de equipo (solo lectura)330
IP dedicadas (solo lectura)11110
Biblioteca de diseño945
Validación de direcciones de correo101
Búsqueda de mensajes220
Total1548767

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 metadatos
  • get_automation - Obtiene información detallada sobre una automatización específica
  • update_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ón
  • open_automation_creator - Abre el creador de automatizaciones en el navegador
  • open_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 metadatos
  • get_single_send - Recupera el contenido detallado y la configuración de una campaña de envío único
  • open_single_send_creator - Abre el creador de campañas en el navegador para diseño visual
  • open_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 filtrado
  • get_contact - Obtiene información detallada sobre un contacto específico
  • create_contact - Crea nuevos contactos con campos personalizados
  • update_contact - Actualiza la información de contactos existentes y datos personalizados
  • delete_contact - Elimina contactos permanentemente con limpieza
  • search_contacts - Busca contactos usando condiciones de consulta avanzadas
  • search_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 correo
  • create_email_list - Crea una nueva lista de correo
  • update_email_list - Actualiza las propiedades de la lista de correo
  • delete_email_list - Elimina una lista de correo
  • create_contact_with_lists - Crea contactos y los asigna a listas
  • remove_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 criterios
  • open_segment_creator - Abrir el creador de segmentos en el navegador para construcción visual de consultas
  • update_segment - Actualizar el nombre o los criterios de consulta de un segmento existente con actualización en tiempo real
  • delete_segment - Eliminar un segmento existente (los contactos no se ven afectados)
  • list_custom_fields - Listar definiciones de campos personalizados con tipos de datos
  • create_custom_field - Crear nuevos campos personalizados (tipos Texto, Número, Fecha)
  • update_custom_field - Actualizar definiciones de campos personalizados existentes
  • delete_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 verificadas
  • create_sender - Crear nueva identidad de remitente
  • delete_sender - Eliminar una identidad de remitente verificada
  • open_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 heredadas
  • get_template - Obtener detalles de una plantilla específica, incluyendo todas sus versiones
  • create_template - Crear una nueva plantilla dinámica
  • update_template - Actualizar el nombre y la configuración de la plantilla
  • delete_template - Eliminar una plantilla y todas sus versiones
  • create_template_version - Crear una nueva versión con contenido HTML y configuración
  • get_template_version - Obtener detalles de una versión específica de plantilla
  • update_template_version - Actualizar contenido, asunto y configuración de la versión
  • delete_template_version - Eliminar una versión específica de plantilla
  • create_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 correos
  • get_stats_overview - Obtener estadísticas completas en múltiples dimensiones
  • get_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/provincia
  • get_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 cuenta
  • create_suppression_group - Crear un nuevo grupo de baja (exclusión)
  • get_suppression_group - Obtener detalles sobre un grupo de baja (exclusión) específico
  • update_suppression_group - Actualizar el nombre, la descripción o el estado predeterminado de un grupo de exclusión existente
  • delete_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ífico
  • add_group_suppressions - Agregar una o más direcciones de correo a la lista de bajas de un grupo de exclusión específico
  • remove_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 tiempo
  • add_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 cuenta
  • get_global_suppression - Verificar si una dirección de correo específica está en la lista global de bajas de toda la cuenta
  • delete_global_suppression - Eliminar una dirección de correo de la lista global de exclusiones de toda la cuenta, reinscribiéndola efectivamente al correo no transaccional
  • list_bounces - Listar todas las direcciones de correo que han rebotado, opcionalmente filtradas por un rango de tiempo
  • get_bounce - Obtener los eventos de rebote registrados para una dirección de correo específica
  • delete_bounce - Eliminar un registro de rebote para una dirección de correo para que esta pueda volver a recibir correos
  • list_blocks - Listar todas las direcciones de correo actualmente en la lista de bloqueos, opcionalmente filtradas por un rango de tiempo
  • delete_block - Eliminar una dirección de correo de la lista de bloqueos para que esta pueda volver a recibir correos
  • list_spam_reports - Listar todas las direcciones de correo que han reportado correos como spam, opcionalmente filtradas por un rango de tiempo
  • delete_spam_report - Eliminar una dirección de correo de la lista de informes de spam para que esta pueda volver a recibir correos
  • list_invalid_emails - Listar todas las direcciones de correo que han sido marcadas como inválidas, opcionalmente filtradas por un rango de tiempo
  • delete_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 correos
  • get_authenticated_domain - Obtener información detallada sobre un dominio autenticado específico, incluyendo sus registros DNS
  • create_authenticated_domain - Configurar la autenticación de dominio (SPF/DKIM) para el envío de correos desde un dominio personalizado
  • update_authenticated_domain - Actualizar el SPF personalizado o la configuración predeterminada de un dominio autenticado existente
  • delete_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ón
  • get_default_authenticated_domain - Obtener el dominio autenticado actualmente configurado como predeterminado para el envío de correos
  • list_branded_links - Listar todos los enlaces con marca (whitelabels de enlace) configurados para el seguimiento de clics
  • get_branded_link - Obtener información detallada sobre un enlace con marca específico, incluyendo sus registros DNS
  • create_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 existente
  • delete_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 cuenta
  • get_event_webhook - Obtener la configuración de un Webhook de Eventos específico por ID
  • create_event_webhook - Crea un nuevo Webhook de Eventos que envía eventos de correo (entregado, rebotado, abierto, clicado, etc.) a la URL dada
  • update_event_webhook - Actualizar la configuración de un Webhook de Eventos existente
  • delete_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 correctamente
  • list_inbound_parse_settings - Listar todas las configuraciones de webhook de Análisis de Entrada en la cuenta
  • get_inbound_parse_setting - Obtener la configuración del webhook de Análisis de Entrada para un nombre de host específico
  • create_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 dada
  • update_inbound_parse_setting - Actualizar la configuración del webhook de Análisis de Entrada para un nombre de host específico
  • delete_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 llamada
  • get_click_tracking_settings - Recuperar la configuración actual de seguimiento de clics
  • update_click_tracking_settings - Habilitar o deshabilitar el seguimiento de clics en los enlaces dentro de los correos
  • get_google_analytics_settings - Recuperar la configuración actual de seguimiento de Google Analytics
  • update_google_analytics_settings - Actualizar la configuración de seguimiento de Google Analytics, incluyendo valores de campaña UTM, contenido, medio, fuente y término
  • get_open_tracking_settings - Recuperar la configuración actual de seguimiento de aperturas
  • update_open_tracking_settings - Habilitar o deshabilitar el seguimiento de aperturas, que inserta un píxel invisible para registrar cuándo se abre un correo
  • get_subscription_tracking_settings - Recuperar la configuración actual de seguimiento de suscripciones
  • update_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 llamada
  • get_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ón
  • update_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ón
  • get_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ías
  • update_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ías
  • get_footer_settings - Recuperar la configuración actual de pie de página, que agrega un pie de página a cada correo saliente
  • update_footer_settings - Actualizar la configuración de pie de página que agrega un pie de página a cada correo saliente
  • get_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 dada
  • update_forward_bounce_settings - Actualizar la configuración de reenvío de rebotes que reenvía notificaciones de rebote a una dirección de correo dada
  • get_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 dada
  • update_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 cuenta
  • get_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 cuenta
  • get_teammate - Obtén detalles de un compañero de equipo específico, incluidos sus alcances de permisos
  • list_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 cuenta
  • get_ip_address - Obtén detalles de una dirección IP específica, incluido su estado de calentamiento y subusuarios asignados
  • list_assigned_ips - Lista todas las direcciones IP que están actualmente asignadas a un subusuario
  • list_ip_pools - Lista todos los grupos de IP de la cuenta
  • get_ip_pool - Obtén detalles de un grupo de IP específico, incluidas las direcciones IP que contiene
  • get_remaining_ips - Obtén el recuento y el costo de las direcciones IP dedicadas adicionales disponibles para compra
  • list_ip_warmups - Lista todas las direcciones IP que están actualmente en proceso de calentamiento
  • get_ip_warmup_status - Obtén el estado de calentamiento de una dirección IP específica
  • list_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 acceso
  • list_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ños
  • create_design - Crea un nuevo diseño de correo electrónico personalizado en la Biblioteca de Diseños a partir de HTML sin procesar
  • get_design - Obtén detalles de un diseño específico en la Biblioteca de Diseños
  • update_design - Actualiza el contenido o los metadatos de un diseño existente en la Biblioteca de Diseños
  • delete_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ños
  • list_prebuilt_designs - Lista las plantillas de diseño predefinidas integradas de SendGrid
  • get_prebuilt_design - Obtén detalles de uno de los diseños predefinidos integrados de SendGrid
  • duplicate_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 entregado
  • get_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 marketing
  • sendgrid://singlesends - Datos de campañas de envío único
  • sendgrid://lists - Datos de listas de correo electrónico
  • sendgrid://contacts - Datos de segmentos de contactos
  • sendgrid://suppressions - Listas de supresión (rebotes, spam, etc.)
  • sendgrid://account - Información del perfil de la cuenta
  • sendgrid://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 marketing
  • sendgrid_campaign_help - Obtén ayuda con campañas de envío único
  • sendgrid_contacts_help - Obtén ayuda con la gestión integral de contactos
  • sendgrid_list_management_help - Obtén ayuda con operaciones CRUD de listas de correo electrónico
  • sendgrid_update_list_help - Obtén ayuda con la actualización/renombrado de listas de correo electrónico
  • sendgrid_contact_crud_help - Obtén ayuda con operaciones de crear/leer/actualizar/eliminar contactos
  • sendgrid_custom_fields_help - Obtén ayuda con la gestión de definiciones de campos personalizados
  • sendgrid_segment_management_help - Obtén ayuda con la gestión de segmentos de contactos dinámicos
  • sendgrid_sender_management_help - Obtén ayuda con la gestión de identidad del remitente
  • sendgrid_templates_help - Obtén ayuda con la creación y gestión de plantillas de correo electrónico dinámicas
  • sendgrid_suppressions_help - Obtén ayuda con listas de supresión
  • sendgrid_settings_help - Obtén ayuda con la configuración de la cuenta
  • sendgrid_mail_send_help - Obtén ayuda con el envío de correos electrónicos
  • sendgrid_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

  1. Agrega la definición de la herramienta al archivo apropiado en src/tools/
  2. Sigue el patrón existente con configuración y manejador
  3. Exporta desde src/tools/index.ts
  4. Actualiza README.md con la documentación de la nueva herramienta
  5. Ejecuta npm run build para compilar

Scripts Disponibles

  • npm run build - Compila TypeScript a JavaScript
  • npm start - Ejecuta el servidor compilado
  • npm 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:

  1. Actualiza la versión en package.json:

    npm version patch  # or minor, major
    
  2. Envía los cambios y las etiquetas:

    git push && git push --tags
    
  3. 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-mcp en npm — actualiza con npm 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

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

  1. Haz un fork del repositorio
  2. Crea una rama de características
  3. Realiza tus cambios
  4. Prueba a fondo
  5. Envía una solicitud de extracción

Soporte

Para problemas relacionados con:

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.