Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

### Added
- Improved instructions in README
- Removed test email address from example email.md

### Added
- CC and BCC support for email recipients
- Full request/response logging for improved debugging
Expand All @@ -27,4 +31,4 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Basic email sending functionality
- HTML email support
- Email scheduling capability
- Reply-to addressing
- Reply-to addressing
111 changes: 90 additions & 21 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@

This is a simple MCP server that sends emails using Resend's API. Why? Now you can let Cursor or Claude Desktop compose emails for you and send it right away without having to copy and paste the email content.

As an example, you could use this to run local scripts, chat with Claude, or process data and send the results to yourself or your team.

Built with:

- [Resend](https://resend.com/)
Expand All @@ -18,49 +20,116 @@ Built with:
- Configure reply-to addresses
- Customizable sender email (requires verification)

**DEMO**
## Demo

https://github.com/user-attachments/assets/8c05cbf0-1664-4b3b-afb1-663b46af3464

**Cursor**
## Setup

Currently, you must build the project locally to use this MCP server. Then add the server in [Cursor](#cursor) or [Claude Desktop](#claude-desktop) to use it in any Cursor or Claude Desktop chat.

1. Clone this project locally.

1. First, you need to authorize Resend to send emails from your domain or email. Follow the steps [here](https://resend.com/docs/send-with-nodejs) to set that up and get a Resend API key.
2. Clone this project locally. Edit index.ts and replace me@yoko.dev to your own email to send emails from
3. Run `npm install`, `npm run build` under the project dir. You should now see a /build/index.js generated - this is the MCP server script!
```
git clone https://github.com/resend/mcp-send-email.git
```

2. Build the project

```
npm install
npm run build
```
3. Setup Resend

Then go to Cursor Settings -> MCP -> Add new MCP server
Create a free Resend account and [Create an API Key](https://resend.com/api-keys). To send to other addresses, you'll also need to [verify your own domain](https://resend.com/domains).

- Name = [choose your own name]
- Type = command
- Command: `node ABSOLUTE_PATH_TO_MCP_SERVER/build/index.js --key=YOUR_RESEND_API_KEY --sender=OPTIONAL_SENDER_EMAIL_ADDRESS --reply-to=OPTIONAL_REPLY_TO_EMAIL_ADDRESS_ONE --reply-to=OPTIONAL_REPLY_TO_EMAIL_ADDRESS_TWO`
> [!NOTE]
> For more info on how to send emails with Resend, see the [docs](https://resend.com/docs/send-with-nodejs).

You can get Resend API key here: https://resend.com/
## Cursor

Now you can test out sending emails by going to email.md, replace the to: email address, select all in email md, and hit cmd+l. You can now tell cursor to "send this as an email" in the chat. Make sure Cursor chat is in Agent mode by selecting "Agent" on lower left side dropdown
1. Open Cursor Settings.

<img width="441" alt="Screenshot 2025-02-25 at 9 13 05 AM" src="https://github.com/user-attachments/assets/b07e9cbf-42d8-4910-8e90-3761d8d3bc06" />
Open the command palette (`cmd`+`shift`+`p` on macOS or `ctrl`+`shift`+`p` on Windows) and choose "Cursor Settings".

**Claude desktop**
2. Add the MCP server

Same set up as above, and then add the following MCP config
Select "MCP" from the left sidebar and click "Add new global MCP server".

Add the following config:
```json
{
"mcpServers": {
"resend": {
"type": "command",
"command": "node ABSOLUTE_PATH_TO_MCP_SEND_EMAIL_PROJECT/build/index.js --key=YOUR_RESEND_API_KEY"
}
}
}
```

You can get the absolute path to your build script by right-clicking on the `/build/index.js` file in Cursor and selecting `Copy Path`.

**Possible arguments**

- `--key`: Your Resend API key (required)
- `--sender`: Your sender email address from a verified domain (optional)
- `--reply-to`: Your reply-to email address (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.

3. Test the sending

Now you can test out sending emails by going to `email.md`.
- Replace the to: email address with your own
- Select all text in `email.md`, and press `cmd+l`
- Tell cursor to "send this as an email" in the chat (make sure cursor is in Agent mode by selecting "Agent" on lower left side dropdown).

<img width="441" alt="Cursor chat with email.md file selected and Agent mode enabled" src="https://github.com/user-attachments/assets/b07e9cbf-42d8-4910-8e90-3761d8d3bc06" />

## Claude Desktop

1. Open Claude's Developer config file

Open Claude Desktop settings and navigate to the "Developer" tab. Click `Edit Config`.

2. Add the MCP server

Add the following config:

```json
{
"mcpServers": {
"resend": {
"command": "node",
"args": ["ABSOLUTE_PATH_TO_MCP_SERVER/build/index.js"],
"args": [
"ABSOLUTE_PATH_TO_MCP_SEND_EMAIL_PROJECT/build/index.js"
],
"env": {
"RESEND_API_KEY": [YOUR_API_KEY],
"SENDER_EMAIL_ADDRESS": [OPTIONAL_SENDER_EMAIL_ADDRESS],
"REPLY_TO_EMAIL_ADDRESSES": [OPTIONAL_REPLY_TO_EMAIL_ADDRESSES_COMMA_DELIMITED]
"RESEND_API_KEY": "YOUR_RESEND_API_KEY",
}
}
}
}
```

**Develop**
You can get the absolute path to your build script by right-clicking on the `/build/index.js` file in your IDE and selecting `Copy Path`.

**Possible environment variables**

- `RESEND_API_KEY`: Your Resend API key (required)
- `SENDER_EMAIL_ADDRESS`: Your sender email address from a verified domain (optional)
- `REPLY_TO_EMAIL_ADDRESS`: Your reply-to email address (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.

3. Test the sending

Close and reopen Claude Desktop. Verify that the `resend` tool is available in the Claude developer settings.

![Claude Desktop developer settings with Resend MCP server showing](https://github.com/user-attachments/assets/be9549e5-eaef-4946-b10a-e708c1864acf)

`npm install`
`npm run build`
Chat with Claude and tell it to send you an email using the `resend` tool.
4 changes: 2 additions & 2 deletions email.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
to: ykhli1013@gmail.com
to: YOUR_EMAIL_ADDRESS
subject: Test!
content: This is a test email.

Expand All @@ -8,4 +8,4 @@ Fun fact: cats have 32 muscles in their ears. (??!)

# Example of using CC and BCC:
# cc: colleague1@example.com, colleague2@example.com
# bcc: manager@example.com
# bcc: manager@example.com