SendGrid MCP
Um servidor Model Context Protocol (MCP) que fornece acesso abrangente à API v3 do SendGrid para marketing por e-mail, operações de e-mail transacional, gerenciamento de modelos dinâmicos e análises detalhadas. Possui 58 ferramentas que cobrem todos os aspectos do gerenciamento de e-mail e análise de desempenho.
Documentação
Servidor SendGrid MCP
Um servidor Model Context Protocol (MCP) que fornece acesso abrangente à API v3 do SendGrid para email marketing, operações de email transacional, gerenciamento de templates dinâmicos e análises detalhadas. Possui 154 ferramentas cobrindo todos os aspectos do gerenciamento de email e análise de desempenho.
Construído e mantido por um engenheiro do SendGrid, como um projeto independente — não é um produto oficial do SendGrid.
Consulte RELEASES.md para ver o que mudou na versão mais recente.
Recursos
- Automações de Marketing: Crie e gerencie fluxos de trabalho de automação de email
- Campanhas de Envio Único: Gerencie campanhas de email pontuais com rastreamento detalhado de desempenho
- Gerenciamento de Contatos: Operações CRUD completas para contatos com busca avançada e operações em lote
- Estatísticas e Análises de Email: Análise de desempenho multidimensional em navegadores, dispositivos, geografia e provedores de email com dados históricos de 13 meses
- Gerenciamento de Segmentos Dinâmicos: Crie, atualize e exclua segmentos de contatos com critérios de filtragem complexos que são atualizados automaticamente
- Gerenciamento de Templates Dinâmicos: Crie, gerencie e versione templates de email HTML com suporte a Handlebars para personalização
- Gerenciamento de Campos Personalizados: Defina e gerencie campos adicionais de dados de contato para segmentação aprimorada
- Envio de Email: Envie emails transacionais via SendGrid com suporte completo a personalização
- Gerenciamento de Identidade do Remetente: Gerencie identidades de remetente verificadas com rastreamento de autenticação
- Listas de Supressão: Gerencie rejeições, relatórios de spam e cancelamentos de inscrição para otimização de entregabilidade
- Configurações da Conta: Acesse detalhes da conta e gerenciamento de configuração
- Integração com Navegador: Links rápidos para a interface web do SendGrid para operações visuais
- Modo de Segurança Somente Leitura: Modo de operação seguro que previne modificação acidental de dados enquanto mantém acesso completo a análises
Clientes MCP Suportados
✅ Claude Desktop - Aplicativo desktop oficial ✅ Claude Code - Ferramenta CLI oficial ✅ Conectores personalizados Claude - via Streamable HTTP (consulte Instalar o servidor) ✅ OpenAI Responses API / Apps SDK - via Streamable HTTP ✅ MCP Market - Hospedado, implantação com um clique, sem necessidade de instalação (consulte Instalar o servidor) ✅ Cline - Extensão do VS Code ✅ Zed Editor - Editor de código moderno ✅ Continue - Autopiloto do VS Code ✅ Codex CLI - via Streamable HTTP ✅ Qualquer cliente compatível com MCP
Primeiros Passos
Siga estes passos em ordem — ao final, você terá o servidor instalado (ou implantado), sua chave de API do SendGrid configurada e seu cliente MCP conectado.
Este é o caminho real de solicitação, independentemente do cliente que você usar — alguns iniciam o servidor localmente via stdio, outros o acessam pela rede via Streamable HTTP (MCP Market, auto-hospedado), o que adiciona uma escolha de autenticação de cliente por cima:
┌──────────┐
│ 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 é obrigatório independentemente do caminho que você escolher. READ_ONLY=true
(o padrão) é uma barreira adicional dentro da caixa do Servidor MCP — ele bloqueia
ferramentas de criar/atualizar/excluir/enviar uma vez que a solicitação já entrou, independentemente de
qual ramo ela chegou. Consulte Variáveis de Ambiente
para a lista completa do que você pode configurar.
1. Instalar o servidor
Instale-o localmente se seu cliente o inicia por conta própria, ou vá remoto se ele se conecta pela rede.
Local (stdio) — para Claude Desktop, Claude Code, Cline, Zed, Continue, ou qualquer cliente que execute o servidor como subprocesso:
npm install -g sendgrid-mcp
Isso instala o comando sendgrid-mcp globalmente, que seu cliente MCP iniciará como subprocesso. Requer Node.js 20+.
Remoto (HTTP) — nada para instalar localmente; escolha um:
MCP Market (hospedado, sem necessidade de instalação)
O MCP Market implanta e hospeda este servidor para você — nada para instalar localmente e nenhuma variável de ambiente para gerenciar em sua máquina. Você ainda precisa de uma chave de API do SendGrid; você a inserirá no MCP Market em vez do seu próprio shell/config.
Na página Servidores MCP do MCP Market, implante um MCP personalizado de qualquer fonte:
- GitHub — selecione a fonte GitHub, escolha repositório Público ou Privado, cole
a URL do repositório (
https://github.com/deyikong/sendgrid-mcp) e escolha um nome de servidor. - npm — selecione a fonte npm, insira o nome do pacote (
sendgrid-mcp) e escolha um nome de servidor.

De qualquer forma, o MCP Market compila e executa para você; ele aparece em
Servidores MCP com um status Running quando estiver pronto. Continue para
Configurar seu cliente MCP para definir suas
credenciais e conectar.
Auto-hospedado (Streamable HTTP)
Execute o servidor você mesmo e exponha-o via Streamable HTTP em vez de deixar
um cliente iniciá-lo localmente — para conectores personalizados Claude, a ferramenta
mcp da API Responses da OpenAI / Apps SDK, ou qualquer outro cliente remoto.
O endpoint MCP é POST /mcp; GET /health retorna um documento de status para
balanceadores de carga. As solicitações são tratadas sem estado (nenhum id de sessão necessário),
que é o que clientes hospedados esperam.
none/token/oauth abaixo não são formas alternativas de conectar — são
três travas diferentes na única nova porta (HTTP), como mostrado no
diagrama de fluxo de solicitação acima.
Início rápido (desenvolvimento 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
Autenticação
Defina MCP_AUTH_MODE para um dos seguintes:
| Modo | Uso para | Requer |
|---|---|---|
oauth | Produção / clientes remotos | MCP_OAUTH_ISSUER, MCP_OAUTH_AUDIENCE |
token | Desenvolvimento local, auto-hospedagem simples | MCP_AUTH_TOKEN (16+ caracteres) |
none | Somente desenvolvimento loopback | — recusa iniciar em bind público |
Modo OAuth torna este servidor um servidor de recursos OAuth 2.1. Ele não emite ou armazena credenciais — ele verifica tokens de acesso emitidos pelo seu provedor de identidade existente (Auth0, Okta, Entra ID, Google, Stytch, …) contra o JWKS publicado desse provedor.
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 (veja o diagrama em Primeiros Passos)
ainda é obrigatório junto com estes — OAuth apenas controla quem pode acessar o servidor, não o que o servidor
usa para falar com o SendGrid.
O servidor publica RFC 9728
Metadados de Recurso Protegido em /.well-known/oauth-protected-resource, então
clientes descobrem seu servidor de autorização automaticamente: uma solicitação
não autenticada recebe um 401 cujo cabeçalho WWW-Authenticate aponta para esse documento,
o cliente o lê, envia o usuário ao seu IdP para fazer login e tenta novamente com o
token resultante.
Tokens são rejeitados (401) se expirados, assinados incorretamente ou emitidos para um
emissor ou público diferente; um token válido sem um escopo obrigatório recebe 403.
Configurando seu provedor de identidade
Qualquer que seja o provedor que você usar, você está configurando as mesmas três coisas: uma URL do emissor, um público (um identificador estável para este recurso de API) e um escopo que os clientes solicitarão. Alguns tutoriais concretos:
Auth0
- Entre no seu Painel Auth0 e vá para Applications → APIs → Create API.
- Defina um Identifier — este é seu público, por exemplo,
https://mcp.example.com. Não precisa resolver para nada; apenas precisa ser único. - Na aba Permissions da API, adicione os escopos que seu servidor deve
exigir, por exemplo,
sendgrid:read,sendgrid:write. - Sua URL do emissor é o domínio do seu tenant, mostrado na aba Settings
da 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
- Entre no Console de Administração Okta e vá para Security → API → Authorization Servers.
- Use o servidor de autorização
default, ou crie um novo. Sua Issuer URI, mostrada no topo da página de configurações do servidor, parecehttps://{yourOktaDomain}/oauth2/{authServerId}. - Na mesma página, o campo Audience (padrão
api://default) é o que você usará para o público — defina-o para algo específico deste servidor, por exemplo,api://sendgrid-mcp. - Abra a aba Scopes e adicione um escopo, por exemplo,
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)
- No Portal Azure, vá para Microsoft Entra ID → App registrations → New registration para representar este servidor MCP como um recurso.
- Abra a página Expose an API do novo aplicativo e defina o
Application ID URI — isso se torna seu público, por exemplo,
api://<client-id>. - Na mesma página, clique em Add a scope para definir um, por exemplo,
sendgrid.read. - Sua URL do emissor é
https://login.microsoftonline.com/{tenant-id}/v2.0, onde{tenant-id}é o ID do diretório (tenant) da página Overview do aplicativo.
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"
Outros provedores (Google Identity Platform, Stytch, …) seguem o mesmo formato:
encontre o emissor OpenID Connect (geralmente publicado em
<issuer>/.well-known/openid-configuration), defina um identificador de público/recurso
para este servidor e crie um escopo para ele.
Qualquer que seja o provedor que você usar, também defina MCP_PUBLIC_URL para a
URL acessível externamente do seu servidor (por exemplo, https://mcp.example.com) —
clientes a usam durante a descoberta OAuth.
TLS
Ou encerre TLS no processo:
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
…ou encerre-o em um proxy e informe ao servidor para confiar nos cabeçalhos encaminhados:
export TRUST_PROXY=true
export MCP_PUBLIC_URL="https://mcp.example.com"
TRUST_PROXY está desativado por padrão porque os cabeçalhos X-Forwarded-* são
controlados pelo cliente, a menos que um proxy que você controla os sobrescreva. TLS 1.2 é o
mínimo aplicado no modo em processo.
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): adicione https://mcp.example.com/mcp como um conector
personalizado. No modo oauth, o Claude percorre o fluxo de descoberta e solicita que o usuário
faça login; no modo token, forneça o token de portador diretamente.
Segurança
O servidor recusa iniciar em configurações incorretas que exporiam silenciosamente sua conta SendGrid, em vez de iniciar em um modo mais fraco do que o pretendido:
- Vincular a um endereço não-loopback sem TLS ou
TRUST_PROXY MCP_AUTH_MODE=noneem qualquer coisa que não seja um bind loopback- Um
http://MCP_PUBLIC_URLque não seja loopback - Um
MCP_AUTH_TOKENausente ou abaixo do comprimento mínimo, ou modooauthsem um emissor e público TLS_KEY_FILEeTLS_CERT_FILEdefinidos apenas um do par
Além disso:
- Mantenha
READ_ONLY=truea menos que você precise de operações de escrita e envio. Esta é a limitação mais eficaz do raio de impacto — é a diferença entre um token vazado expondo análises e um enviando email do seu domínio. - Defina
MCP_ALLOWED_HOSTS/MCP_ALLOWED_ORIGINSpara habilitar proteção contra rebinding de DNS, que é mais importante para servidores vinculados localmente acessíveis de um navegador. - Limite sua chave de API do SendGrid apenas às permissões que este servidor precisa; a chave é a credencial real por trás de cada solicitação.
2. Obtenha sua chave de API do SendGrid
- Vá para Chaves de API do SendGrid
- Clique em "Create API Key"
- Escolha "Full Access" ou selecione permissões específicas
- Copie a chave gerada (começa com
SG.)
3. Configure seu cliente MCP
MCP Market
Uma vez que seu servidor esteja implantado (consulte Instalar o servidor), defina suas credenciais e conecte um cliente.
Defina suas variáveis de ambiente
Abra seu servidor implantado → a aba Variables → My Credentials, e preencha:

| Variável | Obrigatória | Descrição |
|---|---|---|
SENDGRID_API_KEY | ✅ | Sua chave de API do SendGrid (começa com SG.) |
MCP_SERVER_NAME | ❌ | Nome do servidor para identificação |
MCP_SERVER_VERSION | ❌ | Versão do servidor |
LOG_LEVEL | ❌ | Nível de registro (debug, info, warn, error) |
REQUEST_TIMEOUT | ❌ | Tempo limite de solicitação da API em milissegundos |
READ_ONLY | ❌ | Ativar modo somente leitura (true/false) |
Cada campo é salvo de forma independente — apenas SENDGRID_API_KEY é obrigatório.
Conectar um cliente
Clique em + Connect na página do seu servidor. O MCP Market mostra opções de instalação com um clique para Claude Desktop, Claude Code, Codex CLI, Cursor, VS Code, Windsurf, Cline, JetBrains, Gemini CLI, Amazon Q, Goose e Continue — escolha o seu e siga o prompt.

Para qualquer outro cliente, use a opção Connection URL, que fornece
um endpoint HTTP Streamable exclusivo para sua implantação. Os exemplos abaixo
usam deyikong/sendgrid-mcp apenas para ilustração — o seu terá seu próprio
nome de usuário e nome de servidor:
https://link.mcpmarket.com/<your-username>/<your-server-name>/mcp
Conecte da mesma forma que qualquer outro endpoint self-hosted, por exemplo:
# 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
O MCP Market gerencia hospedagem, TLS e disponibilidade do servidor implantado; para dúvidas sobre conta, cobrança ou implantação, consulte o MCP Market diretamente em vez deste repositório.
Claude Desktop
O aplicativo desktop oficial do Claude com suporte nativo a MCP.
Locais dos arquivos de configuração:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%/Claude/claude_desktop_config.json
Configuração:
{
"mcpServers": {
"sendgrid": {
"command": "sendgrid-mcp",
"env": {
"SENDGRID_API_KEY": "SG.your_api_key_here",
"READ_ONLY": "true"
}
}
}
}
Configuração opcional:
{
"mcpServers": {
"sendgrid": {
"command": "sendgrid-mcp",
"env": {
"SENDGRID_API_KEY": "SG.your_api_key_here",
"READ_ONLY": "false",
"LOG_LEVEL": "info",
"REQUEST_TIMEOUT": "30000"
}
}
}
}
Após a configuração:
- Salve o arquivo
- Reinicie o Claude Desktop
- O servidor SendGrid MCP estará disponível no Claude
Claude Code (CLI)
Interface de linha de comando oficial do Claude com suporte a MCP.
Instalação:
npm install -g @anthropic-ai/claude-code
Local do arquivo de configuração:
- Todas as plataformas:
~/.claude/config.json
Configuração:
{
"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 (Extensão do VS Code)
Extensão popular do VS Code com suporte a MCP.
Instalação:
- Instale a extensão Cline no marketplace do VS Code
- Abra as configurações do Cline
Arquivo de configuração:
- Abra as Configurações do VS Code
- Pesquise por "Cline: MCP Settings"
- Edite o JSON de configuração do MCP
Configuração:
{
"mcpServers": {
"sendgrid": {
"command": "sendgrid-mcp",
"env": {
"SENDGRID_API_KEY": "SG.your_api_key_here",
"READ_ONLY": "true"
}
}
}
}
Editor Zed
Editor de código moderno com IA integrada e suporte a MCP.
Local do arquivo de configuração:
- macOS/Linux:
~/.config/zed/settings.json - Windows:
%APPDATA%/Zed/settings.json
Configuração:
{
"context_servers": {
"sendgrid-mcp": {
"command": "sendgrid-mcp",
"env": {
"SENDGRID_API_KEY": "SG.your_api_key_here",
"READ_ONLY": "true"
}
}
}
}
Continue (Extensão do VS Code)
Piloto automático de código aberto para VS Code com suporte a MCP.
Local do arquivo de configuração:
- Todas as plataformas:
~/.continue/config.json
Configuração:
{
"experimental": {
"modelContextProtocolServers": [
{
"command": "sendgrid-mcp",
"env": {
"SENDGRID_API_KEY": "SG.your_api_key_here",
"READ_ONLY": "true"
}
}
]
}
}
Cliente MCP Genérico
Para qualquer cliente compatível com MCP não listado acima:
Linha de comando:
# With environment variables
SENDGRID_API_KEY="SG.your_api_key_here" READ_ONLY="true" sendgrid-mcp
Modelo de configuração:
{
"command": "sendgrid-mcp",
"env": {
"SENDGRID_API_KEY": "SG.your_api_key_here",
"READ_ONLY": "true"
}
}
Variáveis de Ambiente
O servidor é configurado inteiramente por meio de variáveis de ambiente. SENDGRID_API_KEY é a única obrigatória.
| Variável | Obrigatória | Descrição | Padrão |
|---|---|---|---|
SENDGRID_API_KEY | ✅ | Sua chave de API do SendGrid (começa com SG.) | - |
READ_ONLY | ❌ | Ativar modo somente leitura (true/false) | true |
MCP_SERVER_NAME | ❌ | Nome do servidor para identificação | sendgrid-mcp |
MCP_SERVER_VERSION | ❌ | Versão do servidor | 1.0.0 |
LOG_LEVEL | ❌ | Nível de registro (debug, info, warn, error) | info |
REQUEST_TIMEOUT | ❌ | Tempo limite de solicitação da API em milissegundos | 30000 |
READ_ONLY tem como padrão true. Nesse modo, todas as ferramentas são registradas e visíveis, mas operações que criam, atualizam, excluem ou enviam são bloqueadas em tempo de execução com uma mensagem de erro clara — apenas ferramentas de listar/obter/buscar/abrir link no navegador realmente são executadas. Este é o padrão mais seguro enquanto você está se configurando. Consulte Modo Somente Leitura para a análise completa do que é bloqueado e defina READ_ONLY=false quando estiver pronto para permitir operações de gravação e envio.
Essas variáveis são definidas na configuração do seu cliente MCP (como um bloco env) — consulte Configurar seu cliente MCP. O modo HTTP auto-hospedado tem seu próprio conjunto de variáveis (transporte, autenticação, TLS) — consulte Instalar o servidor.
Modo Somente Leitura
Modo Somente Leitura
Por padrão, o servidor SendGrid MCP é executado em modo somente leitura (READ_ONLY=true) por segurança. Todas as ferramentas são registradas e disponíveis, mas operações mutáveis são bloqueadas em tempo de execução com mensagens de erro úteis.
Como Funciona o Modo Somente Leitura
Quando READ_ONLY=true (padrão):
- Todas as ferramentas são registradas e visíveis para o assistente de IA
- Operações não mutáveis funcionam normalmente (listar, obter, buscar, abrir links no navegador)
- Operações mutáveis são bloqueadas com uma mensagem de erro clara:
❌ Operation blocked: Server is running in READ_ONLY mode. Set READ_ONLY=false in your environment to enable write operations.
Operações Seguras no Modo Somente Leitura
Estas 32 operações funcionam normalmente quando READ_ONLY=true:
Automações e Campanhas:
list_automations,get_automation,open_automation_creator,open_automation_editorlist_single_sends,get_single_send,open_single_send_creator,open_single_send_stats
Contatos, Listas e Segmentos:
list_contacts,get_contact,search_contacts,search_contacts_by_emailslist_email_listslist_segments,open_segment_creatorlist_custom_fields
Remetentes:
list_senders,open_csv_uploader
Modelos:
list_templates,get_template,get_template_version,open_template_editor
Estatísticas (todas somente leitura por design):
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
Utilitários:
get_scopes
Operações Bloqueadas no Modo Somente Leitura
Estas 26 operações são bloqueadas quando 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 Acesso Total
Para habilitar operações de criar, atualizar, excluir e enviar, defina READ_ONLY=false no bloco env do seu cliente MCP:
{
"env": {
"SENDGRID_API_KEY": "SG.your_api_key_here",
"READ_ONLY": "false"
}
}
Isso permitirá que todas as operações mutáveis sejam executadas normalmente, mantendo todas as operações de leitura.
⚠️ Nota de Segurança: Desative o modo somente leitura apenas se precisar de acesso de gravação e confiar no ambiente onde o servidor está sendo executado.
Ferramentas Disponíveis
O servidor expõe 154 ferramentas agrupadas em 22 categorias. Todas as ferramentas são registradas independentemente do modo READ_ONLY — consulte Modo Somente Leitura para saber quais são bloqueadas por padrão.
📚 Para prompts em linguagem natural que você pode dizer diretamente ao Claude, consulte EXAMPLE_PROMPTS.md. Os exemplos abaixo mostram as chamadas de ferramentas JSON subjacentes.
Resumo das Ferramentas
Chaves de API, Alertas, Colegas de Equipe e IPs Dedicados são deliberadamente somente leitura neste servidor, e o gerenciamento de SSO/certificados não é exposto — consulte Operações Intencionalmente Não Suportadas para saber o motivo.
Automações de Marketing
list_automations- Listar todas as automações de marketing com metadadosget_automation- Obter informações detalhadas sobre uma automação específicaupdate_automation_settings- Atualizar configurações no nível da automação (nome, status)update_automation_step- Atualizar configurações de etapas individuais (status, tempo de espera)delete_automation- Excluir permanentemente uma automaçãoopen_automation_creator- Abrir o criador de automações no navegadoropen_automation_editor- Abrir o editor de uma automação específica
Exemplos
Exemplo — obter detalhes da automação:
{
"tool": "get_automation",
"arguments": {
"automation_id": "automation_id_here"
}
}
Exemplo — pausar uma automação inteira:
{
"tool": "update_automation_settings",
"arguments": {
"automation_id": "automation_id_here",
"status": "paused"
}
}
Exemplo — atualizar uma única etapa (status, tempo de espera):
{
"tool": "update_automation_step",
"arguments": {
"automation_id": "automation_id_here",
"step_id": "step_id_here",
"step_status": "active",
"wait_time": 1440
}
}
Exemplo — excluir uma automação:
{
"tool": "delete_automation",
"arguments": {
"automation_id": "automation_id_here"
}
}
Campanhas de Envio Único
list_single_sends- Listar todas as campanhas de envio único com metadadosget_single_send- Recuperar conteúdo detalhado e configurações de uma campanha de envio únicoopen_single_send_creator- Abrir o criador de campanhas no navegador para design visualopen_single_send_stats- Visualizar estatísticas detalhadas de desempenho da campanha
Exemplos
Exemplo — obter o conteúdo e as configurações de uma campanha:
{
"tool": "get_single_send",
"arguments": {
"singlesend_id": "singlesend_id_here"
}
}
Operações CRUD de Contatos
list_contacts- Listar todos os contatos com paginação e filtrosget_contact- Obter informações detalhadas sobre um contato específicocreate_contact- Criar novos contatos com campos personalizadosupdate_contact- Atualizar informações de contatos existentes e dados personalizadosdelete_contact- Excluir contatos permanentemente com limpezasearch_contacts- Buscar contatos usando condições de consulta avançadassearch_contacts_by_emails- Buscar contatos específicos por endereços de e-mail
Exemplos
Exemplo — criar um novo contato:
{
"tool": "create_contact",
"arguments": {
"contacts": [
{
"email": "newuser@example.com",
"first_name": "Jane",
"last_name": "Smith"
}
]
}
}
Exemplo — buscar contatos por e-mail:
{
"tool": "search_contacts_by_emails",
"arguments": {
"emails": ["john@example.com", "jane@example.com"]
}
}
Exemplo — buscar contatos com uma condição de consulta:
{
"tool": "search_contacts",
"arguments": {
"query": "email LIKE '@example.com'",
"page_size": 10
}
}
Exemplo — atualizar um contato:
{
"tool": "update_contact",
"arguments": {
"contacts": [
{
"id": "contact_id_here",
"first_name": "John",
"last_name": "Updated"
}
]
}
}
Exemplo — excluir contatos:
{
"tool": "delete_contact",
"arguments": {
"contact_ids": ["contact_id_1", "contact_id_2"]
}
}
Gerenciamento de Listas de E-mail
list_email_lists- Listar todas as listas de e-mailcreate_email_list- Criar uma nova lista de e-mailupdate_email_list- Atualizar propriedades da lista de e-maildelete_email_list- Excluir uma lista de e-mailcreate_contact_with_lists- Criar contatos e atribuir a listasremove_contact_from_lists- Remover contatos de uma lista específica
Exemplos
Exemplo — listar listas de e-mail:
{
"tool": "list_email_lists",
"arguments": {
"page_size": 100
}
}
Exemplo — renomear uma lista de e-mail:
{
"tool": "update_email_list",
"arguments": {
"list_id": "list_id_here",
"name": "Updated List Name"
}
}
Exemplo — remover contatos de uma lista:
{
"tool": "remove_contact_from_lists",
"arguments": {
"list_id": "list_id_here",
"contact_ids": ["contact_id_1", "contact_id_2"]
}
}
Exemplo — excluir uma lista de e-mails:
{
"tool": "delete_email_list",
"arguments": {
"list_id": "list_id_here"
}
}
Segmentos e Campos Personalizados
list_segments- Listar segmentos dinâmicos com relacionamentos pai e critériosopen_segment_creator- Abrir o criador de segmentos no navegador para construção visual de consultasupdate_segment- Atualizar nome ou critérios de consulta de um segmento existente com atualização em tempo realdelete_segment- Excluir um segmento existente (os contatos permanecem inalterados)list_custom_fields- Listar definições de campos personalizados com tipos de dadoscreate_custom_field- Criar novos campos personalizados (tipos Texto, Número, Data)update_custom_field- Atualizar definições de campos personalizados existentesdelete_custom_field- Excluir definições de campos personalizados com limpeza de dados
Exemplos
Exemplo — renomear um segmento:
{
"tool": "update_segment",
"arguments": {
"segment_id": "segment_id_here",
"name": "Updated Segment Name"
}
}
Exemplo — atualizar os critérios de consulta de um segmento:
{
"tool": "update_segment",
"arguments": {
"segment_id": "segment_id_here",
"query_dsl": "{\"and\": [{\"field\": \"email\", \"value\": \"@example.com\", \"operator\": \"like\"}]}"
}
}
Exemplo — excluir um segmento:
{
"tool": "delete_segment",
"arguments": {
"segment_id": "segment_id_here"
}
}
Exemplo — criar um campo personalizado:
{
"tool": "create_custom_field",
"arguments": {
"name": "customer_tier",
"field_type": "Text"
}
}
Exemplo — atualizar um campo personalizado:
{
"tool": "update_custom_field",
"arguments": {
"field_id": "field_id_here",
"name": "customer_level"
}
}
Exemplo — excluir um campo personalizado:
{
"tool": "delete_custom_field",
"arguments": {
"field_id": "field_id_here"
}
}
Remetentes e Importação
list_senders- Listar identidades de remetente verificadascreate_sender- Criar nova identidade de remetentedelete_sender- Excluir uma identidade de remetente verificadaopen_csv_uploader- Abrir interface de upload de CSV
Exemplos
Exemplo — criar uma identidade de remetente:
{
"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"
}
}
Exemplo — excluir uma identidade de remetente:
{
"tool": "delete_sender",
"arguments": {
"sender_id": "sender_id_here"
}
}
Modelos Dinâmicos
list_templates- Listar todos os modelos dinâmicos e legadosget_template- Obter detalhes de um modelo específico, incluindo todas as versõescreate_template- Criar um novo modelo dinâmicoupdate_template- Atualizar nome e configurações do modelodelete_template- Excluir um modelo e todas as suas versõescreate_template_version- Criar uma nova versão com conteúdo HTML e configuraçõesget_template_version- Obter detalhes de uma versão específica do modeloupdate_template_version- Atualizar conteúdo, assunto e configurações da versãodelete_template_version- Excluir uma versão específica do modelocreate_html_template- Criar modelo completo com conteúdo HTML em uma única etapa (perfeito para agentes de IA)open_template_editor- Abrir o editor visual de modelos do SendGrid no navegador
Os modelos suportam sintaxe Handlebars para conteúdo dinâmico ({{variable}}, {{#each}}, {{#if}}), HTML responsivo com CSS inline, até 300 versões por modelo, visualizações com dados de teste e geração automática de texto simples.
Exemplos
Exemplo — criar um modelo completo em uma única etapa (melhor 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\"}"
}
}
Exemplo — adicionar uma nova versão com conteúdo 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\"}]}"
}
}
Envio de E-mails
send_mail- Enviar e-mails transacionais (suporta modelos com dados dinâmicos de modelo)
Exemplos
Exemplo — enviar um e-mail simples:
{
"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."
}
]
}
}
Exemplo — enviar usando um modelo dinâmico:
{
"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"
}
}
Estatísticas e Análises de E-mail
get_global_stats- Recuperar métricas gerais de desempenho de e-mailget_stats_overview- Obter estatísticas abrangentes em múltiplas dimensõesget_stats_by_browser- Estatísticas divididas por tipo de navegador (Chrome, Firefox, Safari, etc.)get_stats_by_client_type- Estatísticas por tipo de cliente de e-mail (desktop, mobile, webmail)get_stats_by_device_type- Estatísticas por tipo de dispositivo (desktop, mobile, tablet)get_stats_by_mailbox_provider- Estatísticas por provedor de caixa de correio (Gmail, Outlook, Yahoo, etc.)get_stats_by_country- Estatísticas por país e estado/provínciaget_category_stats- Estatísticas para categorias específicas de e-mail (histórico de 13 meses)get_subuser_stats- Estatísticas para contas de subusuários específicos
Acompanha taxas de entrega, abertura e cliques; taxas de rejeição (hard/soft), relatórios de spam e cancelamentos de inscrição; desempenho geográfico e preferências de dispositivo; compatibilidade com clientes de e-mail e renderização em navegadores; e entregabilidade específica por provedor.
Exemplos
Exemplo — estatísticas globais de e-mail:
{
"tool": "get_global_stats",
"arguments": {
"start_date": "2024-01-01",
"end_date": "2024-01-31",
"aggregated_by": "day"
}
}
Exemplo — estatísticas por provedor de caixa de correio:
{
"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"
}
}
Exemplo — estatísticas de desempenho geográfico:
{
"tool": "get_stats_by_country",
"arguments": {
"start_date": "2024-01-01",
"end_date": "2024-01-31",
"country": "US",
"aggregated_by": "week"
}
}
Exemplo — visão geral abrangente de estatísticas:
{
"tool": "get_stats_overview",
"arguments": {
"start_date": "2024-01-01",
"end_date": "2024-01-07",
"aggregated_by": "day",
"include_subusers": false
}
}
Utilitários
get_scopes- Obter escopos de permissão de API disponíveis (sem argumentos)
Supressões
list_suppression_groups- Listar todos os grupos de cancelamento de inscrição (supressão) na contacreate_suppression_group- Criar um novo grupo de cancelamento de inscrição (supressão)get_suppression_group- Obter detalhes sobre um grupo específico de cancelamento de inscrição (supressão)update_suppression_group- Atualizar nome, descrição ou status padrão de um grupo de supressão existentedelete_suppression_group- Excluir permanentemente um grupo de cancelamento de inscrição (supressão). Esta ação não pode ser desfeita.list_group_suppressions- Listar todos os endereços de e-mail que cancelaram a inscrição de um grupo de supressão específicoadd_group_suppressions- Adicionar um ou mais endereços de e-mail à lista de cancelamento de inscrição de um grupo de supressão específicoremove_group_suppression- Remover um único endereço de e-mail da lista de cancelamento de inscrição de um grupo de supressão específico. Isso apenas repermite o envio de e-mails atribuídos à categoria deste grupo — não é um novo cancelamento global.list_global_suppressions- Listar endereços de e-mail na lista global de cancelamento de inscrição da conta, opcionalmente filtrados por intervalo de tempoadd_global_suppression- Adicionar destinatários à lista global de cancelamento de inscrição da conta — eles pararão de receber todos os e-mails não transacionais desta contaget_global_suppression- Verificar se um endereço de e-mail específico está na lista global de cancelamento de inscrição da contadelete_global_suppression- Remover um endereço de e-mail da lista global de supressão da conta, efetivamente reinscrevendo-o para e-mails não transacionaislist_bounces- Listar todos os endereços de e-mail que sofreram rejeição, opcionalmente filtrados por intervalo de tempoget_bounce- Obter evento(s) de rejeição registrados para um endereço de e-mail específicodelete_bounce- Remover um registro de rejeição de um endereço de e-mail para que este endereço possa receber e-mails novamentelist_blocks- Listar todos os endereços de e-mail atualmente na lista de bloqueios, opcionalmente filtrados por intervalo de tempodelete_block- Remover um endereço de e-mail da lista de bloqueios para que este endereço possa receber e-mails novamentelist_spam_reports- Listar todos os endereços de e-mail que relataram e-mails como spam, opcionalmente filtrados por intervalo de tempodelete_spam_report- Remover um endereço de e-mail da lista de relatórios de spam para que este endereço possa receber e-mails novamentelist_invalid_emails- Listar todos os endereços de e-mail marcados como inválidos, opcionalmente filtrados por intervalo de tempodelete_invalid_email- Remover um endereço de e-mail da lista de e-mails inválidos para que este endereço possa receber e-mails novamente
Autenticação de Domínio e Marca de Links
list_authenticated_domains- Listar todos os domínios autenticados (whitelabel) configurados para envio de e-mailsget_authenticated_domain- Obter informações detalhadas sobre um domínio autenticado específico, incluindo seus registros DNScreate_authenticated_domain- Configurar autenticação de domínio (SPF/DKIM) para envio de e-mails a partir de um domínio personalizadoupdate_authenticated_domain- Atualizar o SPF personalizado ou as configurações padrão de um domínio autenticado existentedelete_authenticated_domain- Excluir permanentemente um domínio autenticado. Esta ação não pode ser desfeita.validate_authenticated_domain- Verificar se os registros DNS do domínio estão configurados corretamente para autenticaçãoget_default_authenticated_domain- Obter o domínio autenticado atualmente definido como padrão para envio de e-mailslist_branded_links- Listar todos os links com marca (link whitelabels) configurados para rastreamento de cliquesget_branded_link- Obter informações detalhadas sobre um link com marca específico, incluindo seus registros DNScreate_branded_link- Configurar rastreamento de links com marca (rastreamento de cliques através do domínio do remetente em vez de sendgrid.net)update_branded_link- Atualizar a configuração padrão de um link com marca existentedelete_branded_link- Excluir permanentemente um link com marca. Esta ação não pode ser desfeita.validate_branded_link- Verificar se os registros DNS do link com marca estão configurados corretamente
Webhooks de Eventos e Parse de Entrada
list_event_webhooks- Listar todas as configurações de Event Webhook na contaget_event_webhook- Obter a configuração de um Event Webhook específico por IDcreate_event_webhook- Cria um novo Event Webhook que envia via POST eventos de e-mail (entregues, rejeitados, abertos, clicados, etc.) para a URL fornecidaupdate_event_webhook- Atualizar a configuração de um Event Webhook existentedelete_event_webhook- Excluir permanentemente uma configuração de Event Webhook. Esta ação não pode ser desfeita.test_event_webhook- Envia um payload de evento de teste para a URL do webhook fornecida para verificar se está acessível e configurado corretamentelist_inbound_parse_settings- Listar todas as configurações de webhook de Parse de Entrada na contaget_inbound_parse_setting- Obter a configuração do webhook de Parse de Entrada para um hostname específicocreate_inbound_parse_setting- Configura o parse de e-mails de entrada para que e-mails enviados ao hostname fornecido sejam enviados via POST para a URL fornecidaupdate_inbound_parse_setting- Atualizar a configuração do webhook de Parse de Entrada para um hostname específicodelete_inbound_parse_setting- Excluir permanentemente uma configuração de webhook de Parse de Entrada para um hostname. Esta ação não pode ser desfeita.get_inbound_parse_stats- Obter estatísticas sobre o número de e-mails de entrada analisados em um intervalo de datas
Configurações de Rastreamento
get_tracking_settings- Recuperar todas as configurações de rastreamento (cliques, aberturas, inscrição, Google Analytics) em uma única chamadaget_click_tracking_settings- Recuperar a configuração atual de rastreamento de cliquesupdate_click_tracking_settings- Ativar ou desativar o rastreamento de cliques em links dentro de e-mailsget_google_analytics_settings- Recuperar as configurações atuais de rastreamento do Google Analyticsupdate_google_analytics_settings- Atualizar as configurações de rastreamento do Google Analytics, incluindo valores de campanha UTM, conteúdo, mídia, origem e termoget_open_tracking_settings- Recuperar a configuração atual de rastreamento de aberturasupdate_open_tracking_settings- Ativar ou desativar o rastreamento de aberturas, que insere um pixel invisível para registrar quando um e-mail é abertoget_subscription_tracking_settings- Recuperar as configurações atuais de rastreamento de inscriçõesupdate_subscription_tracking_settings- Atualizar as configurações de rastreamento de inscrições, incluindo conteúdo do link de cancelamento, página de destino, URL e tag de substituição
Configurações de E-mail
get_all_mail_settings- Recuperar todas as configurações de e-mail (whitelist de endereços, purga de rejeições, rodapé, encaminhamento de rejeições, encaminhamento de spam, etc.) em uma única chamadaget_address_whitelist_settings- Recuperar a configuração atual de whitelist de endereços, que controla quais endereços de e-mail ou domínios ignoram todas as listas de supressãoupdate_address_whitelist_settings- Atualizar a configuração de whitelist de endereços que controla quais endereços de e-mail ou domínios ignoram todas as listas de supressãoget_bounce_purge_settings- Recuperar a configuração atual de purga de rejeições, que purga automaticamente registros antigos de rejeição após um número configurado de diasupdate_bounce_purge_settings- Atualizar a configuração de purga de rejeições que purga automaticamente registros antigos de rejeição após um número configurado de diasget_footer_settings- Recuperar a configuração atual de rodapé, que anexa um rodapé a cada e-mail enviadoupdate_footer_settings- Atualizar a configuração de rodapé que anexa um rodapé a cada e-mail enviadoget_forward_bounce_settings- Recuperar a configuração atual de encaminhamento de rejeições, que encaminha notificações de rejeição para um endereço de e-mail fornecidoupdate_forward_bounce_settings- Atualizar a configuração de encaminhamento de rejeições que encaminha notificações de rejeição para um endereço de e-mail fornecidoget_forward_spam_settings- Recuperar a configuração atual de encaminhamento de spam, que encaminha notificações de relatórios de spam para um endereço de e-mail fornecidoupdate_forward_spam_settings- Atualizar a configuração de encaminhamento de spam que encaminha notificações de relatórios de spam para um endereço de e-mail fornecido
Chaves de API (somente leitura)
list_api_keys- Lista todas as chaves de API da conta (apenas nomes e IDs, não os valores secretos das chaves)get_api_key- Obtém detalhes de uma chave de API específica, incluindo seus escopos
Alertas (somente leitura)
list_alerts- Lista todos os alertas de uso/estatísticas configurados na contaget_alert- Obtém detalhes de um alerta específico
Colegas de equipe (somente leitura)
list_teammates- Lista todos os colegas de equipe (usuários) da contaget_teammate- Obtém detalhes de um colega de equipe específico, incluindo seus escopos de permissãolist_pending_teammates- Lista convites pendentes de colegas de equipe que ainda não foram aceitos
IPs dedicados (somente leitura)
list_ip_addresses- Lista todos os endereços IP atribuídos à contaget_ip_address- Obtém detalhes de um endereço IP específico, incluindo seu status de aquecimento e subusuários atribuídoslist_assigned_ips- Lista todos os endereços IP atualmente atribuídos a um subusuáriolist_ip_pools- Lista todos os pools de IP da contaget_ip_pool- Obtém detalhes de um pool de IP específico, incluindo os endereços IP que ele contémget_remaining_ips- Obtém a quantidade e o custo de endereços IP dedicados adicionais disponíveis para compralist_ip_warmups- Lista todos os endereços IP atualmente em processo de aquecimentoget_ip_warmup_status- Obtém o status de aquecimento de um endereço IP específicolist_allowed_ips- Lista endereços IP autorizados a acessar a conta via API/UI (a lista de permissões de acesso)get_allowed_ip- Obtém detalhes de uma entrada específica na lista de permissões de acessolist_access_activity- Lista tentativas recentes de acesso à conta (logins/chamadas de API bem-sucedidos e bloqueados)
Biblioteca de Design
list_designs- Lista todos os designs de e-mail personalizados na Biblioteca de Designcreate_design- Cria um novo design de e-mail personalizado na Biblioteca de Design a partir de HTML brutoget_design- Obtém detalhes de um design específico na Biblioteca de Designupdate_design- Atualiza o conteúdo ou os metadados de um design existente na Biblioteca de Designdelete_design- Exclui permanentemente um design personalizado da Biblioteca de Design. Esta ação não pode ser desfeita.duplicate_design- Cria uma cópia de um design existente na Biblioteca de Designlist_prebuilt_designs- Lista os modelos de design pré-fabricados integrados do SendGridget_prebuilt_design- Obtém detalhes de um dos designs pré-fabricados integrados do SendGridduplicate_prebuilt_design- Cria uma cópia editável de um dos designs pré-fabricados integrados do SendGrid
Validação de Endereço de E-mail
validate_email- Verifica se um endereço de e-mail é válido e provavelmente entregável, usando a API de Validação de Endereço de E-mail do SendGrid (consome um crédito de validação cobrado por chamada)
Pesquisa de Mensagens
search_email_activity- Pesquisa a atividade de mensagens enviadas usando a sintaxe de filtro SGQL do SendGrid (por exemplo, por destinatário, status ou assunto) — útil para solucionar problemas de por que um e-mail específico não foi entregueget_message_details- Obtém o histórico completo de eventos de entrega e detalhes de uma única mensagem enviada pelo seu ID de mensagem
Recursos Disponíveis
sendgrid://automations- Dados de automações de marketingsendgrid://singlesends- Dados de campanhas de envio únicosendgrid://lists- Dados de listas de e-mailsendgrid://contacts- Dados de segmentos de contatossendgrid://suppressions- Listas de supressão (rejeições, spam, etc.)sendgrid://account- Informações do perfil da contasendgrid://stats- Estatísticas globais de e-mail e métricas de desempenho (visão geral de 30 dias)sendgrid://stats/browsers- Estatísticas de e-mail por tipo de navegador (dados de 7 dias)sendgrid://stats/devices- Estatísticas de e-mail por tipo de dispositivo (dados de 7 dias)sendgrid://stats/geography- Estatísticas de e-mail por localização geográfica (dados de 7 dias)sendgrid://stats/providers- Estatísticas de e-mail por provedor de caixa de correio (dados de 7 dias)
Prompts Disponíveis
sendgrid_automation_help- Obtenha ajuda com automações de marketingsendgrid_campaign_help- Obtenha ajuda com campanhas de envio únicosendgrid_contacts_help- Obtenha ajuda com gerenciamento abrangente de contatossendgrid_list_management_help- Obtenha ajuda com operações CRUD de listas de e-mailsendgrid_update_list_help- Obtenha ajuda com atualização/renomeação de listas de e-mailsendgrid_contact_crud_help- Obtenha ajuda com operações de criar/ler/atualizar/excluir contatossendgrid_custom_fields_help- Obtenha ajuda com gerenciamento de definições de campos personalizadossendgrid_segment_management_help- Obtenha ajuda com gerenciamento de segmentos de contatos dinâmicossendgrid_sender_management_help- Obtenha ajuda com gerenciamento de identidade do remetentesendgrid_templates_help- Obtenha ajuda com criação e gerenciamento de modelos de e-mail dinâmicossendgrid_suppressions_help- Obtenha ajuda com listas de supressãosendgrid_settings_help- Obtenha ajuda com configurações da contasendgrid_mail_send_help- Obtenha ajuda com envio de e-mailssendgrid_stats_help- Obtenha ajuda com análise de desempenho e estatísticas de e-mail
Desenvolvimento e Contribuição
Esta seção é para desenvolvedores que desejam modificar o servidor ou contribuir com o desenvolvimento.
Configuração de desenvolvimento, estrutura do projeto e guia de contribuição
Pré-requisitos
- Node.js 20+ e npm
- Conta SendGrid com chave de API
- Git
Configuração de Desenvolvimento
# 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 uma compilação local em um cliente MCP (em vez do binário instalado via 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"
}
}
}
}
Estrutura do Projeto
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
Adicionando Novas Ferramentas
- Adicione a definição da ferramenta ao arquivo apropriado em
src/tools/ - Siga o padrão existente com configuração e manipulador
- Exporte de
src/tools/index.ts - Atualize o README.md com a documentação da nova ferramenta
- Execute
npm run buildpara compilar
Scripts Disponíveis
npm run build- Compila TypeScript para JavaScriptnpm start- Executa o servidor compiladonpm test- Compila e executa a suíte de testes
Testando Suas Alterações
# 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 se um cliente real pode se conectar em cada modo de autenticação HTTP (token, none, TLS, OAuth) em vez de apenas a suíte automatizada, consulte TESTING.md.
Criando um Lançamento
Somente para mantenedores:
-
Atualize a versão em
package.json:npm version patch # or minor, major -
Envie as alterações e tags:
git push && git push --tags -
Crie o lançamento no GitHub - isso aciona a publicação automática no npm via GitHub Actions
Processo de Publicação
- Automatizado: GitHub Actions publica no npm na criação do lançamento
- Procedência: Todos os pacotes incluem atestado de procedência para segurança
- Versionamento: Segue versionamento semântico (semver)
- Pacote:
sendgrid-mcpno npm — atualize comnpm update -g sendgrid-mcp
Solução de Problemas
Problemas Comuns
6 problemas comuns e correções
1. Servidor Não Encontrado / Comando Não Encontrado
Error: sendgrid-mcp: command not found
Solução:
- Certifique-se de que instalou globalmente:
npm install -g sendgrid-mcp - Verifique se o diretório bin global do npm está no PATH:
npm config get prefix - Tente reinstalar:
npm uninstall -g sendgrid-mcp && npm install -g sendgrid-mcp
2. Chave de API Inválida
Error: SENDGRID_API_KEY must start with 'SG.'
Solução:
- Certifique-se de que sua chave de API começa com
SG. - Verifique se copiou a chave completa do SendGrid
- Verifique se há espaços extras ou aspas na sua configuração
- Gere uma nova chave de API em Chaves de API do SendGrid
3. Erros de Permissão
Error: 403 Forbidden
Solução:
- Sua chave de API pode não ter permissões suficientes
- Crie uma nova chave com "Acesso Total" ou os escopos necessários
- Verifique se a chave não foi revogada ou expirada
4. Modo Somente Leitura Bloqueando Operações
❌ Operation blocked: Server is running in READ_ONLY mode
Solução:
- Isso é uma proteção de segurança intencional
- Para habilitar operações de escrita, defina
READ_ONLY: "false"na configuração do seu cliente MCP - Exemplo:
{ "env": { "SENDGRID_API_KEY": "SG.your_key", "READ_ONLY": "false" } }
5. Cliente MCP Não Detectando o Servidor
Solução:
- Verifique o local do arquivo de configuração para o seu cliente específico
- Certifique-se de que a sintaxe JSON é válida (sem vírgulas finais, aspas adequadas)
- Reinicie seu cliente MCP após alterações de configuração
- Verifique os logs do cliente para mensagens de erro específicas
6. Tempo de Conexão Excedido
Error: Request timeout
Solução:
- Verifique sua conexão com a internet
- Aumente o tempo limite na configuração:
{ "env": { "REQUEST_TIMEOUT": "60000" } } - Verifique se a API do SendGrid está acessível (não bloqueada por firewall/proxy)
Obtendo Ajuda
- Ajuda Integrada: Use os prompts de ajuda no seu cliente MCP (por exemplo, pergunte ao Claude: "ajuda com automações do sendgrid")
- API do SendGrid: Documentação Oficial da API
- Protocolo MCP: Documentação do Model Context Protocol
- Problemas: Reporte bugs no repositório do GitHub
Modo de Depuração
Habilite o registro detalhado definindo o LOG_LEVEL:
{
"env": {
"SENDGRID_API_KEY": "SG.your_key",
"LOG_LEVEL": "debug"
}
}
Isso fornecerá informações detalhadas sobre solicitações e respostas da API.
Segurança
Encontrou uma vulnerabilidade? Por favor, reporte-a de forma privada em vez de abrir um problema público — consulte SECURITY.md.
Operações Intencionalmente Não Suportadas
Um punhado de capacidades da API do SendGrid é deliberadamente deixado de fora deste servidor, além do que o modo READ_ONLY bloqueia em tempo de execução. Estas não são lacunas a serem preenchidas posteriormente — elas são excluídas porque permitir que um LLM as chame autonomamente carrega um raio de explosão em toda a conta que um alternador READ_ONLY sozinho não mitiga (um operador executando com READ_ONLY=false para escritas legítimas de automação de marketing não deveria estar a uma chamada de ferramenta com injeção de prompt de distância de perder acesso à conta ou orçamento de API):
- Criação/rotação/exclusão de chaves de API — apenas
list_api_keys/get_api_keysão expostos. Criar ou excluir chaves de API é um alvo clássico de injeção de prompt: uma página da web maliciosa ou e-mail que um agente processa poderia tentar enganá-lo para criar uma nova chave e exfiltrá-la. - Convites de colegas de equipe, alterações de permissão e remoção — apenas
list_teammates/get_teammate/list_pending_teammatessão expostos. Adicionar, remover ou redefinir permissões de colegas de equipe é controle de acesso à conta com o mesmo risco de injeção que chaves de API. - Compras de IP dedicado, controle de aquecimento e alterações na lista de permissões de acesso — apenas ferramentas de leitura/lista são expostas. IPs dedicados custam dinheiro real e afetam a infraestrutura de entregabilidade em toda a conta; erros na lista de permissões de acesso podem bloquear completamente o acesso legítimo à API.
- Gerenciamento de SSO e certificados — não exposto de forma alguma, em nenhuma forma. Configurar incorretamente o SSO pode bloquear uma organização inteira do login, e não há essencialmente nenhuma razão legítima para um assistente de chat gerenciar isso.
Se você precisar de qualquer um destes para uma automação específica, use o painel do SendGrid ou a API diretamente em vez de solicitar que este servidor os adicione — isso é um limite de design deliberado, não uma supervisão.
Licença
Este projeto é licenciado sob a Licença ISC.
Contribuição
- Faça um fork do repositório
- Crie um branch de funcionalidade
- Faça suas alterações
- Teste minuciosamente
- Envie um pull request
Suporte
Para problemas relacionados a:
- API do SendGrid: Consulte a Documentação do SendGrid
- Protocolo MCP: Consulte o Model Context Protocol
- Este Servidor: Abra um problema neste repositório
Feedback
Trabalho no SendGrid e mantenho este projeto. Feedback, relatórios de bugs e solicitações de recursos são sempre bem-vindos — por favor, abra um problema ou inicie uma discussão no repositório.