Connects Claude and other MCP clients to Resend's transactional email API with 18 tools covering the full surface area: send single or batch emails (up to 100 at once), manage sending domains and DNS verification, create and revoke API keys, and do full CRUD on audiences and contacts. Built-in rate limiting keeps you under the 10 req/s free tier threshold. Reach for this when you want to automate onboarding emails, manage domain infrastructure, or send batch campaigns without leaving your AI assistant. Requires a Resend API key passed via environment variable. Open source under MIT.
YOUR_API_KEY*secretYour API key for the service
An MCP server for Resend — connect any MCP-compatible client to the Resend transactional email API.
An MCP (Model Context Protocol) server that gives AI assistants and agents full access to Resend's email API — send single or batch emails, manage sending domains, API keys, audiences, and contacts — through natural language.
Use it with Claude Desktop, Cursor, Windsurf, Cline, Continue, or any MCP-compatible client to send emails, manage infrastructure, and build automation around email.
Add to your MCP client config (e.g. claude_desktop_config.json):
{
"mcpServers": {
"resend": {
"command": "npx",
"args": ["-y", "resend-mcp-server"],
"env": {
"RESEND_API_KEY": "re_xxxxxxxxxxxx"
}
}
}
}
Get a free API key at resend.com/api-keys.
Ask your AI assistant things like:
abc-123?"mail.acme.com"domain-xyz"audience-1"| Tool | Description |
|---|---|
send_email | Send a transactional email (HTML or plain text, with Cc/Bcc/Reply-To) |
send_batch_email | Send up to 100 emails in a single API call |
list_emails | List recent sent emails with their delivery status |
get_email | Get details for a specific email by ID |
create_domain | Add a new sending domain |
list_domains | List all sending domains in your account |
verify_domain | Trigger DNS verification for a domain |
delete_domain | Remove a sending domain |
create_api_key | Create a new API key (full, sending, or domain-scoped) |
list_api_keys | List all API keys (tokens are hidden) |
delete_api_key | Delete an API key by ID |
list_audiences | List all audiences in your account |
create_audience | Create a new audience for organizing contacts |
list_contacts | List contacts in an audience |
get_contact | Get details for a specific contact by ID |
create_contact | Add a new contact to an audience |
update_contact | Update a contact's email, name, or subscription status |
delete_contact | Remove a contact from an audience |
"Send a welcome email to every new signup" — automate onboarding flows, receipts, and notifications through natural language. No more switching between email dashboards.
"Add mail.acme.com as a sending domain and verify it" — manage DNS records, DKIM, and SPF through your AI assistant instead of logging into Resend's dashboard.
"Add jane@example.com to my VIP audience" — build and segment contact lists without touching a spreadsheet. Full CRUD on contacts and audiences.
"Send this newsletter to all contacts in audience-1" — batch-send up to 100 emails in one call. Perfect for newsletters, product announcements, or re-engagement campaigns.
"List all my API keys and domains" — audit your Resend setup in seconds. See which keys are active, which domains are verified, and clean up stale resources.
The server auto-retries on 429 with a 2s backoff. Free tier allows 10 req/s. The server caps at ~9 req/s to stay safe. If you hit this frequently, consider upgrading your Resend plan.
Verify your RESEND_API_KEY starts with re_ and is active at resend.com/api-keys. Keys take up to 30 seconds to propagate after creation.
Make sure Node.js 18+ is installed: node --version. If using npx, ensure npm is up to date: npm install -g npm@latest.
Verify the config path is correct. Claude Desktop uses ~/Library/Application Support/Claude/claude_desktop_config.json on macOS and %APPDATA%\Claude\claude_desktop_config.json on Windows. Restart the client after config changes.
Check list_emails for delivery status. Common issues: missing DNS records (run verify_domain), bounce due to invalid address, or domain not yet verified. Resend's dashboard shows detailed webhook events.
RESEND_API_KEY)The server automatically rate-limits requests to ~9 calls/second to stay safely under Resend's free-tier limit of 10 req/s. If you hit a 429 anyway, it waits 2s and retries once.
git clone https://github.com/friendlygeorge/resend-mcp-server.git
cd resend-mcp-server
npm install
npm run build
RESEND_API_KEY=re_xxxx npm start
MIT
io.github.mindstone/mcp-server-microsoft-teams
helbertparanhos/resend-email-mcp
marlinjai/email-mcp
io.github.mindstone/mcp-server-email-imap
io.github.osamahassouna/email-playbook-mcp
gongrzhe/gmail-mcp-server