Server data from the Official MCP Registry
Complete Resend email MCP: full API coverage + debug layer (deliverability, DNS, bounces).
Complete Resend email MCP: full API coverage + debug layer (deliverability, DNS, bounces).
This is a well-engineered MCP server for the Resend email API with strong security fundamentals. Authentication is properly required via API keys stored in environment variables, not hardcoded. The server implements thoughtful security controls including path traversal prevention for file attachments, URL validation to prevent credential exfiltration, and a readonly mode for safe account exploration. Code quality is high with proper error handling and input validation. Permissions align well with the stated purpose (Resend API integration). Minor observations: the MAX_BODY_CHARS limit could be slightly lower, and verbose error hints (while helpful) theoretically reveal some API structure, but these are low-severity and do not materially impact security. Supply chain analysis found 3 known vulnerabilities in dependencies (0 critical, 3 high severity). Package verification found 1 issue.
5 files analyzed · 8 issues found
Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.
This plugin requests these system permissions. Most are normal for its category.
Set these up before or after installing:
Environment variable: RESEND_API_KEY
Environment variable: RESEND_FROM
Environment variable: RESEND_REPLY_TO
Environment variable: RESEND_READONLY
Environment variable: RESEND_ATTACHMENTS_DIR
Add this to your MCP configuration file:
{
"mcpServers": {
"io-github-helbertparanhos-resend-email-mcp": {
"env": {
"RESEND_FROM": "your-resend-from-here",
"RESEND_API_KEY": "your-resend-api-key-here",
"RESEND_READONLY": "your-resend-readonly-here",
"RESEND_REPLY_TO": "your-resend-reply-to-here",
"RESEND_ATTACHMENTS_DIR": "your-resend-attachments-dir-here"
},
"args": [
"-y",
"resend-email-mcp"
],
"command": "npx"
}
}
}From the project's GitHub README.
The most complete Resend MCP server — full coverage of the Resend API (emails, domains, contacts, broadcasts, templates, segments, topics, webhooks, logs) plus a unique debug/diagnostics layer no other Resend MCP offers: deliverability analysis, DNS troubleshooting, email lifecycle inspection, bounce explanation, and account auditing.
Works with Claude Code, Cursor, Claude Desktop, and any other MCP client.
| resend-email-mcp | Official resend-mcp | Minimal MCPs | |
|---|---|---|---|
| Send / batch / schedule | ✅ | ✅ | partial |
| Domains, contacts, broadcasts, templates, segments, topics, webhooks | ✅ | ✅ | ❌ |
| API request logs tools | ✅ | ❌ | ❌ |
| Debug layer (diagnose, analyze, inspect, explain, audit) | ✅ 7 tools | ❌ | ❌ |
| Readonly safety mode | ✅ | ❌ | ❌ |
| Raw escape hatch for new endpoints | ✅ | ❌ | ❌ |
| Idempotency-key support | ✅ | partial | ❌ |
75 tools + 2 resources.
Create one at https://resend.com/api-keys.
claude mcp add resend -e RESEND_API_KEY=re_xxxxxxxx -- npx -y resend-email-mcp
mcp.json / claude_desktop_config.json){
"mcpServers": {
"resend": {
"command": "npx",
"args": ["-y", "resend-email-mcp"],
"env": {
"RESEND_API_KEY": "re_xxxxxxxx",
"RESEND_FROM": "Acme <hello@acme.com>"
}
}
}
}
Config file locations:
%APPDATA%\Claude\claude_desktop_config.json~/Library/Application Support/Claude/claude_desktop_config.json~/.cursor/mcp.json (or per-project .cursor/mcp.json)Restart the client and ask: "Send a test email to delivered@resend.dev" or "Audit my Resend account."
| Env var | Required | Description |
|---|---|---|
RESEND_API_KEY | ✅ | Your Resend API key |
RESEND_FROM | – | Default sender for send_email when from is omitted (must be a verified domain) |
RESEND_REPLY_TO | – | Default Reply-To address |
RESEND_READONLY | – | true blocks every mutating tool (send/create/update/delete). Safe exploration of production |
RESEND_ATTACHMENTS_DIR | – | Directory that send_email's localPath attachments are restricted to. Unset = disk reads disabled (safe default; path traversal is blocked) |
RESEND_BASE_URL | – | Override API base URL (default https://api.resend.com). Must be https (http only for localhost) |
RESEND_MAX_RETRIES | – | Retries on 429/5xx (default 3) |
send_email · send_batch_emails · get_email · list_emails · update_email · cancel_email · preview_email
send_emailaccepts attachments by base64content, publicpath(URL), orlocalPath(a file on disk, read and base64-encoded automatically — only enabled whenRESEND_ATTACHMENTS_DIRis set, and restricted to that directory).preview_emaildry-runs a message — resolving the final sender, sizing attachments, and surfacing warnings — without sending.
list_email_attachments · get_email_attachment · list_received_emails · get_received_email · list_received_attachments · get_received_attachment
create_domain · get_domain · list_domains · update_domain · delete_domain · verify_domain
create_api_key · list_api_keys · delete_api_key
create_broadcast · get_broadcast · list_broadcasts · update_broadcast · send_broadcast · delete_broadcast
create_contact · get_contact · list_contacts · update_contact · delete_contact · get_contact_topics · update_contact_topics · list_contact_segments · add_contact_to_segment · remove_contact_from_segment
create_contact_property · get_contact_property · list_contact_properties · update_contact_property · delete_contact_property
create_segment · get_segment · list_segments · delete_segment · list_segment_contacts
create_template · get_template · list_templates · update_template · delete_template · publish_template · duplicate_template
create_topic · get_topic · list_topics · update_topic · delete_topic
create_webhook · get_webhook · list_webhooks · update_webhook · delete_webhook
list_logs · get_log
| Tool | What it does |
|---|---|
diagnose_domain | Inspects every DNS record (SPF/DKIM/DMARC) and reports what's missing + how to fix it |
analyze_deliverability | Aggregates recent sends into delivery/bounce/complaint rates with a health verdict |
inspect_email | Renders one email's full lifecycle timeline and flags problems |
explain_bounce | Classifies a bounce (hard/soft/block) and recommends the action |
audit_account | One-shot health check of domains, keys, and deliverability |
search_logs | Smart filtering of API logs by status/path/recipient to find failures |
test_send | Safely simulates delivered/bounced/complained via Resend sandbox addresses |
resend_raw — call any Resend endpoint not yet wrapped in a dedicated tool.
Beyond tools, the server exposes two read-only MCP resources so a client can pull account context without spending a tool call:
| URI | Content |
|---|---|
resend://account | Domains + API keys snapshot |
resend://domains | All sending domains with verification status |
Every tool is annotated with MCP hints (readOnlyHint, destructiveHint, idempotentHint) so clients can show which operations are safe and which need confirmation.
diagnose_domainanalyze_deliverabilityinspect_emailexplain_bounceaudit_accountcreate_broadcast + send_broadcastUse Resend's sandbox addresses (no reputation impact):
delivered@resend.dev — simulates deliverybounced@resend.dev — simulates a hard bouncecomplained@resend.dev — simulates a spam complaintOr just run test_send and then inspect_email on the returned ID.
Enable RESEND_READONLY=true to explore a production account without any risk of sending or deleting.
This MCP is built to debug itself — when something fails, reach for the diagnostic tools instead of guessing.
| Symptom / error | Likely cause | What to run |
|---|---|---|
validation_error: from domain is not verified | Your from/RESEND_FROM domain isn't verified | list_domains → diagnose_domain (shows missing DNS records + fixes) → verify_domain |
| Emails send but never arrive | Deliverability / reputation issue | analyze_deliverability then inspect_email on a sample ID |
missing_api_key / invalid_api_key (HTTP 401) | RESEND_API_KEY unset or wrong | Check the .env; create a key at resend.com/api-keys |
restricted_api_key / not_authorized (403) | Key scoped to sending-only or one domain | Use a full_access key (list_api_keys to inspect) |
rate_limit_exceeded (429) | Too many requests | The client auto-retries with backoff; reduce volume |
daily_quota_exceeded | Plan send limit reached | Upgrade plan or wait for reset |
| A specific email bounced | Invalid/blocking recipient | explain_bounce (classifies hard/soft/block + action) |
| "Is anything wrong with my setup?" | — | audit_account (one-shot health check) |
| Request fails for unknown reason | — | search_logs with only_errors: true |
Every error returned by this server includes the HTTP status, Resend's error name, and an actionable Hint line.
git clone https://github.com/helbertparanhos/resend-email-mcp.git
cd resend-email-mcp
npm install
npm run build
cp .env.example .env # add your RESEND_API_KEY
npm run inspector # opens the MCP Inspector against the built server
MIT © Helbert Paranhos / Strat Academy
Built with the Model Context Protocol. Not affiliated with Resend.
Be the first to review this server!
by Modelcontextprotocol · Developer Tools
Read, search, and manipulate Git repositories programmatically
by Modelcontextprotocol · Developer Tools
Web content fetching and conversion for efficient LLM usage
by Toleno · Developer Tools
Toleno Network MCP Server — Manage your Toleno mining account with Claude AI using natural language.