Resend Email MCP Server

官方

直接從編輯器使用 Resend API 發送電子郵件。

文件

Resend MCP 伺服器

smithery badge npm version

一個用於 Resend 平台的 MCP 伺服器。可直接從任何 MCP 客戶端(如 Claude Desktop、Cursor 或 Claude Code)發送和接收電子郵件、管理聯絡人、廣播、網域等。

功能

  • 電子郵件 — 發送、列出、取得、取消、更新及批次發送電子郵件。支援 HTML、純文字、附件(本機檔案、URL 或 base64)、副本/密件副本、回覆地址、排程、標籤及主題式發送。
  • 已接收郵件 — 列出並讀取收到的郵件。列出並下載已接收郵件的附件。
  • 聯絡人 — 建立、列出、取得、更新及移除聯絡人。管理區隔成員資格與主題訂閱。支援自訂聯絡人屬性。
  • 廣播 — 建立、發送、列出、取得、更新及移除廣播活動。支援排程、個人化佔位符及預覽文字。
  • 範本 — 建立、列出、取得、更新、發佈、複製及移除可重複使用的電子郵件範本。
  • 視覺化編輯器 — 撰寫廣播與範本內容,並在 Resend 儀表板中即時呈現。代理程式在工作時會以具名頭像顯示於編輯器中。
  • 網域 — 建立、列出、取得、更新、移除及驗證寄件者網域。設定追蹤、TLS 及發送/接收功能。
  • 區隔 — 建立、列出、取得及移除目標對象區隔。
  • 主題 — 建立、列出、取得、更新及移除訂閱主題。
  • 聯絡人屬性 — 建立、列出、取得、更新及移除自訂聯絡人屬性。
  • API 金鑰 — 建立、列出及移除 API 金鑰。
  • Webhook — 建立、列出、取得、更新及移除用於事件通知的 Webhook。

設定

建立免費的 Resend 帳戶並建立 API 金鑰。若要發送郵件至非您本人的地址,您需要驗證您的網域

使用方式

伺服器支援兩種傳輸模式:stdio(預設)與 HTTP

Stdio 傳輸(預設)

快速設定

為所有偵測到/選取的代理程式與編輯器安裝:

npx add-mcp resend-mcp --name resend --env "RESEND_API_KEY=re_xxxxxxxxx"

Claude Code

claude mcp add resend -e RESEND_API_KEY=re_xxxxxxxxx -- npx -y resend-mcp

Cursor

開啟指令面板,選擇「Cursor 設定」>「MCP」>「新增全域 MCP 伺服器」。

{
  "mcpServers": {
    "resend": {
      "command": "npx",
      "args": ["-y", "resend-mcp"],
      "env": {
        "RESEND_API_KEY": "re_xxxxxxxxx"
      }
    }
  }
}

Claude Desktop

開啟 Claude Desktop 設定 >「開發者」分頁 >「編輯設定」。

{
  "mcpServers": {
    "resend": {
      "command": "npx",
      "args": ["-y", "resend-mcp"],
      "env": {
        "RESEND_API_KEY": "re_xxxxxxxxx"
      }
    }
  }
}

HTTP 傳輸

透過 HTTP 執行伺服器,用於遠端或網頁整合。在 HTTP 模式下,每個客戶端透過在 Authorization 標頭中傳遞其 Resend API 金鑰作為 Bearer 權杖來進行驗證。

啟動伺服器:

npx -y resend-mcp --http --port 3000

伺服器將監聽 http://127.0.0.1:3000,並在 /mcp 使用 Streamable HTTP 公開 MCP 端點。

Claude Code

claude mcp add resend --transport http http://127.0.0.1:3000/mcp --header "Authorization: Bearer re_xxxxxxxxx"

Cursor

開啟指令面板,選擇「Cursor 設定」>「MCP」>「新增全域 MCP 伺服器」。

{
  "mcpServers": {
    "resend": {
      "url": "http://127.0.0.1:3000/mcp",
      "headers": {
        "Authorization": "Bearer re_xxxxxxxxx"
      }
    }
  }
}

您也可以透過 MCP_PORT 環境變數設定連接埠:

MCP_PORT=3000 npx -y resend-mcp --http

作為函式庫使用

HTTP 傳輸也被匯出,因此可以嵌入到其他服務中,而非透過 CLI 執行。每個連線的客戶端使用其自身的 Resend API 金鑰作為 Bearer 權杖進行驗證。

import { runHttp } from 'resend-mcp/http';

// Options are optional — pass `senderEmailAddress` / `replierEmailAddresses`
// to set defaults. Binds the port and returns the Node http.Server, exposing
// the MCP endpoint at POST/GET/DELETE /mcp and a GET /health check.
const server = await runHttp({}, 3000);

預設情況下,伺服器會套用僅限本機的 Host 驗證(DNS 重新綁定保護)。當部署在反向代理或負載平衡器後方時——伺服器受到每個請求的 Bearer API 金鑰保護——請將 host 設為 0.0.0.0,這樣代理轉發的 Host 和負載平衡器的健康檢查就不會因 403 Invalid Host 而被拒絕:

const server = await runHttp({}, 3000, { host: '0.0.0.0' });
// or pin specific hostnames instead of disabling validation:
const server = await runHttp({}, 3000, { allowedHosts: ['mcp.example.com'] });

透過 CLI,這對應到 --host / --allowed-hosts(或 MCP_HOST / MCP_ALLOWED_HOSTS)。

選項

您可以傳遞額外的引數來設定伺服器:

  • --key:您的 Resend API 金鑰(僅限 stdio 模式;HTTP 模式使用來自客戶端的 Bearer 權杖)
  • --sender:來自已驗證網域的預設寄件者電子郵件地址
  • --reply-to:預設回覆地址(可多次指定)
  • --http:使用 HTTP 傳輸而非 stdio(預設:stdio)
  • --port:使用 --http 時的 HTTP 連接埠(預設:3000,或 MCP_PORT 環境變數)
  • --host:使用 --http 時用於 DNS 重新綁定保護的主機(預設:127.0.0.1,或 MCP_HOST)。設為 0.0.0.0 以在代理/負載平衡器後方停用 Host 驗證。
  • --allowed-hosts:使用 --http(或 MCP_ALLOWED_HOSTS)時,以逗號分隔的 Host 允許清單

環境變數:

  • RESEND_API_KEY:您的 Resend API 金鑰(stdio 必需,HTTP 可選,因為客戶端透過 Bearer 權杖傳遞)
  • SENDER_EMAIL_ADDRESS:來自已驗證網域的預設寄件者電子郵件地址(可選)
  • REPLY_TO_EMAIL_ADDRESSES:以逗號分隔的回覆地址(可選)
  • MCP_PORT:使用 --http 時的 HTTP 連接埠(可選)
  • MCP_HOST:使用 --http 時用於 DNS 重新綁定保護的主機(可選)
  • MCP_ALLOWED_HOSTS:使用 --http 時,以逗號分隔的 Host 允許清單(可選)

[!NOTE] 如果您未提供寄件者電子郵件地址,MCP 伺服器會在您每次呼叫工具時要求您提供一個。

本機開發

  1. 複製此專案並建置:
git clone https://github.com/resend/resend-mcp.git
pnpm install
pnpm run build
  1. 若要使用本機建置,請將 npx 指令替換為本機建置的路徑:

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"
      }
    }
  }
}

使用 MCP 客戶端進行即時測試

開發時,您可以在編輯程式碼的同時,在另一個真實的 MCP 客戶端工作階段中測試變更。

概念:執行 tsc --watch 以持續重新建置 dist/,並將另一個 MCP 客戶端指向來自不同目錄的已建置 dist/index.js。當您想要套用程式碼變更時,重新啟動 MCP 客戶端工作階段(MCP 伺服器是長時間執行的 stdio 程序,不會熱重載)。

以 Claude Code 為例:

  1. 執行 TypeScript 監視器以在儲存時自動重新建置:

    pnpm tsc --watch
    
  2. 在另一個目錄中,建立一個指向建置輸出的 .mcp.json

    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. 從該目錄啟動 Claude Code 並使用 MCP 工具。進行程式碼變更後,啟動新的 Claude Code 工作階段以套用新的建置。

相同的原則適用於任何 MCP 客戶端——將測試環境與開發環境分開,使用 dist/index.js 的絕對路徑,並在重新建置後重新連線 MCP 伺服器。

使用 MCP Inspector 進行測試

注意: 請確保您已先建置專案(請參閱上方本機開發章節)。

使用 Stdio 傳輸

  1. 設定您的 API 金鑰:

    export RESEND_API_KEY=re_your_key_here
    
  2. 啟動 Inspector:

    pnpm inspector
    
  3. 在瀏覽器(Inspector UI)中:

    • 選擇 stdio(啟動一個程序)。
    • 指令: node
    • 引數: dist/index.js(或 dist/index.js 的完整路徑)
    • 環境變數: RESEND_API_KEY=re_your_key_here(若您已在同一個終端機中匯出,則留空)。
    • 點擊 連線,然後使用「列出工具」來驗證伺服器是否正常運作。

使用 HTTP 傳輸

  1. 在一個終端機中啟動 HTTP 伺服器:

    node dist/index.js --http --port 3000
    
  2. 在另一個終端機中啟動 Inspector:

    pnpm inspector
    
  3. 在瀏覽器(Inspector UI)中:

    • 選擇 Streamable HTTP(連線至 URL)。
    • URL: http://127.0.0.1:3000/mcp
    • 新增自訂標頭:Authorization: Bearer re_your_key_here 並啟用切換開關。
    • 點擊 連線,然後使用「列出工具」來驗證伺服器是否正常運作。