freshcrate
Skin:/
Home > MCP Servers > resend-mcp

resend-mcp

The official MCP server to send emails and interact with Resend

Why this rank:Strong adoptionRecent releaseHealthy release cadence

Description

The official MCP server to send emails and interact with Resend

README

Resend MCP Server

smithery badge npm version

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.

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-mcp

Cursor

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 3000

The 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 --http

Options

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, or MCP_PORT env 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)

Note

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

  1. Clone this project and build:
git clone https://github.com/resend/resend-mcp.git
pnpm install
pnpm run build
  1. To use the local build, replace the npx command 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.js

Claude 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:

  1. Run the TypeScript watcher to auto-rebuild on save:

    pnpm tsc --watch
  2. In a separate directory, create a .mcp.json pointing 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"
          }
        }
      }
    }
  3. 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

  1. Set your API key:

    export RESEND_API_KEY=re_your_key_here
  2. Start the inspector:

    pnpm inspector
  3. In the browser (Inspector UI):

    • Choose stdio (launch a process).
    • Command: node
    • Args: dist/index.js (or the full path to dist/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

  1. Start the HTTP server in one terminal:

    node dist/index.js --http --port 3000
  2. Start the inspector in another terminal:

    pnpm inspector
  3. In the browser (Inspector UI):

    • Choose Streamable HTTP (connect to URL).
    • URL: http://127.0.0.1:3000/mcp
    • Add a custom header: Authorization: Bearer re_your_key_here and activate the toggle.
    • Click Connect, then use "List tools" to verify the server is working.

Release History

VersionChangesUrgencyDate
v2.27.1## What's Changed * fix(inboxes): accept large attachments and fix inbox tool details by @felipefreitag in https://github.com/resend/resend-mcp/pull/244 **Full Changelog**: https://github.com/resend/resend-mcp/compare/v2.27.0...v2.27.1High10/16/2026
v2.26.1## What's Changed * fix(inboxes): describe reply-all on sent emails and clean up inbox test names by @felipefreitag in https://github.com/resend/resend-mcp/pull/240 **Full Changelog**: https://github.com/resend/resend-mcp/compare/v2.26.0...v2.26.1High10/14/2026
v2.25.0## What's Changed * fix(security): restrict local file reads in send-email and create-contact-import by @kewynakshlley in https://github.com/resend/resend-mcp/pull/237 ## New Contributors * @kewynakshlley made their first contribution in https://github.com/resend/resend-mcp/pull/237 **Full Changelog**: https://github.com/resend/resend-mcp/compare/v2.24.0...v2.25.0High10/6/2026
v2.24.0## What's Changed * feat(webhooks): add topic and contact.topics.updated webhook events by @joaopcm in https://github.com/resend/resend-mcp/pull/235 **Full Changelog**: https://github.com/resend/resend-mcp/compare/v2.23.0...v2.24.0High9/29/2026
v2.23.0## What's Changed * feat(usage): add get-usage tool by @dielduarte in https://github.com/resend/resend-mcp/pull/234 **Full Changelog**: https://github.com/resend/resend-mcp/compare/v2.22.0...v2.23.0High9/25/2026
v2.22.0## What's Changed * fix(automations): append /editor to automation preview URLs by @dielduarte in https://github.com/resend/resend-mcp/pull/232 **Full Changelog**: https://github.com/resend/resend-mcp/compare/v2.21.0...v2.22.0High9/14/2026
v2.20.1## What's Changed * fix(webhooks): point create-webhook at get-webhook for the signing secret by @gabrielmfern in https://github.com/resend/resend-mcp/pull/229 **Full Changelog**: https://github.com/resend/resend-mcp/compare/v2.20.0...v2.20.1High9/11/2026
v2.19.0## What's Changed * feat(webhooks): add replay-webhook-event tool by @gabrielmfern in https://github.com/resend/resend-mcp/pull/222 **Full Changelog**: https://github.com/resend/resend-mcp/compare/v2.18.0...v2.19.0High9/4/2026
v2.15.0## What's Changed * feat: add update-api-key tool by @dielduarte in https://github.com/resend/resend-mcp/pull/210 * feat(emails): add share-email tool by @dielduarte in https://github.com/resend/resend-mcp/pull/211 * chore: bump version to 2.15.0 by @dielduarte in https://github.com/resend/resend-mcp/pull/213 **Full Changelog**: https://github.com/resend/resend-mcp/compare/v2.14.0...v2.15.0High8/21/2026
v2.12.0## What's Changed * chore: bump resend to 6.18.0 by @felipefreitag in https://github.com/resend/resend-mcp/pull/194 * feat: add suppression list tools by @Cisneiros in https://github.com/resend/resend-mcp/pull/196 * fix: reject empty idempotency keys by @mayankbohradev in https://github.com/resend/resend-mcp/pull/197 * chore: annotate read-only tools with readOnlyHint by @FutureEnterprises in https://github.com/resend/resend-mcp/pull/201 * fix: preserve `''` empty template/broadcast text by @mayHigh8/7/2026
v2.11.0## What's Changed * feat: better order of validation for command running by @apoorvdarshan in https://github.com/resend/resend-mcp/pull/166 * feat: add idempotencyKey to send-email and send-batch-emails by @mayankbohradev in https://github.com/resend/resend-mcp/pull/186 ## New Contributors * @apoorvdarshan made their first contribution in https://github.com/resend/resend-mcp/pull/166 **Full Changelog**: https://github.com/resend/resend-mcp/compare/v2.10.1...v2.11.0High7/10/2026
v2.10.0## What's Changed * chore: update sync_prs_to_linear sha by @dielduarte in https://github.com/resend/resend-mcp/pull/178 * feat: update github repo readme by @cpenned in https://github.com/resend/resend-mcp/pull/179 * feat: add list and revoke OAuth grant tools by @dielduarte in https://github.com/resend/resend-mcp/pull/180 **Full Changelog**: https://github.com/resend/resend-mcp/compare/v2.9.0...v2.10.0High7/3/2026
v2.9.0## What's Changed * feat: add MCP tools for bulk CSV contact imports by @dielduarte in https://github.com/resend/resend-mcp/pull/175 * chore: bump version to 2.9.0 by @dielduarte in https://github.com/resend/resend-mcp/pull/176 **Full Changelog**: https://github.com/resend/resend-mcp/compare/v2.8.0...v2.9.0High6/23/2026
v2.6.3## What's Changed * feat(http): configurable host/allowedHosts for DNS-rebinding protection by @dielduarte in https://github.com/resend/resend-mcp/pull/169 **Full Changelog**: https://github.com/resend/resend-mcp/compare/v2.6.2...v2.6.3High6/18/2026
v2.6.1## What's Changed * fix: replace third-party domain.com with example.com in code example by @felipefreitag in https://github.com/resend/resend-mcp/pull/126 * chore: right-size Depot runners from 8 CPU to 2 CPU by @felipefreitag in https://github.com/resend/resend-mcp/pull/127 * chore: automate GH release and publish to NPM on git tag creation by @felipefreitag in https://github.com/resend/resend-mcp/pull/128 * chore: simplify ci scripts by @felipefreitag in https://github.com/resend/resend-mHigh5/28/2026
v2.6.0## What's Changed * feat: set user agent to resend-mcp for API requests by @felipefreitag in https://github.com/resend/resend-mcp/pull/123 * feat: add custom tracking domain support by @felipefreitag in https://github.com/resend/resend-mcp/pull/124 * chore: bump 2.6.0 by @felipefreitag in https://github.com/resend/resend-mcp/pull/125 **Full Changelog**: https://github.com/resend/resend-mcp/compare/v2.5.0...v2.6.0High4/16/2026
v2.5.0## What's Changed * feat: add URL parsing support for Resend dashboard links by @danilowoz in https://github.com/resend/resend-mcp/pull/119 * feat: connect to editor early in get-tiptap-json-content by @felipefreitag in https://github.com/resend/resend-mcp/pull/120 **Full Changelog**: https://github.com/resend/resend-mcp/compare/v2.4.1...v2.5.0High4/14/2026
v2.4.1## What's Changed * fix: improve send_email guidance to prevent missing from/subject by @felipefreitag in https://github.com/resend/resend-mcp/pull/117 **Full Changelog**: https://github.com/resend/resend-mcp/compare/v2.4.0...v2.4.1Medium4/14/2026
v2.4.0## What's Changed * fix: compose ux improvements by @felipefreitag in https://github.com/resend/resend-mcp/pull/112 * feat: automations and events tools by @felipefreitag in https://github.com/resend/resend-mcp/pull/115 **Full Changelog**: https://github.com/resend/resend-mcp/compare/v2.3.2...v2.4.0High4/13/2026
v2.3.2## What's Changed * chore: change runners to depot by @felipefreitag in https://github.com/resend/resend-mcp/pull/110 * feat: add get-tiptap-json-content tool and restore compose guidance by @joaopcm in https://github.com/resend/resend-mcp/pull/108 * chore: bump package version to 2.3.2 by @joaopcm in https://github.com/resend/resend-mcp/pull/111 **Full Changelog**: https://github.com/resend/resend-mcp/compare/v2.3.1...v2.3.2High4/9/2026
v2.3.1## What's Changed * fix(editor): preprocess stringified JSON in compose tools by @joaopcm in https://github.com/resend/resend-mcp/pull/103 * fix(broadcasts): improve LLM usability and migrate audience → segment by @felipefreitag in https://github.com/resend/resend-mcp/pull/104 * fix: stop recommending compose tools as default content method by @felipefreitag in https://github.com/resend/resend-mcp/pull/107 * chore: bump 2.3.1 by @felipefreitag in https://github.com/resend/resend-mcp/pull/106Medium4/9/2026
v2.3.0## What's Changed * feat: add template tools by @felipefreitag in https://github.com/resend/resend-mcp/pull/91 * chore(deps): update dependency @biomejs/biome to v2.4.10 by @renovate[bot] in https://github.com/resend/resend-mcp/pull/68 * feat: editor content integration by @danilowoz in https://github.com/resend/resend-mcp/pull/95 * chore: bump to v2.3.0 by @drish in https://github.com/resend/resend-mcp/pull/99 **Full Changelog**: https://github.com/resend/resend-mcp/compare/v2.2.0...v2High4/3/2026
v2.2.0## What's Changed * chore: add npm badge by @drish in https://github.com/resend/resend-mcp/pull/83 * feat: enhance get-broadcast tool to include email content by @danilowoz in https://github.com/resend/resend-mcp/pull/84 * chore: bump version to 2.2.0 by @drish in https://github.com/resend/resend-mcp/pull/85 ## New Contributors * @danilowoz made their first contribution in https://github.com/resend/resend-mcp/pull/84 **Full Changelog**: https://github.com/resend/resend-mcp/compare/v2.1Low3/4/2026
v2.1.1## What's Changed * feat: add GET /health by @drish in https://github.com/resend/resend-mcp/pull/75 * chore: remove debug logging by @drish in https://github.com/resend/resend-mcp/pull/76 * fix: clean up redundant messages by @felipefreitag in https://github.com/resend/resend-mcp/pull/82 * fix(deps): update dependency resend to v6.9.3 by @renovate[bot] in https://github.com/resend/resend-mcp/pull/78 ## New Contributors * @felipefreitag made their first contribution in https://github.com/Low3/3/2026
v2.1.0**Full Changelog**: https://github.com/resend/resend-mcp/commits/v2.1.0Low2/24/2026

Dependencies & License Audit

Loading dependencies...

Similar Packages

hyperframesWrite HTML. Render video. Built for agents.v0.8.197
Playwright-AI-Agent-POM-MCP-ServerPlaywright AI Agent POM MCP ServerPlaywright AI Agent using Page Object Model (POM) architecture with MCP Server integration for automated web and mobile testingmain@2026-10-25
neurolinkUniversal AI Development Platform with MCP server integration, multi-provider support, and professional CLI. Build, test, and deploy AI applications with multiple ai providers.v13.8.15
bv-mcpOpen-source DNS & email security scanner. One MCP endpoint, 57 checks, zero install. Cloudflare Workers.v3.103.1
Cogitator-AI🤖 Kubernetes for AI Agents. Self-hosted, production-grade runtime for orchestrating LLM swarms and autonomous agents. TypeScript-native.@cogitator-ai/core@0.67.0

More in MCP Servers

litellmPython SDK, Proxy Server (AI Gateway) to call 100+ LLM APIs in OpenAI (or native) format, with cost tracking, guardrails, loadbalancing and logging. [Bedrock, Azure, OpenAI, VertexAI, Cohere, Anthropi
ruflo🌊 The leading agent orchestration platform for Claude. Deploy intelligent multi-agent swarms, coordinate autonomous workflows, and build conversational AI systems. Features enterprise-grade archit
@claude-flow/cliRuflo CLI - Enterprise AI agent orchestration with 60+ specialized agents, swarm coordination, MCP server, self-learning hooks, and vector memory for Claude Code
claude-plugins-officialOfficial, Anthropic-managed directory of high quality Claude Code Plugins.