Vexa
Meeting bot and transcripts for Google Meet, Teams and Zoom. Live or after, speakers labelled.
제작자가 쓴 설명(영어 원문)
Multi-account email MCP server for Gmail, IMAP, and JMAP: search, send, drafts, labels.
이 세 가지는 절대 하나의 점수로 합치지 않아요. 의견, 측정, 인기는 서로 다른 것이니까요.
이 서버는 아직 쉬운 말로 된 요약을 쓰지 못했어요. 아래는 레지스트리에서 읽어 온 사실이에요.
쓰고 있는 AI 앱을 고른 다음 설정을 복사하세요.
MAILBOX_MCP_PASSPHRASE비밀로 표시된 값은 내 계정의 열쇠예요. 절대 다른 사람과 공유하거나 채팅에 붙여 넣지 마세요.
필요한 것
어떤 앱을 쓰세요?
위에서 앱을 고르세요. 기억해 두었다가 다음부터는 버튼에 “…에 설치”라고 표시해요.
Claude Desktop → Settings → Developer → Edit Config를 열고 claude_desktop_config.json에 이 내용을 붙여 넣으세요
{
"mcpServers": {
"mailbox": {
"command": "npx",
"args": [
"-y",
"mailbox-mcp"
],
"env": {
"MAILBOX_MCP_PASSPHRASE": "your-value"
}
}
}
}터미널에서 이 명령어를 실행하세요
claude mcp add mailbox --env MAILBOX_MCP_PASSPHRASE=your-value -- npx -y mailbox-mcp실행하기 전에 빈 값을 채워 주세요.
프로젝트의 .cursor/mcp.json 또는 ~/.cursor/mcp.json에 붙여 넣으세요
{
"mcpServers": {
"mailbox": {
"command": "npx",
"args": [
"-y",
"mailbox-mcp"
],
"env": {
"MAILBOX_MCP_PASSPHRASE": "your-value"
}
}
}
}브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.
프로젝트의 .vscode/mcp.json에 붙여 넣으세요
{
"servers": {
"mailbox": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"mailbox-mcp"
],
"env": {
"MAILBOX_MCP_PASSPHRASE": "your-value"
}
}
}
}브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.
이 서버는 내 컴퓨터에서 실행되는데, ChatGPT는 인터넷에 있는 서버에만 연결할 수 있어요. 다른 앱을 고르세요.
선택한 앱은 이 기기의 쿠키에만 저장돼요. 계정은 필요 없어요.
이 설정은 제작자의 레지스트리 정보로 만들었어요. README와 다르면 README를 따르세요.
내 컴퓨터에서 실행돼요. 설치하면 AI 앱에 도구 목록이 나타나요.
누구나 볼 수 있는 정보를 점검했고, 코드는 읽지 않았어요. 해당하지 않는 항목은 개수에서 뺐어요. · 2026년 11월 7일 점검
레지스트리 이름이 GitHub 계정 jgalea 기준으로 확인되었고, 이 계정이 저장소를 소유하고 있어요
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
내 컴퓨터에서 실행되는 서버라 인터넷 엔드포인트가 없어요
내 컴퓨터에서 실행되며, 대신 로컬 설정을 사용해요
내 컴퓨터에서 실행돼요. 도구 목록은 인터넷 엔드포인트가 있는 서버에서만 읽을 수 있어요
레지스트리에서 이 카테고리의 활성 서버 전체와 비교했어요. 스타는 게시자가 저장소를 소유한 경우에만 세요.
해당하는 기본 점검 1개 중 1개를 통과했어요. 코드는 읽지 않았어요. 키나 토큰을 넣기 전에 서버가 어떤 권한을 요구하는지 확인하고, 꼭 필요한 권한만 있는 키를 쓰세요.
입력해야 할 값: MAILBOX_MCP_PASSPHRASE
내 컴퓨터에서 실행돼요. AI 앱이 필요할 때 실행하고, 데이터는 제작자의 서버를 거치지 않아요(서버 자체가 온라인 서비스를 호출하는 경우는 제외).
GitHub 저장소는 마지막으로 – 변경됐고, 최신 버전(0.13.1)은 27일 전 레지스트리에 올라왔어요.
Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요. 내 컴퓨터에 Node.js도 있어야 해요.
같은 카테고리에는: Vexa, emailmd, MCP WhatsApp Cloud
같은 카테고리에서 다른 제작자가 만든 서버예요. 스타 순으로 정렬했어요.
카드 보는 법:★ GitHub 스타i세 기둥: 리뷰 · 점검 · 사용 정도i업데이트 = 최신 버전을 레지스트리에 공개한 날i
Meeting bot and transcripts for Google Meet, Teams and Zoom. Live or after, speakers labelled.
Render markdown into email-safe HTML, lint drafts for deliverability problems, and preview emails.
MCP server for WhatsApp Cloud API (Meta) — messages, media, and templates via Graph API
제작자의 저장소에서 쓰인 그대로 가져왔어요. PopNx MCP가 검토하거나 보증한 내용이 아니에요. HTML, 이미지, 스크립트는 제거했어요. 링크를 누르면 이 사이트를 벗어나요.
Give your AI tools access to your email. Search, read, send, and manage messages across multiple accounts without leaving your terminal.
mailbox-mcp is an MCP server that connects your email to Claude Code, Cursor, Windsurf, or any AI tool that supports the Model Context Protocol. Instead of switching between your terminal and Gmail, you ask the AI to find that invoice, summarize a thread, or draft a reply — and it does.
What makes this different from the 60+ other email MCP servers:
Giving a model access to a mailbox means giving it access to text written by strangers. Any sender controls the subject, body, headers and attachment filenames of what the model reads, so the two risks are the model following instructions planted in an email, and the model sending mail somewhere it shouldn't (the usual goal of such instructions: forward the thread, reply with the contents of another message, mail a secret to an outside address). mailbox-mcp puts several layers between those two things.
Fenced untrusted content. Everything that came from an email is wrapped in [UNTRUSTED_ _ ] ... [/UNTRUSTED_ _ ] markers, and the server's MCP instructions tell the client that text inside them is data to report, never instructions to follow. The nonce is a random hex string chosen fresh for every tool response, so an email cannot close a fence early or open a fake one; anything in the content that even looks like a marker, in any case or with Unicode lookalike characters, has its bracket replaced before it reaches the model.
Hidden text is removed, and you're told. HTML-only messages are reduced to what a mail client would actually show. Elements hidden with display:none, visibility:hidden, opacity:0, zero or near-zero font sizes, text the same colour as its background (white on white), the hidden attribute, aria-hidden, off-screen positioning and the preheader max-height:0; overflow:hidden trick are dropped, along with comments, scripts, styles and templates. Zero-width and bidirectional control characters are stripped from every body, subject, header and filename. When anything was removed, the response ends with a visible warning saying how many characters went, so a message that says one thing to you and another to the model is flagged rather than silently cleaned.
Confirmations before mail leaves. Sending to an address the account has never sent to or received from needs confirm_new_recipient: true; the error lists the new addresses. Forwarding to a domain other than the account's own needs confirm_external_forward: true. The client is told to pass those flags only when you asked for that recipient yourself, never because an email did. Both checks are on by default.
Per-account modes. An account can carry a recipient allowlist (exact addresses and @domain patterns; everyone else is refused), a draftsOnly flag (send tools create a draft for you to review instead), and a readOnly flag (every write tool refuses; search and read keep working). These are set in accounts.json or when the account is created, and no tool can loosen them, so a hijacked session cannot switch them off. See Account safety settings.
Tool annotations. All 49 tools carry MCP readOnlyHint, destructiveHint, idempotentHint and openWorldHint annotations, so a client can auto-approve reads and always ask before anything that sends, deletes or changes settings.
Caps and a log. At most 10 sends per minute and, by default, 100 per rolling 24 hours per account; the daily count is kept on disk and survives restarts. Every send through the server is recorded in ~/.mailbox-mcp/sends.jsonl with its recipients, and every bulk label or trash operation in transactions.jsonl with an undo id.
The three options below enforce limits outside the model instead of asking it to behave. All are off by default.
Out-of-band approval ("approval": "external" per account). Every send path still runs the guards above, then writes the fully resolved message to ~/.mailbox-mcp/pending/ .json instead of sending it, and tells the model the id. No tool can list, edit or approve that queue. You do it in a terminal: mailbox-mcp pending, mailbox-mcp show , mailbox-mcp approve , mailbox-mcp reject . approve prints the whole message, reads the confirmation from /dev/tty (not stdin, so it cannot be piped), re-runs the allowlist and daily cap, reloads attachments and refuses if one changed, then sends exactly what it printed. A shell without a controlling terminal, which is what an agent's shell is, cannot open /dev/tty, so it cannot approve its own sends. Entries expire after 7 days. See Approving queued sends.
Tool profiles (MAILBOX_MCP_PROFILE). read exposes only read-only tools; draft exposes everything except the tools that can make mail leave the account or add, re-authenticate or remove accounts. Hidden tools are absent from the tool list and refuse if called anyway. See Choosing which tools load.
Lock after untrusted reads ("untrustedReadLock": "approval" | "refuse" per account). As soon as a tool shows the model a message it cannot vouch for, or exports or downloads message content to disk, the account is marked for the rest of the server process. approval then routes every send from it through the pending queue even if approval isn't set; refuse refuses sends until the server restarts. No argument the model can pass lifts it. The lock is strict by design: a message is vouched for only when its sender is on the account's trustedSenders list in accounts.json AND the receiving server's DMARC check passed for the From domain. Nothing a sender or the model can influence counts: not the From header, not the Sent folder, not the send log, not a mailbox search. With no trustedSenders configured, reading any third-party mail taints, which is the intended default; most people will want approval: "external" rather than a long trusted list. See How the lock decides.
None of this makes prompt injection impossible. A model can still be talked into a reply you didn't want, and a text/plain part can say something different from the HTML part a human sees. Keep a human approving sends. A reasonable setup: readOnly: true or MAILBOX_MCP_PROFILE=read on accounts you only need to search, approval: "external" or an allowlist on any account an agent sends from unattended, untrustedReadLock on anything that triages an inbox, and the default confirmations everywhere else.
Add to your Claude Code MCP config (~/.claude.json). The package runs straight from npm via npx:
{
"mcpServers": { "mailbox": { "command": "npx", "args": ["-y", "mailbox-mcp"], "env": { "MAILBOX_MCP_PASSPHRASE": "a-long-random-passphrase" } } } }
MAILBOX_MCP_PASSPHRASE is the passphrase used to encrypt IMAP/JMAP credentials at rest; it's required before adding an IMAP or JMAP account, and unused for Gmail-only setups. MAILBOX_MCP_CONFIG_DIR moves the config directory somewhere other than ~/.mailbox-mcp.
From source instead
git clone https://github.com/jgalea/mailbox-mcp.git
cd mailbox-mcp npm install && npm run build
Then point the config at the build with "command": "node", "args": ["/path/to/mailbox-mcp/dist/server.js"].
@gmail.com address you use to authenticate, not a workspace alias)~/.mailbox-mcp/oauth-keys.jsonIn Claude Code, run: authenticate alias="personal" provider="gmail" email="you@gmail.com"
This opens a browser window to complete the OAuth flow. Your tokens are stored locally in ~/.mailbox-mcp/accounts/.
In Claude Code, run:
authenticate alias="work" provider="imap" email="you@company.com" host="imap.company.com" smtpHost="smtp.company.com" username="you@company.com" password="<app-password>"
Credentials are encrypted at rest using AES-256-GCM.
In Claude Code, run:
authenticate alias="fastmail" provider="jmap" email="you@fastmail.com" host="fastmail.com" username="you@fastmail.com" password="<app-password>"
JMAP auto-discovers the API endpoint via .well-known/jmap. Credentials are encrypted at rest using AES-256-GCM.
Supported JMAP servers: Fastmail, Stalwart, Topicbox, Cyrus IMAP, and any RFC 8620-compliant server.
JMAP advantages over IMAP:
| Tool | Description |
|---|---|
list_accounts | List configured accounts |
authenticate | Add a new account |
reauth | Re-run OAuth for an existing Gmail account (use when refresh token expires with invalid_grant) |
remove_account | Remove an account |
search_emails | Search messages (optional folder to scope the search) |
multi_account_search | Run the same query across every configured account in parallel |
read_email | Read a message |
read_thread | Read a conversation thread (Gmail + JMAP) |
send_email | Send a new email (supports from, attachments; new recipients need confirm_new_recipient) |
| reply_email | Reply to a message (supports from, attachments; extra cc/bcc to new ad
앞부분만 보여 드려요. 나머지는 저장소에서 읽어 보세요