
SendGrid MCP server (community): connect SendGrid to Claude, Cursor and more
Lets your AI assistant read your SendGrid stats, contacts and templates, and send email or make changes only when you allow it.
This community server connects Claude, Cursor, Codex and other assistants to your SendGrid account through its API. It can read stats, contacts, templates, campaigns and delivery history, and it can send mail and change settings. It starts in read-only mode, so nothing is sent or changed until you switch that off. It is built by a SendGrid engineer as an independent project, not by Twilio, and it uses your own SendGrid API key.
Good for
- Email marketers who want campaign, open and bounce numbers in plain answers
- Developers debugging why a transactional email did not arrive
- Teams managing contacts, lists and unsubscribes without clicking through the dashboard
- Anyone drafting or updating SendGrid email templates with an assistant
Works in
5 supported · 7 should work
Tap an app to see how to set it up and any known problems.
The README covers Claude Code with the same command and API key. GitHub
The README gives a config entry for Claude Desktop; restart the app after saving. GitHub
The README connects Codex to a hosted or self-hosted copy over the web; a local setup also works. GitHub
The README shows the entry to add in Cline's MCP settings. GitHub
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Client does not support this transport.
Client does not support this transport.
Install SendGrid MCP
Claude Code
- 1
Copy this prompt.
Add the SendGrid MCP server to Claude Code. Run this command: claude mcp add sendgrid -e SENDGRID_API_KEY=<SENDGRID_API_KEY> -e READ_ONLY=true -- npx -y sendgrid-mcp Ask me for SENDGRID_API_KEY and only put the values in that config, nowhere else. Then check that it loaded and tell me if I need to sign in or restart.
- 2
Paste it into Claude Code. It shows the change and asks before running it.
Requires Node.js.
Read-only mode: On by default. Keep READ_ONLY set to true to block sending and changes; set it to false only when you want the assistant to send mail or edit your account.
Community server, not made by Twilio SendGrid. It starts in read-only mode: the assistant can look things up, but sending and changes are blocked until you set READ_ONLY to false. Needs Node.js 20 or newer. It calls SendGrid's global API, so accounts on EU data residency are not covered. The README shows a config entry for Claude Code; the command above adds the same server with npx.
Built from the package data we hold. Not yet tested by us.
Tools
Finds sent emails by recipient, status or subject to see what happened
Searches the activity of emails you sent, by recipient, status or subject, so you can find out why a message did or did not arrive.
Try: “Did the password reset email to jane@example.com get delivered?”
Read ·
search_email_activityShows the full delivery history of one sent email
Get full delivery event history and details for a single sent message by its message ID.
Try: “Show every delivery event for this message ID”
Read ·
get_message_detailsShows overall email stats like delivered, opens, clicks and bounces
Shows account-wide email statistics such as requests, deliveries, opens, clicks and bounces for a date range.
Try: “How did our email do last week: delivered, opens, clicks and bounces?”
Read ·
get_global_statsBreaks down link clicks by browser
Shows clicks grouped by browser.
Try: “Which browsers do people click our links from?”
Read ·
get_stats_by_browserBreaks down opens by email app type
Shows opens grouped by email client type: desktop, mobile or webmail.
Try: “Do more people open our emails in webmail or on desktop?”
Read ·
get_stats_by_client_typeBreaks down opens by desktop, mobile or tablet
Shows opens grouped by device type: desktop, mobile or tablet.
Try: “How many of our opens come from mobile?”
Read ·
get_stats_by_device_typeBreaks down opens and clicks by country
Shows opens and clicks grouped by country.
Try: “Which countries open our emails most?”
Read ·
get_stats_by_countryBreaks down stats by inbox provider like Gmail or Outlook
Shows email statistics per mailbox provider, such as Gmail, Outlook or Yahoo, including blocks, bounces, opens and clicks.
Try: “Are Gmail users bouncing more than Outlook users?”
Read ·
get_stats_by_mailbox_providerShows stats for emails tagged with a category
Shows statistics for emails tagged with specific categories, for up to the last 13 months.
Try: “How did emails in the onboarding category perform?”
Read ·
get_category_statsShows stats for specific subusers
Retrieve email statistics for specific subusers.
Try: “Compare sending stats for our two subusers”
Read ·
get_subuser_statsGives an overview of email performance across several breakdowns
Get a comprehensive overview of email statistics across multiple dimensions.
Try: “Give me an overview of our email performance this month”
Read ·
get_stats_overviewLists your contact lists
List all email lists.
Try: “What contact lists do we have?”
Read ·
list_email_listsCreates a contact list
Create a new email list in your SendGrid account.
Try: “Create a list called Webinar attendees”
Write ·
create_email_listRenames or changes a contact list
Update the properties of an existing email list.
Try: “Rename the Beta list to Early access”
Write ·
update_email_listDeletes a contact list
Delete an existing email list from your SendGrid account.
Try: “Delete the old Test list”
Delete ·
delete_email_listLists your segments and the lists they come from
List all segments with their parent list relationships.
Try: “What segments do we have?”
Read ·
list_segmentsOpens the segment builder in your browser
Open SendGrid segment creator in browser.
Try: “Open the segment creator”
Read ·
open_segment_creatorAdds new contacts to your account
Create new contacts in your SendGrid account.
Try: “Add jane@example.com as a new contact”
Write ·
create_contactAdds new contacts and puts them on lists
Create new contacts and assign them to specific email lists.
Try: “Add these three emails to the Newsletter list”
Write ·
create_contact_with_listsOpens the contact upload page in your browser
Open SendGrid CSV contact upload page in browser.
Try: “Open the page to upload a contacts CSV”
Read ·
open_csv_uploaderLists the extra fields stored on contacts
List all custom fields.
Try: “What custom contact fields do we have?”
Read ·
list_custom_fieldsAdds a new field to contacts
Create a new custom field for contacts.
Try: “Add a custom field called plan_tier”
Write ·
create_custom_fieldRenames a custom contact field
Update an existing custom field definition.
Try: “Rename the plan field to plan_tier”
Write ·
update_custom_fieldDeletes a custom contact field
Delete a custom field definition.
Try: “Delete the unused referral_code field”
Delete ·
delete_custom_fieldLists your verified sender addresses
List all verified senders.
Try: “Which sender addresses are verified?”
Read ·
list_sendersAdds a new sender identity
Create a new sender identity.
Try: “Add support@example.com as a sender”
Write ·
create_senderDeletes contacts
Delete contacts by IDs.
Try: “Delete the contact for old@example.com”
Delete ·
delete_contactTakes contacts off a list without deleting them
Remove contacts from a specific email list.
Try: “Remove jane@example.com from the Beta list”
Delete ·
remove_contact_from_listsOpens one contact's full details
Get detailed information about a specific contact by ID.
Try: “Show the full record for this contact”
Read ·
get_contactChanges a contact's details
Update existing contact information.
Try: “Update Jane's first name and city”
Write ·
update_contactFinds contacts that match conditions you describe
Searches marketing contacts by conditions such as field values, returning the first 50 matches.
Try: “Find contacts in California who signed up this year”
Read ·
search_contactsLooks up contacts by their email addresses
Search for specific contacts by their email addresses.
Try: “Look up the contact record for jane@example.com”
Read ·
search_contacts_by_emailsLists your most recently added or updated contacts
Lists up to 50 of your most recently added or updated marketing contacts.
Try: “Show my most recently added contacts”
Read ·
list_contactsDeletes a sender identity
Delete a verified sender identity.
Try: “Delete the old noreply sender”
Delete ·
delete_senderChanges a segment's name or rules
Update an existing segment's name or query criteria.
Try: “Change the Active users segment to last 60 days”
Write ·
update_segmentDeletes a segment
Delete an existing segment.
Try: “Delete the Old leads segment”
Delete ·
delete_segmentLists your email templates
Retrieve all transactional templates (legacy and dynamic).
Try: “Show all our email templates”
Read ·
list_templatesOpens a template with all its versions
Retrieve details of a specific template including all versions.
Try: “Show the welcome email template and its versions”
Read ·
get_templateCreates a new email template
Create a new dynamic transactional template.
Try: “Create a template called Order shipped”
Write ·
create_templateRenames a template
Update the name of an existing template.
Try: “Rename the receipt template to Order receipt”
Write ·
update_templateDeletes a template and all its versions
Delete a template and all its versions.
Try: “Delete the old holiday template”
Delete ·
delete_templateAdds a new version to a template
Create a new version of a template with HTML content and settings.
Try: “Add a new version of the welcome email with this HTML”
Write ·
create_template_versionOpens one version of a template
Retrieve details of a specific template version.
Try: “Show the active version of the welcome template”
Read ·
get_template_versionChanges the content of a template version
Update the content and settings of a template version.
Try: “Update the subject line in the welcome email”
Write ·
update_template_versionDeletes one version of a template
Delete a specific version of a template.
Try: “Delete the draft version of the welcome email”
Delete ·
delete_template_versionCreates a template from HTML in one step
Create a new template with HTML content in one step - perfect for AI-generated designs.
Try: “Create a template from this HTML for our receipt email”
Write ·
create_html_templateOpens the visual template editor in your browser
Open the SendGrid template editor in browser for visual editing.
Try: “Open the template editor for the welcome email”
Read ·
open_template_editorSends an email
Sends a real email through SendGrid to the recipients you give. Blocked while read-only mode is on.
Try: “Send a test email to me from hello@example.com”
Write ·
send_mailLists your one-off email campaigns
List all single send campaigns.
Try: “List our recent campaigns”
Read ·
list_single_sendsOpens one campaign's content and settings
Get detailed content and settings for a single send campaign.
Try: “Show the content of last week's newsletter”
Read ·
get_single_sendOpens the campaign builder in your browser
Open SendGrid single send creator in browser.
Try: “Open the single send creator”
Read ·
open_single_send_creatorOpens a campaign's stats page in your browser
Open single send stats page for a specific campaign.
Try: “Open the stats for the October newsletter”
Read ·
open_single_send_statsLists your marketing automations
List all marketing automations.
Try: “What automations are running?”
Read ·
list_automationsOpens one automation with its steps and settings
Get detailed information about a specific automation including all steps and settings.
Try: “Show the steps in the onboarding automation”
Read ·
get_automationRenames, starts or pauses an automation
Update automation-level settings such as name, status, and title.
Try: “Pause the onboarding automation”
Write ·
update_automation_settingsChanges one step of an automation
Update individual step settings within an automation, including step status (activate/pause), wait time, and send configurations.
Try: “Change the wait time on step 2 to three days”
Write ·
update_automation_stepDeletes an automation for good
Permanently delete a marketing automation.
Try: “Delete the old trial automation”
Delete ·
delete_automationOpens the automation builder in your browser
Open SendGrid automation creator in browser.
Try: “Open the automation creator”
Read ·
open_automation_creatorOpens one automation in the editor in your browser
Open automation editor for a specific automation.
Try: “Open the onboarding automation in the editor”
Read ·
open_automation_editorLists your unsubscribe groups
List all unsubscribe (suppression) groups on the account.
Try: “What unsubscribe groups do we have?”
Read ·
list_suppression_groupsCreates an unsubscribe group
Create a new unsubscribe (suppression) group.
Try: “Create an unsubscribe group for Event invites”
Write ·
create_suppression_groupOpens one unsubscribe group
Get details about a specific unsubscribe (suppression) group.
Try: “Show the Product updates unsubscribe group”
Read ·
get_suppression_groupChanges an unsubscribe group
Update the name, description, or default status of an existing suppression group.
Try: “Rename the Promotions group to Offers”
Write ·
update_suppression_groupDeletes an unsubscribe group
Permanently delete an unsubscribe (suppression) group.
Try: “Delete the old Beta group”
Delete ·
delete_suppression_groupLists who unsubscribed from one group
List all email addresses that are unsubscribed from a specific suppression group.
Try: “Who unsubscribed from Product updates?”
Read ·
list_group_suppressionsUnsubscribes people from one group
Add one or more email addresses to a specific suppression group's unsubscribe list.
Try: “Unsubscribe these addresses from Promotions”
Write ·
add_group_suppressionsResubscribes someone to one group
Remove a single email address from a specific suppression group's unsubscribe list.
Try: “Resubscribe jane@example.com to Product updates”
Delete ·
remove_group_suppressionLists people unsubscribed from all your mail
List email addresses on the account-wide global unsubscribe list, optionally filtered by a time range.
Try: “Who has unsubscribed from everything?”
Read ·
list_global_suppressionsUnsubscribes people from all your marketing mail
Add recipients to the account-wide global unsubscribe list -- they will stop receiving all non-transactional mail from this account.
Try: “Unsubscribe these addresses from all marketing mail”
Write ·
add_global_suppressionChecks if someone unsubscribed from all your mail
Check whether a specific email address is on the account-wide global unsubscribe list.
Try: “Is jane@example.com globally unsubscribed?”
Read ·
get_global_suppressionResubscribes someone to your marketing mail
Remove an email address from the account-wide global suppression list, effectively resubscribing them to non-transactional mail.
Try: “Resubscribe jane@example.com”
Delete ·
delete_global_suppressionLists addresses that bounced
List all email addresses that have bounced, optionally filtered by a time range.
Try: “Which addresses bounced this week?”
Read ·
list_bouncesShows bounce records for one address
Get bounce event(s) recorded for a specific email address.
Try: “Why did mail to jane@example.com bounce?”
Read ·
get_bounceClears a bounce so the address can get mail again
Remove a bounce record for an email address so this address can receive mail again.
Try: “Clear the bounce for jane@example.com”
Delete ·
delete_bounceLists addresses that are blocked
List all email addresses currently on the blocks list, optionally filtered by a time range.
Try: “Which addresses are on the blocks list?”
Read ·
list_blocksTakes an address off the blocks list
Remove an email address from the blocks list so this address can receive mail again.
Try: “Unblock jane@example.com”
Delete ·
delete_blockLists people who marked your mail as spam
List all email addresses that have reported mail as spam, optionally filtered by a time range.
Try: “Who reported our emails as spam this month?”
Read ·
list_spam_reportsRemoves an address from the spam reports list
Remove an email address from the spam reports list so this address can receive mail again.
Try: “Remove jane@example.com from spam reports”
Delete ·
delete_spam_reportLists addresses marked invalid
List all email addresses that have been marked invalid, optionally filtered by a time range.
Try: “Which addresses are marked invalid?”
Read ·
list_invalid_emailsRemoves an address from the invalid list
Remove an email address from the invalid emails list so this address can receive mail again.
Try: “Remove jane@example.com from the invalid list”
Delete ·
delete_invalid_emailChecks if an email address is real and deliverable
Checks whether an email address is valid and likely to be delivered. Each check uses a paid validation credit.
Try: “Is this signup address likely to bounce?”
Read ·
validate_emailLists the domains set up for sending
List all authenticated (whitelabel) domains configured for sending mail.
Try: “Which domains are authenticated for sending?”
Read ·
list_authenticated_domainsShows a sending domain and its DNS records
Get detailed information about a specific authenticated domain, including its DNS records.
Try: “Show the DNS records for example.com”
Read ·
get_authenticated_domainSets up a domain for sending
Starts domain authentication for a custom domain and returns the DNS records you need to add.
Try: “Set up mail.example.com for sending”
Write ·
create_authenticated_domainChanges a sending domain's settings
Update the custom SPF or default settings of an existing authenticated domain.
Try: “Make mail.example.com the default domain”
Write ·
update_authenticated_domainDeletes a sending domain for good
Permanently delete an authenticated domain.
Try: “Remove the old domain authentication”
Delete ·
delete_authenticated_domainChecks a sending domain's DNS records
Check whether the domain's DNS records are correctly configured for authentication.
Try: “Are the DNS records for mail.example.com set up right?”
Read ·
validate_authenticated_domainShows your default sending domain
Get the authenticated domain currently set as the default for sending mail.
Try: “Which domain is our default sender domain?”
Read ·
get_default_authenticated_domainLists your branded tracking links
List all branded links (link whitelabels) configured for click tracking.
Try: “Which branded link domains do we have?”
Read ·
list_branded_linksShows a branded link and its DNS records
Get detailed information about a specific branded link, including its DNS records.
Try: “Show the DNS records for our branded link”
Read ·
get_branded_linkSets up click tracking on your own domain
Set up branded link tracking (click tracking through the sender's own domain instead of sendgrid.net).
Try: “Set up branded links on links.example.com”
Write ·
create_branded_linkChanges a branded link's default setting
Update the default setting of an existing branded link.
Try: “Make links.example.com the default branded link”
Write ·
update_branded_linkDeletes a branded link for good
Permanently delete a branded link.
Try: “Delete the old branded link”
Delete ·
delete_branded_linkChecks a branded link's DNS records
Check whether the branded link's DNS records are correctly configured.
Try: “Is our branded link DNS set up right?”
Read ·
validate_branded_linkLists your event webhooks
List all configured Event Webhook settings on the account.
Try: “Where do we send email event notifications?”
Read ·
list_event_webhooksOpens one event webhook's settings
Get the configuration of a specific Event Webhook by ID.
Try: “Show the settings of our event webhook”
Read ·
get_event_webhookCreates a webhook that reports email events to a URL
Creates a new Event Webhook that POSTs email events (delivered, bounced, opened, clicked, etc.) to the given URL.
Try: “Send delivery and bounce events to https://example.com/hooks”
Write ·
create_event_webhookChanges an event webhook
Update the configuration of an existing Event Webhook.
Try: “Add open events to our webhook”
Write ·
update_event_webhookDeletes an event webhook for good
Permanently delete an Event Webhook configuration.
Try: “Delete the old staging webhook”
Delete ·
delete_event_webhookSends a test event to a webhook URL
Sends a test event payload to the given webhook URL to verify it's reachable and correctly configured.
Try: “Send a test event to our webhook”
Network ·
test_event_webhookLists where incoming mail is forwarded
List all configured Inbound Parse webhook settings on the account.
Try: “What inbound parse settings do we have?”
Read ·
list_inbound_parse_settingsOpens the incoming mail setting for one hostname
Get the Inbound Parse webhook configuration for a specific hostname.
Try: “Show the inbound parse setting for parse.example.com”
Read ·
get_inbound_parse_settingForwards mail sent to a hostname to your URL
Configures inbound email parsing so mail sent to the given hostname is POSTed to the given URL.
Try: “Forward mail for parse.example.com to our webhook”
Write ·
create_inbound_parse_settingChanges an incoming mail setting
Update the Inbound Parse webhook configuration for a specific hostname.
Try: “Point parse.example.com at the new URL”
Write ·
update_inbound_parse_settingDeletes an incoming mail setting for good
Permanently delete an Inbound Parse webhook configuration for a hostname.
Try: “Delete the inbound parse for old.example.com”
Delete ·
delete_inbound_parse_settingShows how many incoming emails were parsed
Get statistics on the number of inbound emails parsed over a given date range.
Try: “How many inbound emails did we parse last month?”
Read ·
get_inbound_parse_statsShows all your tracking settings
Retrieve all tracking settings (click, open, subscription, Google Analytics) in one call.
Try: “Show our tracking settings”
Read ·
get_tracking_settingsShows whether click tracking is on
Retrieve the current click tracking setting.
Try: “Is click tracking on?”
Read ·
get_click_tracking_settingsTurns click tracking on or off
Enable or disable click tracking on links within emails.
Try: “Turn off click tracking”
Write ·
update_click_tracking_settingsShows your Google Analytics link tagging
Retrieve the current Google Analytics tracking settings.
Try: “What UTM tags do we add to links?”
Read ·
get_google_analytics_settingsChanges the Google Analytics tags on links
Update Google Analytics tracking settings, including UTM campaign, content, medium, source, and term values.
Try: “Set utm_source to newsletter”
Write ·
update_google_analytics_settingsShows whether open tracking is on
Retrieve the current open tracking setting.
Try: “Is open tracking on?”
Read ·
get_open_tracking_settingsTurns open tracking on or off
Enable or disable open tracking, which inserts an invisible pixel to record when an email is opened.
Try: “Turn on open tracking”
Write ·
update_open_tracking_settingsShows your unsubscribe link settings
Retrieve the current subscription tracking settings.
Try: “Show our unsubscribe link settings”
Read ·
get_subscription_tracking_settingsChanges your unsubscribe link and page
Update subscription tracking settings, including the unsubscribe link content, landing page, URL, and replacement tag.
Try: “Change the unsubscribe landing page URL”
Write ·
update_subscription_tracking_settingsShows all your mail settings
Retrieve all mail settings (address whitelist, bounce purge, footer, forward bounce, forward spam, etc.) in one call.
Try: “Show all our mail settings”
Read ·
get_all_mail_settingsShows addresses that skip your suppression lists
Retrieve the current address whitelist mail setting, which controls which email addresses or domains bypass all suppression lists.
Try: “Which addresses bypass suppressions?”
Read ·
get_address_whitelist_settingsChanges which addresses skip suppression lists
Update the address whitelist setting that controls which email addresses or domains bypass all suppression lists.
Try: “Let mail to qa@example.com bypass suppressions”
Write ·
update_address_whitelist_settingsShows how long bounce records are kept
Retrieve the current bounce purge mail setting, which automatically purges old bounce records after a configured number of days.
Try: “How long do we keep bounce records?”
Read ·
get_bounce_purge_settingsChanges how long bounce records are kept
Update the bounce purge setting that automatically purges old bounce records after a configured number of days.
Try: “Purge bounces after 30 days”
Write ·
update_bounce_purge_settingsShows the footer added to every email
Retrieve the current footer mail setting, which appends a footer to every outgoing email.
Try: “What footer do we add to emails?”
Read ·
get_footer_settingsChanges the footer added to every email
Update the footer setting that appends a footer to every outgoing email.
Try: “Add our address to the email footer”
Write ·
update_footer_settingsShows where bounce notices are forwarded
Retrieve the current forward bounce mail setting, which forwards bounce notifications to a given email address.
Try: “Where do bounce notices go?”
Read ·
get_forward_bounce_settingsChanges where bounce notices are forwarded
Update the forward bounce setting that forwards bounce notifications to a given email address.
Try: “Forward bounce notices to ops@example.com”
Write ·
update_forward_bounce_settingsShows where spam reports are forwarded
Retrieve the current forward spam mail setting, which forwards spam report notifications to a given email address.
Try: “Where do spam report notices go?”
Read ·
get_forward_spam_settingsChanges where spam reports are forwarded
Update the forward spam setting that forwards spam report notifications to a given email address.
Try: “Forward spam reports to abuse@example.com”
Write ·
update_forward_spam_settingsLists your saved email designs
List all custom email designs in the Design Library.
Try: “Show our saved email designs”
Read ·
list_designsSaves a new email design from HTML
Create a new custom email design in the Design Library from raw HTML.
Try: “Save this HTML as a design called Receipt”
Write ·
create_designOpens one saved email design
Get details for a specific design in the Design Library.
Try: “Show the Holiday design”
Read ·
get_designChanges a saved email design
Update the content or metadata of an existing design in the Design Library.
Try: “Update the Holiday design with this HTML”
Write ·
update_designDeletes a saved email design for good
Permanently delete a custom design from the Design Library.
Try: “Delete the old Test design”
Delete ·
delete_designCopies a saved email design
Create a copy of an existing design in the Design Library.
Try: “Make a copy of the Newsletter design”
Write ·
duplicate_designLists SendGrid's ready-made designs
List SendGrid's built-in pre-made design templates.
Try: “Show SendGrid's ready-made designs”
Read ·
list_prebuilt_designsOpens one of SendGrid's ready-made designs
Get details for one of SendGrid's built-in pre-made designs.
Try: “Show the ready-made Welcome design”
Read ·
get_prebuilt_designCopies a ready-made design so you can edit it
Create an editable copy of one of SendGrid's built-in pre-made designs.
Try: “Copy the ready-made Welcome design”
Write ·
duplicate_prebuilt_designLists your sending IP addresses
List all IP addresses assigned to the account.
Try: “Which IP addresses do we send from?”
Read ·
list_ip_addressesShows one IP address and its warmup status
Get details for a specific IP address, including its warmup status and assigned subusers.
Try: “Is our new IP still warming up?”
Read ·
get_ip_addressLists IP addresses assigned to subusers
List all IP addresses that are currently assigned to a subuser.
Try: “Which IPs are assigned to subusers?”
Read ·
list_assigned_ipsLists your IP pools
List all IP pools on the account.
Try: “What IP pools do we have?”
Read ·
list_ip_poolsShows one IP pool and its addresses
Get details for a specific IP pool, including the IP addresses it contains.
Try: “Which IPs are in the marketing pool?”
Read ·
get_ip_poolShows how many more dedicated IPs you can buy
Get the count and cost of additional dedicated IP addresses available for purchase.
Try: “How many more dedicated IPs can we add?”
Read ·
get_remaining_ipsLists IP addresses that are warming up
List all IP addresses currently in the warmup process.
Try: “Which IPs are in warmup?”
Read ·
list_ip_warmupsShows the warmup status of one IP
Get the warmup status for a specific IP address.
Try: “What is the warmup status of this IP?”
Read ·
get_ip_warmup_statusLists IPs allowed to access your account
List IP addresses allowed to access the account via the API/UI (the access allowlist).
Try: “Which IPs can access our account?”
Read ·
list_allowed_ipsOpens one allowed IP entry
Get details for a specific entry in the access allowlist.
Try: “Show this allowed IP entry”
Read ·
get_allowed_ipShows recent logins and blocked access attempts
List recent account access attempts (successful and blocked logins/API calls).
Try: “Any blocked login attempts this week?”
Read ·
list_access_activityLists your API key names, not the keys
List all API keys on the account (names and IDs only, not the secret key values).
Try: “What API keys exist on our account?”
Read ·
list_api_keysShows one API key's name and permissions
Get details for a specific API key, including its scopes.
Try: “What permissions does the Zapier key have?”
Read ·
get_api_keyLists your usage and stats alerts
List all usage/stats alerts configured on the account.
Try: “What usage alerts are set up?”
Read ·
list_alertsOpens one usage or stats alert
Get details for a specific alert.
Try: “Show the usage limit alert”
Read ·
get_alertLists the people on your account
List all teammates (users) on the account.
Try: “Who has access to our SendGrid account?”
Read ·
list_teammatesShows one teammate and their permissions
Get details for a specific teammate, including their permission scopes.
Try: “What can Alex do in SendGrid?”
Read ·
get_teammateLists invites that are not accepted yet
List pending teammate invitations that haven't been accepted yet.
Try: “Which teammate invites are still pending?”
Read ·
list_pending_teammatesUsed by the assistant behind the scenes
Lists the permissions available for API keys
Get available permission scopes for API keys.
Try: “What permissions does this key have?”
Read ·
get_scopes
Read from the source code
Pros and cons
Good
- Read-only by default, so nothing is sent or changed until you allow it.
- Covers most of SendGrid: stats, contacts, templates, campaigns, automations, suppressions and settings.
- Can look up what happened to a specific sent email.
- Built by a SendGrid engineer and updated recently.
- Runs on your machine, or over the web for Claude custom connectors.
- Free and open source.
Watch out
- Not an official Twilio SendGrid product, so Twilio does not support it.
- With 154 tools it uses a lot of the assistant's context.
- No setting for SendGrid's EU data residency accounts.
- Needs Node.js 20 or newer.
Permissions
high risk · 5 things to watch
High risk
With read-only mode off, the assistant can send real email from your domain and delete contacts, lists and templates. Leave read-only on and use a SendGrid key limited to the permissions you need.
What it can do
- Read your data
- Create and change things
- Delete things
- Read-only modeHow to turn it on
Watch out for
It can send real email from your domain
Once read-only is off, the send tool delivers mail to any address you or the assistant give it. Keep read-only on unless you need sending. github.com
It can delete contacts, lists and templates
With read-only off it can also remove senders, segments, webhooks and sending domains. Approve each tool call before it runs. github.com
A Full Access key reaches your whole account
Create a key with only the permissions you need. Every request the assistant makes runs with that key. github.com
Contact details go to the AI model
Listing or searching contacts sends names and email addresses to your AI provider. github.com
Checking an address costs a credit
Email address validation uses a paid SendGrid validation credit for each check. github.com
Security advisories
No published security advisories as of Nov 1, 2026.
Technical details
| Turning on read-only | On by default. READ_ONLY=true keeps every tool visible but blocks create, update, delete and send calls at runtime; set READ_ONLY=false to allow them. |
|---|---|
| Talks to | api.sendgrid.com |
| Sign-in and keys | SENDGRID_API_KEY in the client config or environment. |
Alternatives
Use this server for the widest SendGrid coverage with sending off by default. Pick SendGrid Transactional to check emails before they go out, mcp-sendgrid-server if your account is in the EU, SendGrid Secure for allowlists and dry runs, and Pipeworx SendGrid if you want a hosted address.
| Server | Official | Runs | Read-only by default | Can change things | Weekly downloads |
|---|---|---|---|---|---|
| sendgrid-mcpThis page | Community | Local | Yes | Yes | 369/wk |
| SendGrid Transactional | Community | Local | No | Yes | 50/wk |
| mcp-sendgrid-server | Community | Local | Yes | Yes | 20/wk |
| SendGrid Secure | Community | Local | Dry run | Yes | – |
| Pipeworx SendGrid | Community | HostedLocal | – | – | 14/wk |
Questions
Is there an official SendGrid MCP server?
No. Twilio SendGrid does not publish one, and Twilio's own MCP server covers the Twilio API, not SendGrid email. This server is an independent project by a SendGrid engineer.
Can it send email?
Yes, but not by default. Sending is blocked until you set read-only mode to false in the server's settings.
Is it safe to connect to my SendGrid account?
It is safe to start with, because it can only read until you switch read-only off. Before you do, create an API key with only the permissions you need and keep tool approval on, since it can then send mail and delete data.
What API key does it need?
A SendGrid API key starting with SG., created under Settings, API Keys. The README offers Full Access or chosen permissions; pick only what you need.
Is it free?
Yes. The server is free and open source. Your SendGrid plan's sending limits still apply, and email address checks use paid validation credits.
Does it work with SendGrid EU accounts?
No. It always calls SendGrid's global API. The community mcp-sendgrid-server has a setting for EU data residency accounts.
Can I use it with Claude on the web?
Yes, if you run it as a web server, either on your own host or on MCP Market's hosting. Then add that address in Claude as a custom connector.
Why does it say the operation is blocked?
Read-only mode is on, which is the default. Set it to false in your app's config and restart if you want the assistant to make changes.
Examples
Review your marketing automations
List my SendGrid automations
SourceFind out why an email did not arrive
Did the password reset email to jane@example.com get delivered?
Weekly email performance check
How did our email do last week: delivered, opens, clicks and bounces?
Clean up bounces after a list import
Which addresses bounced this week?
Information
updated Nov 2, 2026
- Publisher
- Community
- Package
sendgrid-mcp- Registry
- npm
- Transport
- stdio
- Auth
- API key
- Version
- 1.4.0
- License
- ISC
- Last commit
- Oct 28, 2026
- Open issues
- 0
- Listed in
- Official MCP registry
Other SendGrid MCP servers
Sources
Docs, issue trackers and discussions this page is built from. Issues, quotes and findings above link to their own source.
Show all 6Hide
- sendgrid-mcp README · github.com
- sendgrid-mcp on npm · npmjs.com
- Twilio Labs MCP · github.com
- mcp-sendgrid-server · npmjs.com
- @neschadin/sendgrid-mcp · npmjs.com
- sendgrid-mcp-secure · pypi.org