PSU3D0/resend-mcp
If you are the rightful owner of resend-mcp and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.
Resend MCP is a server for the Resend email API, providing a comprehensive suite of tools for email management.
resend-mcp

MCP server for the Resend email API. Exposes 49 tools for sending emails, managing domains, contacts, templates, broadcasts, webhooks, and more.
Installation
From Source
cargo install --path .
Docker
docker pull ghcr.io/psu3d0/resend-mcp:latest
docker run -p 8080:8080 -e RESEND_API_KEY=re_xxx ghcr.io/psu3d0/resend-mcp:latest
Pre-built Binaries
Download from GitHub Releases.
Usage
# Start server with stdio transport (default)
RESEND_API_KEY=re_xxx resend-mcp
# Or via CLI flag
resend-mcp --api-key re_xxx
# Use HTTP transport
resend-mcp --api-key re_xxx --transport http
# Custom bind address (HTTP mode)
resend-mcp --api-key re_xxx --transport http --bind-address 0.0.0.0 --port 3000
# Custom base URL (for proxies or testing)
resend-mcp --api-key re_xxx --base-url https://custom.api.com
# Disable startup health check
resend-mcp --api-key re_xxx --no-health-check
# Debug logging
RESEND_MCP_LOG=debug resend-mcp --api-key re_xxx
MCP Client Configuration
Claude Desktop
{
"mcpServers": {
"resend": {
"command": "resend-mcp",
"env": {
"RESEND_API_KEY": "re_xxx"
}
}
}
}
Docker
{
"mcpServers": {
"resend": {
"command": "docker",
"args": ["run", "--rm", "-p", "8080:8080", "-e", "RESEND_API_KEY=re_xxx", "ghcr.io/psu3d0/resend-mcp:latest"]
}
}
}
Available Tools
Emails
sendEmail- Send an emailsendBatchEmails- Send up to 100 emails at oncegetEmail- Retrieve a single emailupdateEmail- Update a scheduled emailcancelScheduledEmail- Cancel a scheduled emaillistEmailAttachments- List attachments for a sent emailgetEmailAttachment- Get a single attachment
Received Emails
listReceivedEmails- List received emailsgetReceivedEmail- Get a single received emaillistReceivedEmailAttachments- List attachments for a received emailgetReceivedEmailAttachment- Get a received email attachment
Domains
createDomain- Create a new domainlistDomains- List all domainsgetDomain- Get a single domainupdateDomain- Update a domaindeleteDomain- Delete a domainverifyDomain- Verify a domain
API Keys
createApiKey- Create a new API keylistApiKeys- List all API keysdeleteApiKey- Delete an API key
Audiences
createAudience- Create an audiencelistAudiences- List all audiencesgetAudience- Get a single audiencedeleteAudience- Delete an audience
Contacts
createContact- Create a contactlistContacts- List contacts in an audiencegetContactByEmail/getContactById- Get a contactupdateContactByEmail/updateContactById- Update a contactdeleteContactByEmail/deleteContactById- Delete a contact
Broadcasts
createBroadcast- Create a broadcastlistBroadcasts- List all broadcastsgetBroadcast- Get a single broadcastdeleteBroadcast- Delete a draft broadcastsendBroadcast- Send or schedule a broadcast
Templates
createTemplate- Create a templatelistTemplates- List all templatesgetTemplate- Get a single templateupdateTemplate- Update a templatedeleteTemplate- Delete a templateduplicateTemplate- Duplicate a templatepublishTemplate- Publish a template
Webhooks
createWebhook- Create a webhooklistWebhooks- List all webhooksgetWebhook- Get a single webhookupdateWebhook- Update a webhookdeleteWebhook- Delete a webhook
Configuration
All options can be set via CLI flags or environment variables.
| CLI Flag | Env Variable | Default | Description |
|---|---|---|---|
--api-key | RESEND_API_KEY | required | Resend API key |
--transport | TRANSPORT | stdio | Transport mode (stdio or http) |
--base-url | RESEND_BASE_URL | https://api.resend.com | Resend API base URL |
--bind-address | BIND_ADDRESS | 127.0.0.1 | Server bind address (HTTP mode) |
--port | PORT | 8080 | Server port (HTTP mode) |
--no-health-check | - | false | Disable startup health check |
| - | RESEND_MCP_LOG | info | Log level (error, warn, info, debug, trace) |
Health Check
On startup, the server calls listDomains to verify API key validity. This can be disabled with --no-health-check. A failed health check logs a warning but does not prevent startup.
Development
# Build
cargo build
# Run with debug logging
RESEND_MCP_LOG=debug cargo run -- --api-key re_xxx
# Format and lint
cargo fmt && cargo clippy
# Update OpenAPI spec from upstream
python scripts/transform_spec.py /path/to/upstream/resend.yaml src/specs/resend.yaml
OpenAPI Spec Updates
The spec is automatically synced from resend/resend-openapi daily via GitHub Actions. The transform script adds operationId fields and fixes YAML parsing issues.
License
Apache-2.0