Resend MCP server
Resend's official MCP server lets agents send, schedule, and manage email plus contacts, broadcasts, and domains.
Resend MCP is Resend's official server for sending and managing email from any MCP client. The agent can send a single transactional email or batch send to many recipients, with full support for HTML and plain text, attachments by local path, URL, or base64, CC/BCC, reply-to, scheduling in natural language, and tags. Beyond sending it manages the full Resend surface: inbound received emails and their attachments, contacts and segment and topic memberships, broadcast campaigns, reusable templates with a live visual editor, sender domains, audience segments, subscription topics, custom contact properties, automations, events, logs, API keys, and webhooks.
The canonical setup is stdio over npx (npx -y resend-mcp) with a RESEND_API_KEY environment variable, which is the simplest way to wire it into Claude Desktop, Cursor, or Claude Code. It can also run over HTTP for remote or web-based integrations, in which case each client authenticates by passing its Resend API key as a bearer token in the Authorization header. An optional default sender and reply-to address can be supplied so the agent does not have to ask each time.
Quick install
Copy-paste configs are provided for all 8 supported clients. Pick your client below.
Add to ~/.claude.json
{
"mcpServers": {
"resend": {
"command": "npx",
"args": [
"-y",
"resend-mcp"
],
"env": {
"RESEND_API_KEY": "<RESEND_API_KEY>",
"SENDER_EMAIL_ADDRESS": "<SENDER_EMAIL_ADDRESS>",
"REPLY_TO_EMAIL_ADDRESSES": "<REPLY_TO_EMAIL_ADDRESSES>"
}
}
}
}claude mcp add resend -- npx -y resend-mcpAvailable tools
| Tool | Description |
|---|---|
| send-email | Sends a single transactional email immediately or scheduled, with HTML/text, attachments, CC/BCC, and tags. |
| send-batch-emails | Sends a batch of emails in a single request. |
| list-emails | Lists sent emails. |
| get-email | Retrieves a sent email and its delivery status by ID. |
| update-email | Updates a scheduled email, such as its send time. |
| cancel-email | Cancels a scheduled email before it sends. |
| list-sent-email-attachments | Lists the attachments on a sent email. |
| get-sent-email-attachment | Retrieves a specific attachment from a sent email. |
| list-received-emails | Lists inbound received emails. |
| get-received-email | Retrieves a received email by ID. |
| list-received-email-attachments | Lists the attachments on a received email. |
| get-received-email-attachment | Downloads a specific attachment from a received email. |
| create-contact | Creates a contact in an audience. |
| list-contacts | Lists contacts in an audience. |
| get-contact | Retrieves a contact by ID. |
| update-contact | Updates a contact's details. |
| remove-contact | Removes a contact from an audience. |
| add-contact-to-segment | Adds a contact to a segment. |
| remove-contact-from-segment | Removes a contact from a segment. |
| list-contact-segments | Lists the segments a contact belongs to. |
| list-contact-topics | Lists a contact's subscription topics. |
| update-contact-topics | Updates a contact's topic subscriptions. |
| create-broadcast | Creates a broadcast campaign. |
| compose-broadcast | Composes broadcast content that renders live in the Resend editor. |
| send-broadcast | Sends or schedules a broadcast campaign. |
| list-broadcasts | Lists broadcast campaigns. |
| get-broadcast | Retrieves a broadcast by ID. |
| update-broadcast | Updates a broadcast campaign. |
| remove-broadcast | Removes a broadcast campaign. |
| create-template | Creates a reusable email template. |
| compose-template | Composes template content that renders live in the Resend editor. |
| list-templates | Lists templates. |
| get-template | Retrieves a template by ID. |
| update-template | Updates a template. |
| publish-template | Publishes a template so it can be used. |
| duplicate-template | Duplicates an existing template. |
| remove-template | Removes a template. |
| create-domain | Adds a sender domain. |
| list-domains | Lists sender domains. |
| get-domain | Retrieves a domain by ID. |
| update-domain | Updates a domain's tracking, TLS, or sending settings. |
| verify-domain | Triggers verification of a sender domain. |
| remove-domain | Removes a sender domain. |
| create-segment | Creates an audience segment. |
| list-segments | Lists audience segments. |
| get-segment | Retrieves a segment by ID. |
| remove-segment | Removes an audience segment. |
| create-topic | Creates a subscription topic. |
| list-topics | Lists subscription topics. |
| get-topic | Retrieves a topic by ID. |
| update-topic | Updates a subscription topic. |
| remove-topic | Removes a subscription topic. |
| create-contact-property | Creates a custom contact property. |
| list-contact-properties | Lists custom contact properties. |
| get-contact-property | Retrieves a custom contact property by ID. |
| update-contact-property | Updates a custom contact property. |
| remove-contact-property | Removes a custom contact property. |
| create-automation | Creates an automation workflow. |
| update-automation | Updates an automation workflow. |
| get-automation | Retrieves an automation by ID. |
| remove-automation | Removes an automation workflow. |
| get-automation-runs | Retrieves the runs of an automation. |
| send-event | Sends an event that can trigger automations. |
| manage-events | Manages the events used by automations. |
| list-logs | Lists API request logs. |
| get-log | Retrieves a single API request log by ID. |
| create-api-key | Creates a Resend API key. |
| list-api-keys | Lists API keys. |
| remove-api-key | Removes an API key. |
| create-webhook | Creates a webhook for event notifications. |
| list-webhooks | Lists webhooks. |
| get-webhook | Retrieves a webhook by ID. |
| update-webhook | Updates a webhook. |
| remove-webhook | Removes a webhook. |
| get-tiptap-json-content | Retrieves the editor's structured content for a broadcast or template. |
| connect-to-editor | Connects the agent to the Resend visual editor session. |
| disconnect-from-editor | Disconnects the agent from the Resend visual editor session. |
Required configuration
- RESEND_API_KEYRequired
Your Resend API key (required for stdio mode; optional in HTTP mode where clients pass it as a bearer token).
- SENDER_EMAIL_ADDRESSOptional
Default sender email address from a verified domain. Optional.
- REPLY_TO_EMAIL_ADDRESSESOptional
Comma-separated default reply-to email addresses. Optional.
What you can do with it
Send and schedule transactional email
An agent drafts and sends a one-off email, or schedules it with natural language like 'tomorrow at 10am', then checks delivery status with get-email.
Run a broadcast campaign
The agent creates a broadcast, composes it in the visual editor, and sends it to an audience, then manages contacts, segments, and topics around it.
FAQ
- Is it free?
- The MCP server itself is open source and free to run. You need a Resend account, which has a free tier; sending volume beyond it is billed by Resend.
- Does it support remote/OAuth?
- The default is local stdio with a RESEND_API_KEY. It can also run over HTTP for remote integrations, where each client passes its Resend API key as a bearer token in the Authorization header. There is no OAuth flow.
- How do I install it?
- Run npx -y resend-mcp with RESEND_API_KEY set, or use claude mcp add resend -e RESEND_API_KEY=re_xxx -- npx -y resend-mcp for Claude Code.