A laptop showing a Resend email dashboard and API keys, linked by a connector to a friendly AI assistant

Resend MCP Server: Send, Read, and Manage Email by AI

Yes — Resend has an official MCP server, and it’s first-party. Resend builds and maintains it in the resend/resend-mcp repo, hosts a remote version at https://mcp.resend.com/mcp, and publishes a local one you run with npx -y resend-mcp. It started life as a bare send-email tool and has since grown into full coverage of the Resend API — emails, contacts, broadcasts, domains, webhooks, API keys, and inbound mail.

(If you landed here looking for how to re-send a message that failed to arrive, that’s a different thing — this is about Resend, the developer email API, and its Model Context Protocol server.)

Resend is one of many — the complete list of MCP servers covers every app that ships one, grouped by category.


What the Resend MCP server exposes

Model Context Protocol is the open standard that lets an AI client — Claude, ChatGPT, Cursor, Codex, Copilot — call an outside app through one shared interface. Resend’s server is not send-only anymore. Its docs group the tools roughly like this:

  • Emails — send, batch send, list, retrieve, cancel, and update scheduled sends. Supports HTML and plain text, CC/BCC, attachments, tags, and scheduling.
  • Inbound — list and read received email, and pull attachments off it. This is the half people miss: the server reads mail as well as sends it.
  • Contacts and audiences — create and update contacts, manage segments, topics, and custom contact properties.
  • Broadcasts — create, schedule, personalize, and send campaigns.
  • Domains — create a domain, check its DNS records, run verification, configure tracking and TLS.
  • Infrastructure — API keys, webhook endpoints, and request logs.

The practical upshot: you can tell an assistant “send this release note to the beta list as a broadcast, scheduled for 9am Tuesday” and it will do the whole thing without you opening the dashboard.

Setting it up: API key, then verified domain

Two prerequisites, and the second one is where most first attempts die.

1. Create an API key. In the Resend dashboard, go to API Keys and create one. It starts with re_. Scope it to sending only if that’s all the assistant needs — a full-access key on an MCP server means the AI can also delete domains and rotate keys.

2. Verify a sending domain. Resend will not let you send from an unverified domain. You add the domain in Domains, Resend gives you DNS records (SPF and DKIM, plus optionally a return-path and DMARC record), and you add them at your registrar. Until verification goes green you can only send to your own account address — which is exactly why the first MCP-sent email so often bounces or errors with nothing obviously wrong in the prompt. If a send fails, have the assistant call the domain-verification tool and read back the missing records.

3. Connect the server. For the remote server, add https://mcp.resend.com/mcp as a remote MCP server in your client and sign in with OAuth, or pass your API key as a bearer token in an Authorization header for headless setups. For the local server, add npx -y resend-mcp as a stdio command with RESEND_API_KEY in the environment. Optionally set a default sender address from your verified domain, otherwise the server asks you for a from: on every call.

The remote server is the better default for web clients like Claude and ChatGPT — nothing to install, and it stays current. The local one is worth it when you want the key to never leave your machine, or when you’re wiring Resend into an agent that already runs locally. For the ChatGPT side specifically, connecting MCP servers to ChatGPT has its own quirks around which surfaces accept remote servers.

Sending email from an AI is less settled than it looks

Worth calibrating expectations here, because “my AI can send email” means very different things depending on the path. Resend’s MCP server sends through your Resend account — a transactional API with a verified domain behind it — which is a cleaner story than the built-in mail connectors:

Which assistant can hit send depends on your mail provider. ChatGPT sends from Gmail one message at a time. Claude sends through Outlook and Microsoft 365 but only drafts in Gmail. Both confirm before sending and neither handles attachments.

That’s the tradeoff. Going through Resend means real sending, attachments, batching, and scheduling, but it also means email that leaves from your marketing or product domain rather than your personal inbox, with none of the reply-thread context.

Where the Resend MCP stops

None of this is a knock on the server, which is one of the more complete first-party MCPs shipping today. The limits are the protocol’s:

  • It answers, it doesn’t watch. MCP is request/response inside a conversation. Close the chat and nothing happens. The server never wakes up on its own.
  • Resend has events; MCP can’t listen to them. This is the sharp one. Resend emits webhooks for email.sent, email.delivered, email.bounced, email.complained, email.opened, and email.clicked. The MCP server can create and configure those webhook endpoints — it just can’t be the thing on the receiving end. So “when a broadcast bounces, log it and alert me” is not an MCP job, even though every ingredient exists in the Resend API.
  • One app at a time. The Resend MCP knows Resend. Getting a bounced address into your CRM, a Slack channel, and a spreadsheet means a separate server and separate auth for each, then hoping your client juggles them in one turn.
  • The key’s blast radius is yours. A full-access re_ key handed to an AI client can delete domains and mint new keys. Scope it down.

Running Resend work on a trigger instead of a prompt

That event gap is the whole reason Carly exists as a different kind of tool. Carly connects to Resend natively — no server to host, no key pasted into a config file — alongside ~260 other apps, plus anything with a public API via your own key. The difference is the trigger: Carly’s workflows fire on events and schedules, so the work happens whether or not a chat window is open.

Things a Resend webhook can start in Carly that MCP can’t start at all:

  • When an email hard-bounces → mark the contact invalid in your CRM, remove them from the audience, and post the address to #growth.
  • When someone marks a broadcast as spam → suppress them everywhere, not just in Resend, and open a ticket if they’re a paying customer.
  • Every Monday → summarize last week’s delivery, open, and click rates into a short digest and email it to the team.
  • When a form is submitted → add the contact to a Resend audience and fire the welcome email.

The non-AI steps — the moving, matching, and routing between apps — are free and unlimited, the Zapier-style backbone of the workflow. The AI steps, like drafting the digest or deciding whether a bounce is worth escalating, start at $35/month.

If you want to drive Resend from a prompt, the official MCP server is genuinely good and takes ten minutes to wire up. If you want Resend’s events to set things in motion across your other tools, that’s the job MCP wasn’t designed for.

Also worth reading if you got here from a specific client: ChatGPT and Resend or Claude and Resend.

FAQ

Does Resend have an official MCP server? Yes. Resend maintains it first-party at github.com/resend/resend-mcp, with a hosted remote endpoint at https://mcp.resend.com/mcp and a local option via npx -y resend-mcp. Third-party Resend MCP servers exist on GitHub and in various catalogs, but there’s no reason to use one — the official server covers the full API.

Is the Resend MCP server send-only? No, not anymore. It began as a single send-email tool and now covers emails, inbound mail, contacts, segments, topics, broadcasts, domains, webhooks, and API keys.

Do I need a verified domain to use the Resend MCP server? Yes, to send to anyone other than yourself. Resend requires DNS verification (SPF and DKIM records at your registrar) before a domain can send. An unverified domain is the most common cause of an MCP send that fails for no visible reason.

Can the Resend MCP react to a bounce or an open? No. Resend emits webhooks for delivered, bounced, complained, opened, and clicked events, and the MCP server can configure those endpoints — but MCP has no way to listen for them. Reacting to an email event needs a workflow tool with real triggers, like Carly, rather than an MCP server.

Which is better, the remote or local Resend MCP server? Remote for web-based clients — nothing to install and it updates itself. Local when you want your API key to stay on your machine or you’re embedding Resend in an agent that already runs there.

Ready to automate your busywork?

Carly schedules, researches, and briefs you—so you can focus on what matters.

See what people say

"Before Carly, I relied on a Calendly link, but the whole process felt impersonal and not very professional. Carly changed that by handling all the back-and-forth, so I'm no longer stuck in endless email threads trying to line up schedules.

Now Carly reaches out to candidates, shares my real-time availability, lets them pick a slot, then sends a Zoom link and drops it straight into my calendar. She sends reminders to both of us before each call, which has significantly reduced no-shows and last-minute confusion.

On top of scheduling, Carly acts like a full executive assistant, sending me my schedule the night before so I can prepare for each call. It reminds me of the old x.ai assistant, but Carly is noticeably smarter, faster, and better suited to my healthcare recruitment business."

Gus Ibrahim, Founder & Director, IHR