프로토타입 · 미리 보기: 공식 레지스트리의 모든 서버를 담고 있으며 30분마다 동기화해요. 리뷰와 계정 기능은 다음 단계에서 열려요.
PopNx MCPAI를 쓰는 사람을 위한 MCP 서버 · 쉬운 말로 설명해요

emperor-mail

제작자: yarenty버전 0.1.3i★ –i내 컴퓨터에서 실행
레지스트리 이름io.github.yarenty/emperor-mail

설치

개요

제작자가 쓴 설명(영어 원문)

Email over IMAP and SMTP: search and read messages and attachments; draft and send when switched on

PopNx MCP의 세 기둥

이 세 가지는 절대 하나의 점수로 합치지 않아요. 의견, 측정, 인기는 서로 다른 것이니까요.

할 수 있는 일

이 서버는 아직 쉬운 말로 된 요약을 쓰지 못했어요. 아래는 레지스트리에서 읽어 온 사실이에요.

  • 연결 방식: 내 컴퓨터에서 실행
  • 전송 방식: stdio
  • 카테고리: 채팅 및 이메일
  • 입력해야 할 값: MAIL_USER, MAIL_PASSWORD, MAIL_OAUTH_TOKEN, IMAP_HOST

설치

쓰고 있는 AI 앱을 고른 다음 설정을 복사하세요.

설치하기 전에

  • 기본 점검: 1개 중 1개 통과
  • 내 컴퓨터에서 내 사용자 계정의 권한(파일, 네트워크, 앱)으로 실행돼요.
  • 직접 입력할 값: MAIL_USER, MAIL_PASSWORD, MAIL_OAUTH_TOKEN, MAIL_FROM, IMAP_HOST, IMAP_PORT, IMAP_SECURITY, SMTP_HOST, SMTP_PORT, SMTP_SECURITY, MAIL_WRITABLE, MAIL_ALLOW_SEND, MAIL_SEND_ALLOW, MAIL_FROM_ALLOW

비밀로 표시된 값은 내 계정의 열쇠예요. 절대 다른 사람과 공유하거나 채팅에 붙여 넣지 마세요.

제작자가 레지스트리에 설치 정보를 올리지 않았어요. 아래 제작자의 README를 확인하세요.

할 수 있는 일

내 컴퓨터에서 실행돼요. 설치하면 AI 앱에 도구 목록이 나타나요.

기본 점검i

누구나 볼 수 있는 정보를 점검했고, 코드는 읽지 않았어요. 해당하지 않는 항목은 개수에서 뺐어요. · 2026년 11월 7일 점검

  • ✓ 통과

    제작자와 저장소 일치

    레지스트리 이름이 GitHub 계정 yarenty 기준으로 확인되었고, 이 계정이 저장소를 소유하고 있어요

  • … 아직 점검 안 함

    계속 관리되고 있음

    아직 GitHub에서 이 저장소를 읽어 오지 않았어요

  • … 아직 점검 안 함

    라이선스 있음

    아직 GitHub에서 이 저장소를 읽어 오지 않았어요

  • – 해당 없음

    엔드포인트 응답

    내 컴퓨터에서 실행되는 서버라 인터넷 엔드포인트가 없어요

  • – 해당 없음

    OAuth로 로그인

    내 컴퓨터에서 실행되며, 대신 로컬 설정을 사용해요

  • … 아직 점검 안 함

    도구 설명에 숨겨진 지시 없음

    내 컴퓨터에서 실행돼요. 도구 목록은 인터넷 엔드포인트가 있는 서버에서만 읽을 수 있어요

채팅 및 이메일 카테고리의 다른 서버와 비교i

  • 이 카테고리의 다른 서버 1782개 중 0%보다 스타가 많아요
  • 이 카테고리의 다른 서버 1782개 중 84%보다 최근에 레지스트리에 공개됐어요
  • 기본 점검 결과가 이 카테고리의 다른 서버 1782개 중 100%와 같거나 더 좋아요

레지스트리에서 이 카테고리의 활성 서버 전체와 비교했어요. 스타는 게시자가 저장소를 소유한 경우에만 세요.

자주 묻는 질문

emperor-mail, 안전한가요?

해당하는 기본 점검 1개 중 1개를 통과했어요. 코드는 읽지 않았어요. 키나 토큰을 넣기 전에 서버가 어떤 권한을 요구하는지 확인하고, 꼭 필요한 권한만 있는 키를 쓰세요.

어떤 키나 코드가 필요한가요?

입력해야 할 값: MAIL_USER, MAIL_PASSWORD, MAIL_OAUTH_TOKEN, IMAP_HOST

내 컴퓨터에서 실행되나요, 클라우드에서 실행되나요?

내 컴퓨터에서 실행돼요. AI 앱이 필요할 때 실행하고, 데이터는 제작자의 서버를 거치지 않아요(서버 자체가 온라인 서비스를 호출하는 경우는 제외).

아직 관리되고 있나요?

GitHub 저장소는 마지막으로 – 변경됐고, 최신 버전(0.1.3)은 4일 전 레지스트리에 올라왔어요.

어떤 앱에서 쓸 수 있나요?

Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요. 내 컴퓨터에 Rust도 있어야 해요.

대신 쓸 수 있는 건 뭐가 있나요?

같은 카테고리에는: Vexa, emailmd, MCP WhatsApp Cloud

대안

같은 카테고리에서 다른 제작자가 만든 서버예요. 스타 순으로 정렬했어요.

카드 보는 법:★ GitHub 스타i세 기둥: 리뷰 · 점검 · 사용 정도i업데이트 = 최신 버전을 레지스트리에 공개한 날i

Vexa

제작자: Vexa-ai

Meeting bot and transcripts for Google Meet, Teams and Zoom. Live or after, speakers labelled.

클라우드에서 실행★ 2,949Apache-2.02개월 전 업데이트
설치

emailmd

제작자: anypost

Render markdown into email-safe HTML, lint drafts for deliverability problems, and preview emails.

컴퓨터 또는 클라우드★ 1,385MIT31일 전 업데이트
설치

MCP WhatsApp Cloud

제작자: codespar

MCP server for WhatsApp Cloud API (Meta) — messages, media, and templates via Graph API

내 컴퓨터에서 실행★ 277MIT5개월 전 업데이트
설치

제작자의 README

README 열기

제작자의 저장소에서 쓰인 그대로 가져왔어요. PopNx MCP가 검토하거나 보증한 내용이 아니에요. HTML, 이미지, 스크립트는 제거했어요. 링크를 누르면 이 사이트를 벗어나요.

emperor-mail

Your mailbox as MCP tools: search and read by default; draft and send only when you switch them on.

emperor-mail is an MCP server that reads and writes email over IMAP and SMTP, so an agent can find a message, read it and its attachments (PDF, Word, Excel and OpenDocument spreadsheets included), and draft a reply for you to send.

  • Built on emperor-mcp: stateless Streamable HTTP, framed tool output, forwarded credentials, compact tool definitions (Emperor Profile P1.1).
  • Two ways to run: one mailbox (credentials in the environment, stdio or HTTP) or a shared server (each request brings its own credentials in headers; nothing is stored).
  • Read-only by default. Started with no switch, the server lists only its four reading tools. --writable adds draft; --allow-send adds send (and draft), and even then send writes only to the recipients you list. Sent mail is copied to your Sent folder.
  • Markdown bodies go out as text/plain plus rendered text/html.
  • Password, app password or OAuth 2.0 (XOAUTH2, for Gmail and Microsoft 365).
  • Single binary, pure Rust: IMAP via async-imap, parsing via mail-parser, SMTP via lettre, PDF text via lopdf, spreadsheets via calamine, Markdown via pulldown-cmark, TLS via rustls and the operating system's trust store.

Install

Prebuilt binaries (macOS arm64/x86_64, Linux x86_64, Windows x86_64) are attached to GitHub releases. From source:

cargo install emperor-mail

Or as a container (stdio, one mailbox from the environment):

docker build -t emperor-mail https://github.com/yarenty/emperor-mail.git

docker run -i --rm -e MAIL_USER -e MAIL_PASSWORD -e IMAP_HOST -e SMTP_HOST emperor-mail

The image runs emperor-mail serve --stdio, so writing is switched on with variables rather than flags: add -e MAIL_WRITABLE=true for draft, or -e MAIL_ALLOW_SEND=true -e MAIL_SEND_ALLOW=@example.org for draft and send to that domain (see Flags).

Run for one mailbox

Credentials come from the environment. Use an app password, never your account password (see Provider notes).

export MAIL_USER="you@example.com"

export MAIL_PASSWORD=" " export IMAP_HOST="imap.example.com" # port 993, implicit TLS by default export SMTP_HOST="smtp.example.com" # only needed for send; port 465 by default

emperor-mail doctor # check everything before you connect a client emperor-mail serve --stdio # read-only, for desktop clients that spawn the server emperor-mail serve --stdio --writable # also draft replies into the Drafts folder emperor-mail serve # or Streamable HTTP on 127.0.0.1:8033/mcp

VariableMeaningDefault
MAIL_USERLogin name—
MAIL_PASSWORDPassword or app password (never printed, never logged)—
MAIL_OAUTH_TOKENOAuth 2.0 access token instead of a password (see OAuth)—
MAIL_FROMFrom address when the login name is not an addressthe login name
IMAP_HOST / IMAP_PORTIMAP serverport 993 (143 with starttls)
IMAP_SECURITYtls, starttls or plaintls, or starttls on port 143
SMTP_HOST / SMTP_PORTSMTP serverport 465 (587 with starttls)
SMTP_SECURITYtls, starttls or plaintls, or starttls on ports 587 and 25
MAIL_WRITABLESame as --writable: true, 1, yes or on list draftoff (unset, empty, false, 0, no, off)
MAIL_ALLOW_SENDSame as --allow-send: true, 1, yes or on list send and draftoff (unset, empty, false, 0, no, off)
MAIL_SEND_ALLOWSame as --send-allow, comma-separatednone
MAIL_FROM_ALLOWSame as --from-allow, comma-separatedany

plain (no encryption) is accepted only from the environment and only for a loopback host, such as a local mail bridge. Certificates are always verified against the operating system's trust store.

Flags

serve and doctor take the same flags.

FlagMeaning
--stdioSpeak MCP over stdin/stdout (one mailbox from the environment)
--bind HTTP listen address (default 127.0.0.1:8033)
--writableList draft (saving to Drafts changes the mailbox). Default: read-only, four tools
--allow-sendList send, and draft with it (implies --writable). Without it send is not listed
--send-allow Recipients send may write to: ann@example.org or @example.org; repeat or comma-separate. With --allow-send and no pattern, every recipient is refused
--from-allow From addresses send and draft may use (same syntax). Unset: any
--no-sent-copyDo not copy sent mail to the Sent folder (for providers that file it themselves)
--pin-serversAlways use the environment's IMAP/SMTP servers; ignore server headers

The write switches can also come from the environment, for containers and catalogs that cannot pass flags: MAIL_WRITABLE for --writable and MAIL_ALLOW_SEND for --allow-send (unset, empty, false, 0, no or off mean off; true, 1, yes or on mean on; anything else stops the server at start-up), MAIL_SEND_ALLOW for --send-allow and MAIL_FROM_ALLOW for --from-allow (comma-separated; empty means no pattern). A flag on the command line wins over its variable. The safety rule is the same either way: with sending on and no recipient pattern, every recipient is refused, and patterns without sending on are a start-up error.

Started withTools listed
no switchlist_folders, search, read_message, read_attachment (read-only)
--writable / MAIL_WRITABLEthe four, plus draft
--allow-send / MAIL_ALLOW_SENDthe four, plus draft and send

Run as a shared server

On a shared server every request carries the caller's own credentials in headers. They are used for that one tool call and dropped with the request: never stored, never logged.

emperor-mail serve --bind 127.0.0.1:8033              # read-only

emperor-mail serve --bind 127.0.0.1:8033 --writable # callers may also save drafts

HeaderSame asNotes
X-Mail-UserMAIL_USERLogin name
X-Mail-PasswordMAIL_PASSWORDSecret; with X-Mail-User
X-Mail-Oauth-TokenMAIL_OAUTH_TOKENSecret; instead of the password (XOAUTH2)
X-Mail-FromMAIL_FROMChecked against --from-allow
X-Mail-Imap-Host, X-Mail-Imap-Port, X-Mail-Imap-SecurityIMAP_*tls or starttls only
X-Mail-Smtp-Host, X-Mail-Smtp-Port, X-Mail-Smtp-SecuritySMTP_*tls or starttls only

These ten names are the only headers the server captures.

Rules:

  • The login is one source. If a request carries any of X-Mail-User, X-Mail-Password or X-Mail-Oauth-Token, the whole login comes from headers: the user plus exactly one of password and token. A header user is never combined with a secret from the environment.
  • Servers follow the login. A caller with its own login may name its own servers in X-Mail-Imap-* / X-Mail-Smtp-*; what it leaves out falls back to the environment (IMAP_HOST, SMTP_HOST, ...). With a login from the environment, server headers are ignored, so the operator's password never goes to a host a caller picked.
  • No plaintext from headers. A server named in a header is reached over TLS or STARTTLS only; plain is refused.
  • `--pin-servers` makes the environment's servers win for every caller (a company server that should only ever reach imap.corp.example).
  • When the mail server rejects the credentials, the HTTP response is `401` with a JSON-RPC error (code -32040), so a client can ask the user to sign in again.
  • Put the server behind an ingress that terminates TLS and authenticates callers; the headers carry passwords. Without one, keep it on 127.0.0.1.

Provider notes

  • Gmail: turn on 2-Step Verification, then create an app password at https://myaccount.google.com/apppasswords. IMAP_HOST=imap.gmail.com, SMTP_HOST=smtp.gmail.com. IMAP must be enabled in Gmail settings for some accounts. Gmail files sent mail in "[Gmail]/Sent Mail" by itself: run with --no-sent-copy to avoid a second copy.
  • Fastmail: create an app password under Settings → Privacy & Security → Integrations → App passwords, with IMAP and SMTP access. IMAP_HOST=imap.fastmail.com, SMTP_HOST=smtp.fastmail.com.
  • Outlook / Microsoft 365 accounts require OAuth: see below. Exchange Online files sent mail by itself; use --no-sent-copy.
OAuth (Gmail, Microsoft 365)

emperor-mail speaks SASL XOAUTH2 on IMAP and SMTP. It does not run an OAuth flow and holds no client secret: the client obtains and refreshes the access token and passes it per request in X-Mail-Oauth-Token (or MAIL_OAUTH_TOKEN for stdio), with the mailbox address in X-Mail-User / MAIL_USER. The token is forwarded for that one call and never stored or logged. An expired token gives a 401, the cue for the client to refresh it.

  • Gmail: scope https://mail.google.com/; IMAP_HOST=imap.gmail.com, SMTP_HOST=smtp.gmail.com.
  • Microsoft 365: scopes https://outlook.office.com/IMAP.AccessAsUser.All and https://outlook.office.com/SMTP.Send (plus offline_access for refresh); IMAP_HOST=outlook.office365.com, SMTP_HOST=smtp.office365.com, SMTP_PORT=587. SMTP AUTH must be enabled for the mailbox.

Other servers: if yours offers only STARTTLS, set IMAP_PORT=143 / SMTP_PORT=587 (the security mode follows the port) or set *_SECURITY=starttls explicitly.

Connect a client

Claude Desktop (claude_desktop_config.json), one mailbox over stdio:

{

"mcpServers": { "mail": { "command": "emperor-mail", "args": ["serve", "--stdio"], "env": { "MAIL_USER": "you@example.com", "MAIL_PASSWORD": " ", "IMAP_HOST": "imap.example.com", "MAIL_WRITABLE": "true" } } } }

Claude Code, stdio or HTTP:

claude mcp add mail -e MAIL_USER=you@example.com -e MAIL_PASSWORD='<app password>' \

-e IMAP_HOST=imap.example.com -- emperor-mail serve --stdio

or against a running HTTP server, credentials in headers

claude mcp add --transport http mail http://127.0.0.1:8033/mcp \ --header "X-Mail-User: you@example.com" --header "X-Mail-Password: " \ --header "X-Mail-Imap-Host: imap.example.com"

kowalski (config.toml):

[[mcp.servers]]

name = "mail" transport = "http" url = "http://127.0.0.1:8033/mcp" headers = { "X-Mail-User" = "you@example.com", "X-Mail-Password" = " ", "X-Mail-Imap-Host" = "imap.example.com" }

or one mailbox over stdio: MAIL_USER, MAIL_PASSWORD, IMAP_HOST and the other

variables are read from kowalski's environment

[[mcp.servers]] name = "mail" transport = "stdio"

--writable lists draft (replies saved in Drafts); leave it out for

앞부분만 보여 드려요. 나머지는 저장소에서 읽어 보세요

PopNx에게 묻기