{"id":44690889,"url":"https://github.com/resend/resend-mcp","last_synced_at":"2026-04-09T15:05:41.913Z","repository":{"id":279461913,"uuid":"937958453","full_name":"resend/resend-mcp","owner":"resend","description":"The official MCP server to send emails and interact with Resend","archived":false,"fork":false,"pushed_at":"2026-02-12T21:09:43.000Z","size":109,"stargazers_count":446,"open_issues_count":17,"forks_count":64,"subscribers_count":4,"default_branch":"main","last_synced_at":"2026-02-13T00:33:37.538Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/resend.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-02-24T07:36:06.000Z","updated_at":"2026-02-12T21:08:06.000Z","dependencies_parsed_at":"2025-02-25T18:24:37.832Z","dependency_job_id":"8485e31e-2465-49bb-ad67-4be18e81cdc5","html_url":"https://github.com/resend/resend-mcp","commit_stats":null,"previous_names":["ykhli/mcp-send-email","resend/mcp-send-email","resend/resend-mcp"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/resend/resend-mcp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resend%2Fresend-mcp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resend%2Fresend-mcp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resend%2Fresend-mcp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resend%2Fresend-mcp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/resend","download_url":"https://codeload.github.com/resend/resend-mcp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/resend%2Fresend-mcp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29472879,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-15T06:58:05.414Z","status":"ssl_error","status_checked_at":"2026-02-15T06:58:05.085Z","response_time":118,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-02-15T07:08:23.341Z","updated_at":"2026-04-09T15:05:41.907Z","avatar_url":"https://github.com/resend.png","language":"TypeScript","funding_links":[],"categories":["Servers"],"sub_categories":["Communication"],"readme":"# Resend MCP Server\n\n[![smithery badge](https://smithery.ai/badge/@resend/resend-mcp)](https://smithery.ai/server/@resend/resend-mcp)\n[![npm version](https://img.shields.io/npm/v/resend-mcp)](https://www.npmjs.com/package/resend-mcp)\n\nAn MCP server for the [Resend](https://resend.com/) platform. Send and receive emails, manage contacts, broadcasts, domains, and more — directly from any MCP client like Claude Desktop, Cursor, or Claude Code.\n\n## Features\n\n- **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.\n- **Received Emails** — List and read inbound emails. List and download received email attachments.\n- **Contacts** — Create, list, get, update, and remove contacts. Manage segment memberships and topic subscriptions. Supports custom contact properties.\n- **Broadcasts** — Create, send, list, get, update, and remove broadcast campaigns. Supports scheduling, personalization placeholders, and preview text.\n- **Domains** — Create, list, get, update, remove, and verify sender domains. Configure tracking, TLS, and sending/receiving capabilities.\n- **Segments** — Create, list, get, and remove audience segments.\n- **Topics** — Create, list, get, update, and remove subscription topics.\n- **Contact Properties** — Create, list, get, update, and remove custom contact attributes.\n- **API Keys** — Create, list, and remove API keys.\n- **Webhooks** — Create, list, get, update, and remove webhooks for event notifications.\n\n## Setup\n\nCreate a free Resend account and [create an API key](https://resend.com/api-keys). To send to addresses outside of your own, you'll need to [verify your domain](https://resend.com/domains).\n\n## Usage\n\nThe server supports two transport modes: **stdio** (default) and **HTTP**.\n\n### Stdio Transport (Default)\n\n#### Claude Code\n\n```bash\nclaude mcp add resend -e RESEND_API_KEY=re_xxxxxxxxx -- npx -y resend-mcp\n```\n\n#### Cursor\n\nOpen the command palette and choose \"Cursor Settings\" \u003e \"MCP\" \u003e \"Add new global MCP server\".\n\n```json\n{\n  \"mcpServers\": {\n    \"resend\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"resend-mcp\"],\n      \"env\": {\n        \"RESEND_API_KEY\": \"re_xxxxxxxxx\"\n      }\n    }\n  }\n}\n```\n\n#### Claude Desktop\n\nOpen Claude Desktop settings \u003e \"Developer\" tab \u003e \"Edit Config\".\n\n```json\n{\n  \"mcpServers\": {\n    \"resend\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"resend-mcp\"],\n      \"env\": {\n        \"RESEND_API_KEY\": \"re_xxxxxxxxx\"\n      }\n    }\n  }\n}\n```\n\n### HTTP Transport\n\nRun 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.\n\nStart the server:\n\n```bash\nnpx -y resend-mcp --http --port 3000\n```\n\nThe server will listen on `http://127.0.0.1:3000` and expose the MCP endpoint at `/mcp` using Streamable HTTP.\n\n#### Claude Code\n\n```bash\nclaude mcp add resend --transport http http://127.0.0.1:3000/mcp --header \"Authorization: Bearer re_xxxxxxxxx\"\n```\n\n#### Cursor\n\nOpen the command palette and choose \"Cursor Settings\" \u003e \"MCP\" \u003e \"Add new global MCP server\".\n\n```json\n{\n  \"mcpServers\": {\n    \"resend\": {\n      \"url\": \"http://127.0.0.1:3000/mcp\",\n      \"headers\": {\n        \"Authorization\": \"Bearer re_xxxxxxxxx\"\n      }\n    }\n  }\n}\n```\n\nYou can also set the port via the `MCP_PORT` environment variable:\n\n```bash\nMCP_PORT=3000 npx -y resend-mcp --http\n```\n\n### Options\n\nYou can pass additional arguments to configure the server:\n\n- `--key`: Your Resend API key (stdio mode only; HTTP mode uses the Bearer token from the client)\n- `--sender`: Default sender email address from a verified domain\n- `--reply-to`: Default reply-to email address (can be specified multiple times)\n- `--http`: Use HTTP transport instead of stdio (default: stdio)\n- `--port`: HTTP port when using `--http` (default: 3000, or `MCP_PORT` env var)\n\nEnvironment variables:\n\n- `RESEND_API_KEY`: Your Resend API key (required for stdio, optional for HTTP since clients pass it via Bearer token)\n- `SENDER_EMAIL_ADDRESS`: Default sender email address from a verified domain (optional)\n- `REPLY_TO_EMAIL_ADDRESSES`: Comma-separated reply-to email addresses (optional)\n- `MCP_PORT`: HTTP port when using `--http` (optional)\n\n\u003e [!NOTE]\n\u003e If you don't provide a sender email address, the MCP server will ask you to provide one each time you call the tool.\n\n## Local Development\n\n1. Clone this project and build:\n\n```\ngit clone https://github.com/resend/resend-mcp.git\npnpm install\npnpm run build\n```\n\n2. To use the local build, replace the `npx` command with the path to your local build:\n\n**Claude Code (stdio):**\n\n```bash\nclaude mcp add resend -e RESEND_API_KEY=re_xxxxxxxxx -- node ABSOLUTE_PATH_TO_PROJECT/dist/index.js\n```\n\n**Claude Code (HTTP):**\n\n```bash\nclaude mcp add resend --transport http http://127.0.0.1:3000/mcp --header \"Authorization: Bearer re_xxxxxxxxx\"\n```\n\n**Cursor / Claude Desktop (stdio):**\n\n```json\n{\n  \"mcpServers\": {\n    \"resend\": {\n      \"command\": \"node\",\n      \"args\": [\"ABSOLUTE_PATH_TO_PROJECT/dist/index.js\"],\n      \"env\": {\n        \"RESEND_API_KEY\": \"re_xxxxxxxxx\"\n      }\n    }\n  }\n}\n```\n\n**Cursor (HTTP):**\n\n```json\n{\n  \"mcpServers\": {\n    \"resend\": {\n      \"url\": \"http://127.0.0.1:3000/mcp\",\n      \"headers\": {\n        \"Authorization\": \"Bearer re_xxxxxxxxx\"\n      }\n    }\n  }\n}\n```\n\n### Live Testing with an MCP Client\n\nWhen developing, you can test changes in a real MCP client session while editing code in another.\n\nThe 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).\n\n**Example with Claude Code:**\n\n1. Run the TypeScript watcher to auto-rebuild on save:\n\n   ```bash\n   pnpm tsc --watch\n   ```\n\n2. In a separate directory, create a `.mcp.json` pointing at the build output:\n\n   ```bash\n   mkdir -p /tmp/mcp-test\n   ```\n\n   ```json\n   // /tmp/mcp-test/.mcp.json\n   {\n     \"mcpServers\": {\n       \"resend-dev\": {\n         \"command\": \"node\",\n         \"args\": [\"/absolute/path/to/resend-mcp/dist/index.js\"],\n         \"env\": {\n           \"RESEND_API_KEY\": \"re_xxxxxxxxx\"\n         }\n       }\n     }\n   }\n   ```\n\n3. 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.\n\nThe 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.\n\n### Testing with MCP Inspector\n\n\u003e **Note:** Make sure you've built the project first (see [Local Development](#local-development) section above).\n\n#### Using Stdio Transport\n\n1. Set your API key:\n\n   ```bash\n   export RESEND_API_KEY=re_your_key_here\n   ```\n\n2. Start the inspector:\n\n   ```bash\n   pnpm inspector\n   ```\n\n3. In the browser (Inspector UI):\n\n   - Choose **stdio** (launch a process).\n   - **Command:** `node`\n   - **Args:** `dist/index.js` (or the full path to `dist/index.js`)\n   - **Env:** `RESEND_API_KEY=re_your_key_here` (or leave blank if you already exported it in the same terminal).\n   - Click **Connect**, then use \"List tools\" to verify the server is working.\n\n#### Using HTTP Transport\n\n1. Start the HTTP server in one terminal:\n\n   ```bash\n   node dist/index.js --http --port 3000\n   ```\n\n2. Start the inspector in another terminal:\n\n   ```bash\n   pnpm inspector\n   ```\n\n3. In the browser (Inspector UI):\n\n   - Choose **Streamable HTTP** (connect to URL).\n   - **URL:** `http://127.0.0.1:3000/mcp`\n   - Add a custom header: `Authorization: Bearer re_your_key_here` and activate the toggle.\n   - Click **Connect**, then use \"List tools\" to verify the server is working.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fresend%2Fresend-mcp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fresend%2Fresend-mcp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fresend%2Fresend-mcp/lists"}