Skip to main content
Glama
robotic-wings

mcp-mail-server

MCP 메일 서버

NPM 버전 라이선스: MIT

언어: English | 中文

Claude, Cursor 및 기타 AI 어시스턴트와 함께 사용하는 IMAP/SMTP 이메일 작업용 Model Context Protocol 서버입니다.

기능

  • IMAP 작업: 여러 사서함에서 이메일 검색, 읽기 및 관리

  • SMTP 지원: HTML/텍스트 콘텐츠와 첨부 파일이 포함된 이메일 전송

  • 첨부 파일 관리: 첨부 파일 메타데이터 확인 및 로컬 파일로 저장

  • 보안 구성: TLS/SSL을 지원하는 환경 변수 기반 설정

  • AI 친화적: 이메일 작업을 위한 자연어 명령

  • 자동 연결 관리: 자동 IMAP/SMTP 연결 처리

  • 다중 사서함 지원: 받은 편지함, 보낸 편지함 및 사용자 지정 폴더 접근

Related MCP server: Mailbridge MCP

변경 로그

[1.2.1] - 2026-03-18

수정됨

  • 검색 조건(FROM/TO/SUBJECT/BODY/KEYWORD/SINCE)이 중첩 배열 형식을 사용하지 않아 TO 및 기타 검색에서 오류가 발생하던 문제 수정

  • search()가 조건을 추가 배열로 감싸 복합 검색 조건을 깨뜨리던 문제 수정

  • 사서함이 읽기 전용 모드로 열렸을 때 deleteMessage()가 조용히 실패하던 문제 수정

  • getRecentMessages()가 IMAP RECENT 플래그를 잘못 사용하던 문제 수정; 이제 UID 기준으로 최신 N개 메시지를 가져옴

  • getRecentMessages() / getUnseenMessages()가 이전 작업의 남은 사서함 상태에 의존하던 문제 수정

  • cleanReplySubject()가 Re: 접두사 한 겹만 제거하여 답장 안 함 감지에서 오탐(false negative)이 발생하던 문제 수정

  • 이메일 날짜가 로케일 문자열로 저장되어 플랫폼 간 new Date() 파싱이 일관되지 않던 문제 수정; ISO 8601로 변경

  • ensureIMAPConnection()이 동시 초기화를 기다리는 동안 타임아웃이 없던 문제 수정

  • saveSentMessage()가 저장 실패 시에도 항상 sentFolderSaved: true를 반환하던 문제 수정

  • handleGetMessages() / handleDeleteMessage()가 currentBox 상태에 의존하여 메시지를 찾던 문제 수정

  • text가 비어 있을 때 reply_to_email이 본문에 리터럴 "undefined"를 쓰던 문제 수정

추가됨

  • 모든 검색 도구가 INBOX로만 검색을 제한하는 inboxOnly 매개변수를 지원

개선됨

  • ensureSMTPConnection()에 IMAP과 동일하게 30초 타임아웃의 동시성 가드 추가

  • 보낸 편지함이 RFC 6154 \Sent 특수 사용 속성을 통해 자동 감지되고 결과가 캐시되어 모든 메일 제공업체와 호환

  • saveMessageToFolder() 단순화; 보낸 편지함 폴더가 없으면 저장 건너뜀

  • 검색이 slice(-limit)를 사용하여 최신 메시지를 먼저 가져와 날짜 필터링 후 빈 결과가 발생하지 않도록 수정

  • XSS 주입을 방지하기 위해 답장 이메일의 인용 콘텐츠에 HTML 이스케이프 적용

전체 버전 기록은 CHANGELOG.md를 참조하세요.


빠른 시작

  1. 설치: npm install -g mcp-mail-server

  2. 환경 변수 구성 (구성 참조)

  3. MCP 클라이언트 구성에 추가

  4. 자연어 사용: "오늘 받은 읽지 않은 이메일을 보여줘"

설치

claude_desktop_config.json에 추가:

{
  "mcpServers": {
    "mcp-mail-server": {
      "command": "npx",
      "args": ["-y", "mcp-mail-server"],
      "env": {
        "IMAP_HOST": "your-imap-server.com",
        "IMAP_PORT": "993",
        "IMAP_SECURE": "true",
        "SMTP_HOST": "your-smtp-server.com",
        "SMTP_PORT": "465",
        "SMTP_SECURE": "true",
        "EMAIL_USER": "your-email@domain.com",
        "EMAIL_PASS": "your-password"
      }
    }
  }
}

Cursor MCP 설정에 추가:

{
  "mcpServers": {
    "mcp-mail-server": {
      "command": "npx",
      "args": ["-y", "mcp-mail-server"],
      "env": {
        "IMAP_HOST": "your-imap-server.com",
        "IMAP_PORT": "993",
        "IMAP_SECURE": "true",
        "SMTP_HOST": "your-smtp-server.com",
        "SMTP_PORT": "465",
        "SMTP_SECURE": "true",
        "EMAIL_USER": "your-email@domain.com",
        "EMAIL_PASS": "your-password"
      }
    }
  }
}

claude mcp add 명령으로 추가:

claude mcp add mcp-mail-server \
  -e IMAP_HOST=your-imap-server.com \
  -e IMAP_PORT=993 \
  -e IMAP_SECURE=true \
  -e SMTP_HOST=your-smtp-server.com \
  -e SMTP_PORT=465 \
  -e SMTP_SECURE=true \
  -e EMAIL_USER=your-email@domain.com \
  -e EMAIL_PASS=your-password \
  -- npx -y mcp-mail-server

또는 .claude/settings.json에 수동으로 추가:

{
  "mcpServers": {
    "mcp-mail-server": {
      "command": "npx",
      "args": ["-y", "mcp-mail-server"],
      "env": {
        "IMAP_HOST": "your-imap-server.com",
        "IMAP_PORT": "993",
        "IMAP_SECURE": "true",
        "SMTP_HOST": "your-smtp-server.com",
        "SMTP_PORT": "465",
        "SMTP_SECURE": "true",
        "EMAIL_USER": "your-email@domain.com",
        "EMAIL_PASS": "your-password"
      }
    }
  }
}

프로젝트 루트의 codex.json에 추가:

{
  "mcpServers": {
    "mcp-mail-server": {
      "command": "npx",
      "args": ["-y", "mcp-mail-server"],
      "env": {
        "IMAP_HOST": "your-imap-server.com",
        "IMAP_PORT": "993",
        "IMAP_SECURE": "true",
        "SMTP_HOST": "your-smtp-server.com",
        "SMTP_PORT": "465",
        "SMTP_SECURE": "true",
        "EMAIL_USER": "your-email@domain.com",
        "EMAIL_PASS": "your-password"
      }
    }
  }
}

다른 MCP 클라이언트도 유사하게 구성할 수 있습니다. 핵심 구성은 다음과 같습니다:

{
  "mcpServers": {
    "mcp-mail-server": {
      "command": "npx",
      "args": ["-y", "mcp-mail-server"],
      "env": {
        "IMAP_HOST": "your-imap-server.com",
        "IMAP_PORT": "993",
        "IMAP_SECURE": "true",
        "SMTP_HOST": "your-smtp-server.com",
        "SMTP_PORT": "465",
        "SMTP_SECURE": "true",
        "EMAIL_USER": "your-email@domain.com",
        "EMAIL_PASS": "your-password"
      }
    }
  }
}

적절한 구성 파일 위치는 각 클라이언트의 문서를 참조하세요.

사용 가능한 도구

도구

설명

connect_all

IMAP 및 SMTP 서버 모두에 연결

get_connection_status

연결 상태 및 서버 정보 확인

disconnect_all

모든 서버에서 연결 해제

open_mailbox

특정 사서함/폴더 열기

list_mailboxes

사용 가능한 메일 폴더 나열

get_message_count

현재 사서함의 전체 메시지 수 가져오기

get_unseen_messages

모든 읽지 않은 이메일 가져오기

get_recent_messages

최근 이메일 가져오기

search_by_sender

특정 발신자의 이메일 찾기

search_by_subject

제목 키워드로 검색

search_by_recipient

특정 수신자에게 보낸 이메일 찾기

search_by_body

메시지 본문 내용 검색

search_since_date

특정 날짜 이후의 이메일 찾기

search_unread_from_sender

특정 발신자의 읽지 않은 이메일 찾기

search_unreplied_from_sender

특정 발신자의 답장하지 않은 이메일 찾기

search_with_keyword

키워드/플래그로 이메일 검색

search_all_messages

선택적 날짜 범위와 제한으로 모든 메시지 검색

get_message

UID로 이메일 가져오기

get_messages

여러 이메일 가져오기

delete_message

UID로 이메일 삭제

send_email

SMTP를 통해 이메일 전송(선택적 첨부 파일 포함)

reply_to_email

특정 이메일에 답장

get_attachments

이메일의 첨부 파일 메타데이터 가져오기

save_attachment

첨부 파일을 다운로드하여 로컬 파일로 저장

연결 관리

  • connect_all: 매개변수 불필요

  • get_connection_status: 매개변수 불필요

  • disconnect_all: 매개변수 불필요

사서함 작업

  • open_mailbox: mailboxName (문자열, 기본값: "INBOX"), readOnly (불리언)

  • list_mailboxes: 매개변수 불필요

검색 작업

  • search_by_sender: sender (문자열, 이메일 주소), startDate (문자열, 선택), endDate (문자열, 선택)

  • search_by_subject: subject (문자열, 키워드), startDate (문자열, 선택), endDate (문자열, 선택)

  • search_by_recipient: recipient (문자열, 이메일 주소), startDate (문자열, 선택), endDate (문자열, 선택)

  • search_by_body: text (문자열, 검색 텍스트), startDate (문자열, 선택), endDate (문자열, 선택)

  • search_since_date: date (문자열, 날짜 형식)

  • search_unread_from_sender: sender (문자열, 이메일 주소), startDate (문자열, 선택), endDate (문자열, 선택)

  • search_unreplied_from_sender: sender (문자열, 이메일 주소), startDate (문자열, 선택), endDate (문자열, 선택), limit (숫자, 선택)

  • search_with_keyword: keyword (문자열, 키워드), startDate (문자열, 선택), endDate (문자열, 선택)

  • search_all_messages: startDate (문자열, 선택), endDate (문자열, 선택), limit (숫자, 선택, 기본값: 50)

메시지 작업

  • get_message_count: 매개변수 불필요

  • get_unseen_messages: 매개변수 불필요

  • get_recent_messages: 매개변수 불필요

  • get_message: uid (숫자), markSeen (불리언, 선택)

  • get_messages: uids (배열), markSeen (불리언, 선택)

  • delete_message: uid (숫자)

이메일 전송

  • send_email: to (문자열), subject (문자열), text (문자열, 선택), html (문자열, 선택), cc (문자열, 선택), bcc (문자열, 선택), attachments (문자열[], 선택, 절대 파일 경로)

  • reply_to_email: originalUid (숫자), text (문자열), html (문자열, 선택), replyToAll (불리언, 선택), includeOriginal (불리언, 선택)

첨부 파일 작업

  • get_attachments: uid (숫자) — 메타데이터 반환: filename, contentType, size, index

  • save_attachment: uid (숫자), savePath (문자열, 절대 경로), attachmentIndex (숫자, 선택, 0부터 시작), returnBase64 (불리언, 선택, 기본값: false)

사용 예시

AI 어시스턴트와 함께 자연어 명령을 사용하세요:

기본 작업

  • "내 이메일 서버에 연결해줘"

  • "읽지 않은 모든 이메일을 보여줘"

  • "boss@company.com에서 온 이메일을 검색해줘"

  • "회의에 대해 team@company.com에게 이메일을 보내줘"

  • "UID 123 이메일에 답장해줘"

고급 검색

  • "지난주에 제목에 'urgent'가 있는 이메일을 찾아줘"

  • "boss@company.com에서 온 답장하지 않은 이메일을 보여줘"

  • "team@company.com에게 보낸 이메일을 검색해줘"

  • "Sales 폴더에서 모든 이메일을 가져와줘"

  • "boss@company.com에서 온 읽지 않은 이메일을 보여줘"

  • "지난 7일 동안의 모든 이메일을 보여줘"

  • "모든 메시지를 나열해줘, 20개로 제한"

이메일 관리

  • "UID 123 이메일을 삭제해줘"

  • "최근 이메일을 읽음으로 표시해줘"

  • "내 모든 이메일 폴더를 나열해줘"

첨부 파일 작업

  • "UID 456 이메일의 첨부 파일을 보여줘"

  • "UID 456 이메일의 모든 첨부 파일을 D:/Downloads에 저장해줘"

  • "UID 789 이메일의 첫 번째 첨부 파일을 다운로드해줘"

  • "첨부 파일 D:/report.pdf와 함께 team@company.com에게 이메일을 보내줘"

구성

환경 변수

⚠️ 모든 변수는 필수입니다

변수

설명

예시

IMAP_HOST

IMAP 서버 주소

imap.gmail.com

IMAP_PORT

IMAP 포트 번호

993

IMAP_SECURE

TLS 활성화

true

SMTP_HOST

SMTP 서버 주소

smtp.gmail.com

SMTP_PORT

SMTP 포트 번호

465

SMTP_SECURE

SSL 활성화

true

EMAIL_USER

이메일 사용자 이름

your-email@gmail.com

EMAIL_PASS

이메일 비밀번호/앱 비밀번호

your-app-password

선택 변수

변수

설명

기본값

OMIT_IMAGES

true로 설정하면 메시지 본문에서 인라인 base64 이미지(data:image/...;base64,...)를 제거한 후 반환합니다. 이미지가 많은 이메일에서 응답 크기/토큰 사용량을 크게 줄여줍니다. <img> 태그는 유지되며 소스는 [image omitted]로 대체됩니다. 첨부 파일 메타데이터와 외부 이미지 URL은 영향을 받지 않습니다.

false

전송 모드 (stdio / HTTP)

기본적으로 서버는 stdio를 통해 실행됩니다(로컬 클라이언트용 표준 MCP 전송 방식). 선택적으로 HTTPS를 지원하는 Streamable HTTP 서버로도 실행할 수 있습니다.

변수

설명

기본값

MCP_TRANSPORT

stdio 또는 http

stdio

MCP_HTTP_HOST

바인딩할 호스트 (HTTP 모드)

127.0.0.1

MCP_HTTP_PORT

수신 대기할 포트 (HTTP 모드)

8443

MCP_TLS_CERT

TLS 인증서 경로 (PEM)

certs/localhost-cert.pem

MCP_TLS_KEY

TLS 개인 키 경로 (PEM)

certs/localhost-key.pem

인증서와 키가 발견되면 서버는 HTTPS로 실행되고, 그렇지 않으면 경고와 함께 일반 텍스트 HTTP로 전환됩니다.

mkcert로 로컬에서 신뢰할 수 있는 인증서를 생성하세요:

mkcert -install   # one-time: install the local CA
mkcert -cert-file certs/localhost-cert.pem -key-file certs/localhost-key.pem localhost 127.0.0.1 ::1

HTTP 모드로 실행:

MCP_TRANSPORT=http MCP_HTTP_PORT=8443 npm start
# → MCP endpoint:  https://localhost:8443/mcp
# → Health check:  https://localhost:8443/health

MCP 엔드포인트는 /mcp에서 제공되며, Streamable HTTP 사양에 따라 mcp-session-id 헤더를 통한 세션 관리와 SSE 스트리밍을 지원합니다.

일반 이메일 제공업체

IMAP_HOST=imap.gmail.com
IMAP_PORT=993
IMAP_SECURE=true
SMTP_HOST=smtp.gmail.com
SMTP_PORT=465
SMTP_SECURE=true
EMAIL_USER=your-email@gmail.com
EMAIL_PASS=your-app-password

참고: 일반 비밀번호 대신 앱 비밀번호를 사용하세요.

IMAP_HOST=outlook.office365.com
IMAP_PORT=993
IMAP_SECURE=true
SMTP_HOST=smtp.office365.com
SMTP_PORT=587
SMTP_SECURE=true
EMAIL_USER=your-email@outlook.com
EMAIL_PASS=your-password

보안 참고 사항

  • 앱 비밀번호 사용: 가능한 경우 2FA를 활성화하고 앱 전용 비밀번호를 사용하세요.

  • TLS/SSL 필수: 항상 보안 연결을 사용하세요 (IMAP_SECURE=true, SMTP_SECURE=true)

  • 환경 변수: 설정 파일에 자격 증명을 하드코딩하지 마세요.

개발

  1. 저장소 클론:

    git clone https://github.com/yunfeizhu/mcp-mail-server.git
    cd mcp-mail-server
  2. 의존성 설치:

    npm install
  3. 프로젝트 빌드:

    npm run build
  4. 환경 변수 설정:

    export IMAP_HOST=your-imap-server.com
    export IMAP_PORT=993
    export IMAP_SECURE=true
    export SMTP_HOST=your-smtp-server.com
    export SMTP_PORT=465
    export SMTP_SECURE=true
    export EMAIL_USER=your-email@domain.com
    export EMAIL_PASS=your-password
  5. 서버 실행:

    npm start

기여

기여는 언제나 환영합니다! 자유롭게 Pull Request를 제출해 주세요.

라이선스

MIT 라이선스 - 자세한 내용은 LICENSE 파일을 참조하세요.


패키지 정보:

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to read, search, compose, and send emails by connecting to any IMAP/SMTP provider. It supports comprehensive mailbox management, including draft handling and message deletion, directly through natural language.
    10
    154 npm
    11
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Connects AI assistants to email accounts via IMAP/SMTP, enabling reading, searching, sending, and organizing emails with features like smart drafts, scheduling, and attachment handling.
    199 npm
    2
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to interact with email accounts via IMAP and SMTP, supporting mailbox listing, email search, retrieval, sending, and management.
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    Enables AI assistants to send, read, and manage emails via SMTP and IMAP, with support for attachments, threads, and mailbox organization.
    16
    81 npm
    1
    MIT