Resend Email
공식에디터에서 Resend API를 사용하여 이메일을 직접 보냅니다.
Resend Email MCP(으)로 무엇을 할 수 있나요?
- 이메일 보내기 및 관리 — 어시스턴트에게 첨부 파일, 참조/숨은 참조, 예약 발송, 사용자 지정 헤더가 포함된 이메일을 보내거나 목록 조회, 가져오기, 취소, 일괄 전송을 요청하세요.
send_email을 통해 가능합니다. - 연락처 및 수신자 관리 — 연락처를 생성, 업데이트 또는 삭제하고, 세그먼트 멤버십과 주제 구독을 관리하며,
create_contact를 사용하여 CSV에서 연락처를 가져올 수 있습니다. - 브로드캐스트 작성 및 전송 — 개인화 자리 표시자와 미리 보기 텍스트가 포함된 브로드캐스트 캠페인을
create_broadcast를 통해 생성, 예약, 전송 또는 취소할 수 있습니다. - 수신 이메일 처리 — 수신된 이메일을 목록으로 확인하고 읽거나,
list_received_emails를 사용하여 수신 메시지에서 첨부 파일을 다운로드할 수 있습니다. - 템플릿 및 도메인 관리 — 변수가 포함된 이메일 템플릿을 생성, 업데이트, 게시 또는 복제하고,
create_template및verify_domain을 통해 발신 도메인을 확인하거나 구성할 수 있습니다. - 모니터링 및 자동화 —
list_logs와send_event를 사용하여 API 요청 로그를 검토하고, 웹훅을 관리하며, 연락처에 이벤트를 전송하여 자동화를 트리거할 수 있습니다.
문서
Resend MCP 서버
AI 에이전트를 Resend 플랫폼에 연결하세요. Claude, Cursor, Claude Code와 같은 모든 MCP 클라이언트에서 직접 이메일을 보내고 받고, 연락처, 브로드캐스트, 도메인 등을 관리할 수 있습니다.
Resend가 호스팅하는 원격 MCP 서버와 로컬 MCP 서버(이 패키지)를 모두 제공합니다.
원격 MCP 서버
Resend는 다음 주소에서 MCP 서버를 호스팅합니다:
https://mcp.resend.com/mcp
원격 서버(Streamable HTTP)를 지원하는 모든 MCP 클라이언트를 연결하세요. 설치할 것이 없고 로컬 프로세스를 실행할 필요가 없으므로 Claude와 같은 웹 기반 클라이언트 및 호스팅 에이전트 플랫폼에 가장 적합한 옵션입니다.
연결하면 클라이언트가 브라우저 창을 열어 Resend에 로그인하고 OAuth를 통해 액세스를 승인합니다.
Claude Code
claude mcp add --transport http resend https://mcp.resend.com/mcp
그런 다음 Claude Code에서 /mcp을(를) 실행하고 resend를 선택하여 OAuth 로그인을 완료합니다.
Claude
Claude(웹 또는 데스크톱)에서 설정 > 커넥터 > 사용자 지정 커넥터 추가를 열고 다음을 입력합니다:
https://mcp.resend.com/mcp
Cursor
명령 팔레트를 열고 "Cursor Settings" > "MCP" > "Add new global MCP server"를 선택합니다.
{
"mcpServers": {
"resend": {
"url": "https://mcp.resend.com/mcp"
}
}
}
Codex
codex mcp add resend --url https://mcp.resend.com/mcp
Copilot
VS Code에서 GitHub Copilot을 사용하려면 settings.json에 다음을 추가합니다:
{
"mcp": {
"servers": {
"resend": {
"type": "http",
"url": "https://mcp.resend.com/mcp"
}
}
}
}
Windsurf
{
"mcpServers": {
"resend": {
"serverUrl": "https://mcp.resend.com/mcp"
}
}
}
Warp
Warp 설정에서 Agents > MCP servers로 이동하고 +Add를 클릭하여 새 서버를 추가합니다.
{
"resend": {
"serverUrl": "https://mcp.resend.com/mcp"
}
}
API 키로 인증
클라이언트가 브라우저 로그인이 불가능한 환경(서버, CI, 헤드리스 에이전트)에서 실행되는 경우 OAuth 대신 Resend API 키를 Bearer 토큰으로 전달합니다.
Claude Code:
claude mcp add --transport http resend https://mcp.resend.com/mcp --header "Authorization: Bearer re_xxxxxxxxx"
JSON 구성(Cursor, Windsurf 등)에 Authorization 헤더를 추가합니다:
{
"mcpServers": {
"resend": {
"url": "https://mcp.resend.com/mcp",
"headers": {
"Authorization": "Bearer re_xxxxxxxxx"
}
}
}
}
로컬 MCP 서버
호스팅 서버는 NPM에서 resend-mcp로 제공되는 동일한 오픈소스 코드를 실행합니다. 서버를 직접 실행하려면 npx을(를) 사용하여 지원되는 모든 MCP 클라이언트에 통합할 수 있습니다. 다음이 필요합니다:
로컬 서버는 stdio(기본값)와 HTTP의 두 가지 전송 모드를 지원합니다.
아래에서 원하는 모드와 클라이언트를 선택하여 시작하세요. re_xxxxxxxxx을(를) 실제 API 키로 바꾸는 것을 잊지 마세요.
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
Codex
codex mcp add resend \
--env 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"
}
}
}
}
Copilot
VS Code에서 GitHub Copilot을 사용하려면 settings.json에 다음을 추가합니다:
{
"mcp": {
"servers": {
"resend": {
"command": "npx",
"args": ["-y", "resend-mcp"],
"env": {
"RESEND_API_KEY": "re_xxxxxxxxx"
}
}
}
}
}
Gemini CLI
{
"mcpServers": {
"resend": {
"command": "npx",
"args": ["-y", "resend-mcp"],
"env": {
"RESEND_API_KEY": "re_xxxxxxxxx"
}
}
}
}
OpenCode
opencode.json 구성에 추가:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"resend": {
"type": "local",
"command": ["npx", "-y", "resend-mcp"],
"enabled": true,
"environment": {
"RESEND_API_KEY": "re_xxxxxxxxx"
}
}
}
}
Windsurf
{
"mcpServers": {
"resend": {
"command": "npx",
"args": ["-y", "resend-mcp"],
"env": {
"RESEND_API_KEY": "re_xxxxxxxxx"
}
}
}
}
Devin
Devin에서 Settings > Connections > MCP Servers를 열고 Add a custom MCP를 클릭합니다. 전체 단계별 가이드는 Devin 가이드를 참조하세요.
{
"mcpServers": {
"resend": {
"command": "npx",
"args": ["-y", "resend-mcp"],
"env": {
"RESEND_API_KEY": "re_xxxxxxxxx",
"SENDER_EMAIL_ADDRESS": "onboarding@resend.dev"
}
}
}
}
HTTP 전송
Resend의 호스팅 원격 MCP 서버 대신 자체 터널이나 리버스 프록시 뒤에서 원격 또는 웹 기반 통합을 위해 HTTP로 서버를 실행합니다. HTTP 모드에서는 각 클라이언트가 Authorization 헤더에 Resend API 키를 Bearer 토큰으로 전달하여 인증합니다.
서버 시작:
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를 통해 실행하는 대신 다른 서비스에 임베드할 수 있도록 내보내집니다. 각 연결 클라이언트는 자체 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);
기본적으로 서버는 localhost 전용 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: 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사용 시 쉼표로 구분된Host허용 목록(또는MCP_ALLOWED_HOSTS)
환경 변수:
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 서버가 도구를 호출할 때마다 이메일 주소를 입력하도록 요청합니다.
MCP 서버 도구
Resend의 MCP 서버는 단일 통합을 통해 AI 에이전트에게 전체 Resend 플랫폼에 대한 기본 액세스를 제공합니다. 자연어로 이메일 인프라의 모든 측면을 관리할 수 있습니다.
- 이메일: 이메일 보내기, 목록 조회, 가져오기, 취소, 업데이트, 일괄 전송. HTML, 일반 텍스트, 첨부 파일(로컬 파일, URL 또는 base64), CC/BCC, 회신 주소, 예약, 태그, 사용자 지정 헤더, 주제 기반 전송 및 멱등성 키를 지원합니다.
- 수신 이메일: 인바운드 이메일 목록 조회 및 읽기. 수신 이메일 첨부 파일 목록 조회 및 다운로드.
- 템플릿: 이메일 템플릿 생성, 목록 조회, 가져오기, 업데이트, 게시, 복제, 삭제. 템플릿 콘텐츠 작성 및
{{{VARIABLE}}}자리 표시자를 지원합니다. - 연락처: 연락처 생성, 목록 조회, 가져오기, 업데이트, 삭제. 세그먼트 멤버십, 주제 구독, CSV 연락처 가져오기 관리. 사용자 지정 연락처 속성을 지원합니다.
- 브로드캐스트: 브로드캐스트 캠페인 생성, 전송, 취소, 목록 조회, 가져오기, 업데이트, 삭제. 예약, 개인화 자리 표시자 및 미리 보기 텍스트를 지원합니다.
- 자동화: 자동화 생성, 목록 조회, 가져오기, 업데이트, 삭제. 자동화의 실행 내역 검토.
- 이벤트: 연락처에 대한 자동화를 트리거하는 이벤트 전송. 이벤트 정의 생성, 업데이트, 삭제.
- 도메인: 발신자 도메인 생성, 목록 조회, 가져오기, 업데이트, 삭제, 인증. 추적, TLS, 전송/수신 기능 구성. 도메인 클레임 생성 및 인증.
- 세그먼트: 오디언스 세그먼트 생성, 목록 조회, 가져오기, 삭제.
- 억제 목록: 억제 목록 항목을 개별 또는 일괄로 목록 조회, 가져오기, 추가, 삭제. 하드 바운스와 스팸 신고는 자동으로 억제됩니다. 연락 금지 요청을 존중하려면 주소를 수동으로 추가하세요.
- 주제: 구독 주제 생성, 목록 조회, 가져오기, 업데이트, 삭제.
- 연락처 속성: 사용자 지정 연락처 속성 생성, 목록 조회, 가져오기, 업데이트, 삭제.
- API 키: API 키 생성, 목록 조회, 삭제.
- 웹훅: 이벤트 알림을 위한 웹훅 생성, 목록 조회, 가져오기, 업데이트, 삭제.
- 로그: API 요청 로그 목록 조회 및 검사(전체 요청 및 응답 본문 포함).
- 편집기: Resend 대시보드의 시각적 편집기에 연결(및 연결 해제)하고 브로드캐스트와 템플릿을 공동 작업하는 동안 초안의 콘텐츠를 읽습니다.
로컬 개발
- 이 프로젝트를 클론하고 빌드:
git clone https://github.com/resend/resend-mcp.git
pnpm install
pnpm run build
- 로컬 빌드를 사용하려면
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 예시:
-
TypeScript watcher를 실행하여 저장 시 자동 재빌드:
pnpm tsc --watch -
별도의 디렉터리에서 빌드 출력을 가리키는
.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" } } } } -
해당 디렉터리에서 Claude Code를 시작하고 MCP 도구를 사용합니다. 코드를 변경한 후 새 Claude Code 세션을 시작하여 새 빌드를 적용합니다.
동일한 원칙이 모든 MCP 클라이언트에 적용됩니다 — 테스트 환경을 개발 환경과 분리하고, dist/index.js에 절대 경로를 사용하고, 재빌드 후 MCP 서버를 다시 연결하세요.
MCP Inspector로 테스트
참고: 먼저 프로젝트를 빌드했는지 확인하세요(위의 로컬 개발 섹션 참조).
Stdio 전송 사용
-
API 키 설정:
export RESEND_API_KEY=re_your_key_here -
Inspector 시작:
pnpm inspector -
브라우저(Inspector UI)에서:
- stdio(프로세스 시작)를 선택합니다.
- Command:
node - Args:
dist/index.js(또는dist/index.js의 전체 경로) - Env:
RESEND_API_KEY=re_your_key_here(또는 같은 터미널에서 이미 내보낸 경우 비워 둡니다). - Connect를 클릭한 다음 "List tools"를 사용하여 서버가 작동하는지 확인합니다.
HTTP 전송 사용
-
한 터미널에서 HTTP 서버 시작:
node dist/index.js --http --port 3000 -
다른 터미널에서 Inspector 시작:
pnpm inspector -
브라우저(Inspector UI)에서:
- Streamable HTTP(URL 연결)를 선택합니다.
- URL:
http://127.0.0.1:3000/mcp - 사용자 지정 헤더 추가:
Authorization: Bearer re_your_key_here및 토글 활성화. - Connect를 클릭한 다음 "List tools"를 사용하여 서버가 작동하는지 확인합니다.