Resend Email MCP Server

공식

에디터에서 Resend API를 사용하여 이메일을 직접 보냅니다.

문서

Resend MCP 서버

smithery badge npm version

Resend 플랫폼을 위한 MCP 서버입니다. Claude Desktop, Cursor, Claude Code와 같은 모든 MCP 클라이언트에서 직접 이메일을 보내고 받고, 연락처, 브로드캐스트, 도메인 등을 관리할 수 있습니다.

기능

  • 이메일 — 이메일 보내기, 목록 조회, 가져오기, 취소, 업데이트 및 일괄 전송. HTML, 일반 텍스트, 첨부 파일(로컬 파일, URL 또는 base64), CC/BCC, 답장 주소, 예약 발송, 태그, 주제 기반 전송을 지원합니다.
  • 수신 이메일 — 수신 이메일 목록 조회 및 읽기. 수신 이메일 첨부 파일 목록 조회 및 다운로드.
  • 연락처 — 연락처 생성, 목록 조회, 가져오기, 업데이트 및 삭제. 세그먼트 멤버십 및 주제 구독 관리. 사용자 정의 연락처 속성을 지원합니다.
  • 브로드캐스트 — 브로드캐스트 캠페인 생성, 전송, 목록 조회, 가져오기, 업데이트 및 삭제. 예약 발송, 개인화 플레이스홀더, 미리보기 텍스트를 지원합니다.
  • 템플릿 — 재사용 가능한 이메일 템플릿 생성, 목록 조회, 가져오기, 업데이트, 게시, 복제 및 삭제.
  • 비주얼 편집기 — Resend 대시보드에서 실시간으로 렌더링되는 브로드캐스트 및 템플릿 콘텐츠를 작성합니다. 작업 중인 에이전트가 편집기에 명명된 아바타로 표시됩니다.
  • 도메인 — 발신자 도메인 생성, 목록 조회, 가져오기, 업데이트, 삭제 및 인증. 추적, TLS, 발신/수신 기능을 구성합니다.
  • 세그먼트 — 수신자 세그먼트 생성, 목록 조회, 가져오기 및 삭제.
  • 주제 — 구독 주제 생성, 목록 조회, 가져오기, 업데이트 및 삭제.
  • 연락처 속성 — 사용자 정의 연락처 속성 생성, 목록 조회, 가져오기, 업데이트 및 삭제.
  • API 키 — API 키 생성, 목록 조회 및 삭제.
  • 웹훅 — 이벤트 알림을 위한 웹훅 생성, 목록 조회, 가져오기, 업데이트 및 삭제.

설정

무료 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 Settings" > "MCP" > "Add new global MCP server"를 선택하세요.

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

Claude Desktop

Claude Desktop 설정 > "Developer" 탭 > "Edit Config"를 여세요.

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

HTTP 전송

원격 또는 웹 기반 통합을 위해 HTTP를 통해 서버를 실행합니다. HTTP 모드에서는 각 클라이언트가 Authorization 헤더에 Bearer 토큰으로 Resend API 키를 전달하여 인증합니다.

서버 시작:

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

서버는 http://127.0.0.1:3000에서 수신 대기하며 Streamable HTTP를 사용하여 /mcp에서 MCP 엔드포인트를 노출합니다.

Claude Code

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

Cursor

명령 팔레트를 열고 "Cursor Settings" > "MCP" > "Add new global MCP server"를 선택하세요.

{
  "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를 통해 실행하는 대신 다른 서비스에 내장할 수 있도록 내보내집니다. 각 연결 클라이언트는 Bearer 토큰으로 전달된 자체 Resend API 키로 인증합니다.

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 키로 서버가 보호되는 리버스 프록시 또는 로드 밸런서 뒤에 배포할 때는 host0.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: stdio 대신 HTTP 전송 사용 (기본값: stdio)
  • --port: --http 사용 시 HTTP 포트 (기본값: 3000 또는 MCP_PORT 환경 변수)
  • --host: --http 사용 시 DNS 리바인딩 보호를 위한 호스트 (기본값: 127.0.0.1 또는 MCP_HOST). 프록시/로드 밸런서 뒤에서 Host 유효성 검사를 비활성화하려면 0.0.0.0로 설정하세요.
  • --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 (또는 동일한 터미널에서 이미 내보낸 경우 비워 둠).
    • 연결을 클릭한 다음 "List tools"를 사용하여 서버가 작동하는지 확인하세요.

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 그리고 토글을 활성화하세요.
    • 연결을 클릭한 다음 "List tools"를 사용하여 서버가 작동하는지 확인하세요.