Email Sending MCP
This server allows you to send emails programmatically via Resend's API with the following capabilities:
Send emails: Support for both plain text and HTML content
Recipient options: Specify recipients, add CC and BCC recipients
Customization: Set subject lines, sender email (requires verified domain), and reply-to addresses
Scheduling: Schedule emails for future delivery using natural language (e.g., 'tomorrow at 10am')
Integration: Works with tools like Cursor and Claude Desktop for seamless email sending within chats
Allows sending emails through Resend's API directly from Cursor or Claude Desktop
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Email Sending MCPsend a summary of today's meeting notes to team@example.com"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Resend MCP Server
An MCP server for the Resend platform. Send and receive emails, manage contacts, broadcasts, domains, and more — directly from any MCP client like Claude Desktop, Cursor, or Claude Code.
Features
Emails — Send, list, get, cancel, update, and batch send emails. Supports HTML, plain text, attachments (local file, URL, or base64), CC/BCC, reply-to, scheduling, tags, and topic-based sending.
Received Emails — List and read inbound emails. List and download received email attachments.
Contacts — Create, list, get, update, and remove contacts. Manage segment memberships and topic subscriptions. Supports custom contact properties.
Broadcasts — Create, send, list, get, update, and remove broadcast campaigns. Supports scheduling, personalization placeholders, and preview text.
Domains — Create, list, get, update, remove, and verify sender domains. Configure tracking, TLS, and sending/receiving capabilities.
Segments — Create, list, get, and remove audience segments.
Topics — Create, list, get, update, and remove subscription topics.
Contact Properties — Create, list, get, update, and remove custom contact attributes.
API Keys — Create, list, and remove API keys.
Webhooks — Create, list, get, update, and remove webhooks for event notifications.
Related MCP server: blastengine-mailer
Setup
Create a free Resend account and create an API key. To send to addresses outside of your own, you'll need to verify your domain.
Usage
The server supports two transport modes: stdio (default) and HTTP.
Stdio Transport (Default)
Claude Code
claude mcp add resend -e RESEND_API_KEY=re_xxxxxxxxx -- npx -y resend-mcpCursor
Open the command palette and choose "Cursor Settings" > "MCP" > "Add new global MCP server".
{
"mcpServers": {
"resend": {
"command": "npx",
"args": ["-y", "resend-mcp"],
"env": {
"RESEND_API_KEY": "re_xxxxxxxxx"
}
}
}
}Claude Desktop
Open Claude Desktop settings > "Developer" tab > "Edit Config".
{
"mcpServers": {
"resend": {
"command": "npx",
"args": ["-y", "resend-mcp"],
"env": {
"RESEND_API_KEY": "re_xxxxxxxxx"
}
}
}
}HTTP Transport
Run the server over HTTP for remote or web-based integrations. In HTTP mode, each client authenticates by passing their Resend API key as a Bearer token in the Authorization header.
Start the server:
npx -y resend-mcp --http --port 3000The server will listen on http://127.0.0.1:3000 and expose the MCP endpoint at /mcp using Streamable HTTP.
Claude Code
claude mcp add resend --transport http http://127.0.0.1:3000/mcp --header "Authorization: Bearer re_xxxxxxxxx"Cursor
Open the command palette and choose "Cursor Settings" > "MCP" > "Add new global MCP server".
{
"mcpServers": {
"resend": {
"url": "http://127.0.0.1:3000/mcp",
"headers": {
"Authorization": "Bearer re_xxxxxxxxx"
}
}
}
}You can also set the port via the MCP_PORT environment variable:
MCP_PORT=3000 npx -y resend-mcp --httpOptions
You can pass additional arguments to configure the server:
--key: Your Resend API key (stdio mode only; HTTP mode uses the Bearer token from the client)--sender: Default sender email address from a verified domain--reply-to: Default reply-to email address (can be specified multiple times)--http: Use HTTP transport instead of stdio (default: stdio)--port: HTTP port when using--http(default: 3000, orMCP_PORTenv var)
Environment variables:
RESEND_API_KEY: Your Resend API key (required for stdio, optional for HTTP since clients pass it via Bearer token)SENDER_EMAIL_ADDRESS: Default sender email address from a verified domain (optional)REPLY_TO_EMAIL_ADDRESSES: Comma-separated reply-to email addresses (optional)MCP_PORT: HTTP port when using--http(optional)
If you don't provide a sender email address, the MCP server will ask you to provide one each time you call the tool.
Local Development
Clone this project and build:
git clone https://github.com/resend/resend-mcp.git
pnpm install
pnpm run buildTo use the local build, replace the
npxcommand with the path to your local build:
Claude Code (stdio):
claude mcp add resend -e RESEND_API_KEY=re_xxxxxxxxx -- node ABSOLUTE_PATH_TO_PROJECT/dist/index.jsClaude Code (HTTP):
claude mcp add resend --transport http http://127.0.0.1:3000/mcp --header "Authorization: Bearer re_xxxxxxxxx"Cursor / Claude Desktop (stdio):
{
"mcpServers": {
"resend": {
"command": "node",
"args": ["ABSOLUTE_PATH_TO_PROJECT/dist/index.js"],
"env": {
"RESEND_API_KEY": "re_xxxxxxxxx"
}
}
}
}Cursor (HTTP):
{
"mcpServers": {
"resend": {
"url": "http://127.0.0.1:3000/mcp",
"headers": {
"Authorization": "Bearer re_xxxxxxxxx"
}
}
}
}Live Testing with an MCP Client
When developing, you can test changes in a real MCP client session while editing code in another.
The idea: run tsc --watch to continuously rebuild dist/, and point a separate MCP client at the built dist/index.js from a different directory. When you want to pick up code changes, restart the MCP client session (MCP servers are long-lived stdio processes that don't hot-reload).
Example with Claude Code:
Run the TypeScript watcher to auto-rebuild on save:
pnpm tsc --watchIn a separate directory, create a
.mcp.jsonpointing at the build output:mkdir -p /tmp/mcp-test// /tmp/mcp-test/.mcp.json { "mcpServers": { "resend-dev": { "command": "node", "args": ["/absolute/path/to/resend-mcp/dist/index.js"], "env": { "RESEND_API_KEY": "re_xxxxxxxxx" } } } }Start Claude Code from that directory and use the MCP tools. After making code changes, start a new Claude Code session to pick up the new build.
The same principle applies to any MCP client — separate your test environment from your dev environment, use an absolute path to dist/index.js, and reconnect the MCP server after rebuilding.
Testing with MCP Inspector
Note: Make sure you've built the project first (see Local Development section above).
Using Stdio Transport
Set your API key:
export RESEND_API_KEY=re_your_key_hereStart the inspector:
pnpm inspectorIn the browser (Inspector UI):
Choose stdio (launch a process).
Command:
nodeArgs:
dist/index.js(or the full path todist/index.js)Env:
RESEND_API_KEY=re_your_key_here(or leave blank if you already exported it in the same terminal).Click Connect, then use "List tools" to verify the server is working.
Using HTTP Transport
Start the HTTP server in one terminal:
node dist/index.js --http --port 3000Start the inspector in another terminal:
pnpm inspectorIn the browser (Inspector UI):
Choose Streamable HTTP (connect to URL).
URL:
http://127.0.0.1:3000/mcpAdd a custom header:
Authorization: Bearer re_your_key_hereand activate the toggle.Click Connect, then use "List tools" to verify the server is working.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/resend/resend-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server