Mailwarden
What it does
Gmail MCP server for email triage: search, labels, archive, trash, unsubscribe, snooze.
- Connects 在你的电脑上运行
- Account or key No key needed
- Category 聊天与邮件
安装
选择你使用的 AI 应用,然后复制设置。
通过 3/3 项检查 · 在你的电脑上运行 · ✓ 命令已检查 2026年11月13日
第一步:你用哪个 AI?
选择你用的应用,步骤会显示在下方。
可连接 Claude,但需要先准备
需要 Mailwarden 的密钥(在开发者网站创建) · 需要先在电脑上安装 Node.js(只需一次) · 仅限电脑上的 Claude 应用(Windows 或 Mac),网页和手机不可用
打开电脑版 Claude 应用的设置文件
SettingsDeveloperEdit Config
粘贴这些设置并保存文件
{ "mcpServers": { "mailwarden": { "command": "npx", "args": [ "-y", "mailwarden" ], "env": { "MAILWARDEN_DIR": "your-value", "MAILWARDEN_CREDENTIALS": "your-value", "MAILWARDEN_AUTO_SWEEP": "your-value", "MAILWARDEN_DOWNLOAD_DIR": "your-value" } } } }只把密钥粘贴到应用的输入框里,不要粘贴到聊天中或发给任何人
退出 Claude 再重新打开
试一试
用 Mailwarden 告诉我你能帮我做什么,然后做一件给我看✓ 如果 Claude 说正在使用 Mailwarden,或回答中出现 Mailwarden 的工具名称,就表示连接成功
菜单名称已于 2026年11月11日 对照 Anthropic 帮助页面核实 · 你的界面可能因版本略有不同
ChatGPT 暂时无法连接 Mailwarden
Mailwarden 需要安装在你的电脑上,而 ChatGPT 只能连接在网上运行的服务器
你可以改用这些方式
A · 使用能连接 Mailwarden 的应用
- 需要 Mailwarden 的密钥(在开发者网站创建) · 需要先在电脑上安装 Node.js(只需一次) · 仅限电脑上的 Claude 应用(Windows 或 Mac),网页和手机不可用
- 需要 Mailwarden 的密钥(在开发者网站创建) · 需要先在电脑上安装 Node.js(只需一次)
- 需要 Mailwarden 的密钥(在开发者网站创建) · 需要先在电脑上安装 Node.js(只需一次)
- 需要 Mailwarden 的密钥(在开发者网站创建) · 需要先在电脑上安装 Node.js(只需一次)
B · 聊天与邮件 类中能连接 ChatGPT 的其他服务器
从同类中使用较多的里挑选,仅限用地址即可连接、无需密钥的
- Inbox Zero✓ ChatGPT
- draw.io✓ ChatGPT
- TradingMCP✓ ChatGPT
可连接 Claude Code,但需要先准备
需要 Mailwarden 的密钥(在开发者网站创建) · 需要先在电脑上安装 Node.js(只需一次)
注册并创建 Mailwarden 的密钥
打开开发者网站,注册账户并创建 API 密钥,下一步要用。价格和免费方案请看开发者网站。
获取密钥的方法见下方开发者的 README
打开终端
Mac:按 Command+空格,输入 Terminal · Windows:打开 PowerShell
粘贴这条命令并按 Enter
claude mcp add --scope user mailwarden --env MAILWARDEN_DIR=your-value --env MAILWARDEN_CREDENTIALS=your-value --env MAILWARDEN_AUTO_SWEEP=your-value --env MAILWARDEN_DOWNLOAD_DIR=your-value -- npx -y mailwarden按 Enter 前,把“your-value”改成你的密钥
只把密钥粘贴到应用的输入框里,不要粘贴到聊天中或发给任何人
在 Claude Code 中输入 /mcp
应能看到 Mailwarden 在列表中并显示已连接
试一试
用 Mailwarden 告诉我你能帮我做什么,然后做一件给我看✓ 如果 Claude Code 说正在使用 Mailwarden,或回答中出现 Mailwarden 的工具名称,就表示连接成功
菜单名称已于 2026年11月11日 对照 Anthropic 帮助页面核实 · 你的界面可能因版本略有不同
可连接 Cursor,但需要先准备
需要 Mailwarden 的密钥(在开发者网站创建) · 需要先在电脑上安装 Node.js(只需一次)
注册并创建 Mailwarden 的密钥
打开开发者网站,注册账户并创建 API 密钥,下一步要用。价格和免费方案请看开发者网站。
获取密钥的方法见下方开发者的 README
填写你的密钥
在 Mailwarden 的设置中,MAILWARDEN_DIR, MAILWARDEN_CREDENTIALS, MAILWARDEN_AUTO_SWEEP, MAILWARDEN_DOWNLOAD_DIR 还是空的,填入你的密钥并保存
只把密钥粘贴到应用的输入框里,不要粘贴到聊天中或发给任何人
在 Cursor 中以 Agent 模式打开 AI 聊天
试一试
用 Mailwarden 告诉我你能帮我做什么,然后做一件给我看✓ 如果 Cursor 说正在使用 Mailwarden,或回答中出现 Mailwarden 的工具名称,就表示连接成功
菜单名称已于 2026年11月11日 对照 Cursor 帮助页面核实 · 你的界面可能因版本略有不同
可连接 VS Code,但需要先准备
需要 Mailwarden 的密钥(在开发者网站创建) · 需要先在电脑上安装 Node.js(只需一次)
注册并创建 Mailwarden 的密钥
打开开发者网站,注册账户并创建 API 密钥,下一步要用。价格和免费方案请看开发者网站。
获取密钥的方法见下方开发者的 README
填写你的密钥
在 Mailwarden 的设置中,MAILWARDEN_DIR, MAILWARDEN_CREDENTIALS, MAILWARDEN_AUTO_SWEEP, MAILWARDEN_DOWNLOAD_DIR 还是空的,填入你的密钥并保存
只把密钥粘贴到应用的输入框里,不要粘贴到聊天中或发给任何人
在 VS Code 中以 Agent 模式打开 AI 聊天
试一试
用 Mailwarden 告诉我你能帮我做什么,然后做一件给我看✓ 如果 VS Code 说正在使用 Mailwarden,或回答中出现 Mailwarden 的工具名称,就表示连接成功
菜单名称已于 2026年11月11日 对照 VS Code 帮助页面核实 · 你的界面可能因版本略有不同
开发者专用:终端命令和 JSON 设置
安装在电脑上
Claude Code
claude mcp add --scope user mailwarden --env MAILWARDEN_DIR=your-value --env MAILWARDEN_CREDENTIALS=your-value --env MAILWARDEN_AUTO_SWEEP=your-value --env MAILWARDEN_DOWNLOAD_DIR=your-value -- npx -y mailwardenClaude Desktop (claude_desktop_config.json)
{
"mcpServers": {
"mailwarden": {
"command": "npx",
"args": [
"-y",
"mailwarden"
],
"env": {
"MAILWARDEN_DIR": "your-value",
"MAILWARDEN_CREDENTIALS": "your-value",
"MAILWARDEN_AUTO_SWEEP": "your-value",
"MAILWARDEN_DOWNLOAD_DIR": "your-value"
}
}
}
}Cursor (~/.cursor/mcp.json)
{
"mcpServers": {
"mailwarden": {
"command": "npx",
"args": [
"-y",
"mailwarden"
],
"env": {
"MAILWARDEN_DIR": "your-value",
"MAILWARDEN_CREDENTIALS": "your-value",
"MAILWARDEN_AUTO_SWEEP": "your-value",
"MAILWARDEN_DOWNLOAD_DIR": "your-value"
}
}
}
}VS Code (mcp.json)
{
"servers": {
"mailwarden": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"mailwarden"
],
"env": {
"MAILWARDEN_DIR": "your-value",
"MAILWARDEN_CREDENTIALS": "your-value",
"MAILWARDEN_AUTO_SWEEP": "your-value",
"MAILWARDEN_DOWNLOAD_DIR": "your-value"
}
}
}
}需要你填写的值
MAILWARDEN_DIRenvConfig directory (default ~/.mailwarden), holds credentials.json and token.jsonMAILWARDEN_CREDENTIALSenvPath to the Google OAuth credentials.json (Desktop app client)MAILWARDEN_AUTO_SWEEPenvSet to 1 to sweep due snoozes at startup and hourly while runningMAILWARDEN_DOWNLOAD_DIRenvRestrict download_attachment and export_thread writes to this directory (recommended for HTTP hosting)
这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
一览
哪些应用可以使用它
依据这个服务器的连接方式和各应用自己的文档,检查于 2026年11月10日。
在你的电脑上运行,适用于
ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast
它能做什么
它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。
基础检查i
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月13日
- ✓ 通过
作者与仓库一致
注册名称已通过 GitHub 账户 csitte 验证,该账户拥有此仓库
- ✓ 通过
仍在维护
代码最后更新于昨天
- ✓ 通过
有许可证
使用 MIT
- – 不适用
端点有响应
它在你的电脑上运行,没有互联网端点
- – 不适用
使用 OAuth 登录
在你的电脑上运行,改用本地设置
- … 尚未检查
工具描述中没有隐藏指令
它在你的电脑上运行;我们只能读取互联网端点的工具列表
讨论
提问、分享技巧或报告无法使用。按“有帮助”数量排序。
用户评价
还没有评价
与“聊天与邮件”中的其他服务器比较i
- 星标数多于此分类中其他 2002 个服务器的 0%
- 发布到注册中心的时间比此分类中其他 2002 个服务器的 89% 更新
- 基础检查结果等于或优于此分类中其他 2002 个服务器的 100%
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
常见问题
Mailwarden 安全吗?
它在 3 项适用的基础检查中通过了 3 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
它需要哪些密钥或代码?
注册中心没有列出必需的密钥,不过有些服务器会在首次使用时要求你登录。
它在我的电脑上运行还是在云端?
它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。
它还在维护吗?
GitHub 仓库最后更新于昨天,最新版本(0.31.1)于前天进入注册中心。
哪些应用可以使用它?
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Node.js。
有什么可以替代它?
同一分类中有:Inbox Zero, draw.io, TradingMCP
同类别的其他选择
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:↓ 每周下载量i★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i
draw.io
Create draw.io diagrams in chat from Mermaid or XML, shown live and interactive. 10,000+ shapes.
TradingMCP
Market analysis for AI assistants: screeners, multi-timeframe analysis, backtests, in-chat charts.
作者的 README
打开 README
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
mailwarden
A reliable, native Gmail MCP server — full mailbox triage for AI assistants, with the feature no other Gmail MCP server ships: mailbox-side snooze.
Highlights
- **Snooze — the only *mailbox-side* snooze in a Gmail MCP server.** Archive a thread now, have it resurface in the inbox on a date. Built on dated labels + a sweep, so it works from any client, is visible in Gmail itself, and survives restarts. (Where another server offers a "snooze", it is a local reminder list — the mail never leaves or re-enters the inbox.)
- Search you can trust. Gmail's
threads.list— the call any thread search goes through — can answeris:unreadfrom a stale thread-level read state: measured in one real mailbox, 86% of the threads it returned held no unread message at all; in a second mailbox, no drift whatsoever. You cannot tell which mailbox you are in without looking, sosearchre-verifies every hit against its live labels. Paginated viapageToken/nextPageToken. (the measurements) - Sender authentication, not sender spelling.
get_threadreports the SPF/DKIM/DMARC results the receiving server recorded, so "is this really from my bank?" is answered from the message's own headers instead of from how the domain looks. It reads Gmail's own report only — the one written under the idmx.google.com; a message can carry forged ones of its own — says whether a passing DKIM signature belongs to theFromdomain, and saysuncheckedwhen nobody checked, because a missing check is not a passing one. - Bulk operations that scale.
bulk_modifyarchives/labels everything matching a query at 1000 messages per API request — with per-chunk partial-success reporting instead of all-or-nothing. The snooze sweep uses the same batch path. - Structured outputs. Every tool declares an
outputSchemaand returns validatedstructuredContentalongside fenced JSON text — no parsing guesswork for clients. Failures are structured as well: acodeand aretryableflag, so a client can tell "try again later" from "re-authorize" without reading prose. - Small attack surface. No send tools (no exfiltration path for prompt-injected mail), optional read-only mode, no telemetry, no open ports by default, symlink-safe download fencing, injection-fenced output. And no code path that *could* send: every Gmail request passes an egress checkpoint that refuses
messages.send,drafts.send, permanent deletion and forwarding settings, whatever a compromised or careless caller asks for — and every other draft endpoint too, unless you switch on the opt-indraftstier, which saves drafts for you to send yourself. One deliberate exception:unsubscribe/bulk_unsubscribe(manage tier) contact the opt-out endpoint named in a message's own header — the only non-Google host mailwarden ever reaches, and aread-tier deployment makes no outbound request at all. Details under Security & privacy and Unsubscribing. - Correct with real-world mail. RFC 2047 headers decoded (
=?UTF-8?B?…?=→ readable text), bodies decoded by their bytes and their declared charset (text Gmail already converted to UTF-8 is read as UTF-8 whatever the header says, anything else in the charset it names; no mojibake for ISO-8859-1/Shift_JIS mail), 429/5xx retried with exponential backoff.
Why
Connectors that sync or cache your mailbox can lag behind it — and even Gmail's own search index is sometimes loose (see below). mailwarden talks straight to the live Gmail API (no cached snapshot) and re-verifies what the index returns, so what you see is what's actually there. It's a generic Gmail capability layer — keep your own rules/logic in your AI client, not in the server.
search goes one step further than the raw API: Gmail's threads.list index can answer read-state operators from a stale copy of that state, so is:unread returns threads you finished reading weeks ago — in one measured mailbox, the large majority of what came back. Since every hit is fetched live anyway, search re-checks the unambiguous predicates (is:unread/is:read/is:starred/in:inbox/category:…, with negation) against each thread's true labels and drops the index's false positives.
Compared to other Gmail MCP servers
Most Gmail MCP servers cover the same read/label/send surface. Two capabilities are still unique to mailwarden as far as we have looked (mailbox-side snooze, search re-verification), and one deliberate omission is a security feature, not a gap. A third, sender authentication, was unique when it shipped and no longer is: @agentcomms/gmail-mcp has read Authentication-Results since 18 September 2026, trusting only the report whose authserv-id is mx.google.com. It has its own column below since 13 October 2026. Google's own server is also narrower than it looks: draft-only, and no trash, filters or unsubscribe.
| Capability | mailwarden | Google official | taylorwilsdon | a-bonus | aaronsb | klodr | agentcomms | gmail-tidy |
|---|---|---|---|---|---|---|---|---|
| Mailbox-side snooze — archive now, resurface in the inbox on a date/time or preset | ✅ | — | — | — | — | — | — | — |
| Search-result re-verification — drops the thread index's false positives against live labels | ✅ | — | — | — | — | — | — | — |
| Sender authentication — SPF/DKIM/DMARC as the receiving server recorded them, on every message | ✅ Gmail's own report only, values token-validated, DKIM alignment | — | — | — | — | — | ✅ Gmail's own report only, DKIM alignment | ⚠️ fail values from the first header, issuer unchecked |
| Sweep / bulk over a query — one action across every thread a search returns | ✅ 1000/req, partial-success | — | ⚠️ batch by explicit ids; filter apply relabels over a query, no re-check | — | ✅ previewed query, up to 10,000, no re-check | ⚠️ batch by explicit ids | ⚠️ batch by explicit ids, exact per-message undo | ⚠️ over a query, capped at 5,000, no preview or re-check |
| Unsubscribe — per-sender overview + RFC 8058 one-click opt-out, no send scope needed | ✅ | — | ⚠️ header shown, no action | — | — | — | — | ⚠️ link shown, no action |
| Inbox triage overview — one call that buckets what is waiting | ✅ sender/label/age + header signals | — | — | ✅ heuristic flags + stats | ⚠️ unread list, no buckets | — | — | ⚠️ sender stats + newsletter list, no buckets |
| Server-side filters — rules that keep triaging with no assistant in the loop | ✅ never forwarding | — | ✅ | — | ✅ previewed; ⚠️ forwarding allowed unless draft-only policy | ✅ never forwarding | — | ✅ never forwarding or trash |
| No send tools — by design — a prompt-injected mail has no exfiltration path | ✅ no compose by default; ⚠️ opt-in draft-only tier | ⚠️ draft-only | ❌ sends | ❌ sends | ❌ sends; ⚠️ opt-in draft-only policy | ❌ sends | ❌ sends; ⚠️ per-message approval, in chat by default | ⚠️ draft-only |
| Least-privilege tool tiers — OAuth scopes derived from the tools you enable | ✅ | ⚠️ scope split | ⚠️ --permissions narrows scopes per service (cumulative or +-union); tiers narrow tools only | — | ⚠️ per-account read/readwrite, at call time | ⚠️ inverse: tools gated by granted scopes | ⚠️ tier per mailbox picks the scopes; writes checked against the grant at call time | — |
| Token encryption at rest | ✅ AES-256-GCM by default, key in the OS keystore; a passphrase where there is none | n/a (hosted) | ⚠️ file mode 0600; bucket CMEK on GCS | — | — | — | ✅ OS keychain by default; owner-only file by choice | ✅ AES-256-GCM by default, key in the OS keystore |
| No vendor cloud — you operate the server | ✅ | ❌ Google-hosted | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Structured outputs — every tool declares an outputSchema | ✅ | ✅ documented per tool in its reference | — | — | — | ⚠️ two tools (download_email, download_all_attachments), more planned | ✅ every tool | — |
Snapshot as of 13 October 2026 — the oldest of the seven column checks (Google's reference and a-bonus, both last read that day), and so the only date the table as a whole can claim. Each repository column is brought forward by reading the diff against the revision recorded in docs/comparison-sources.json whenever npm run table-sources reports a move. On 25 October 2026 four of them moved at once. aaronsb went to 9c9f8033 (v4.8.0), and two of its cells with it: since 16 October 2026 it applies a label change to everything a query matches, behind a preview that counts the set, keeps the ids on the server and hands back a token valid once for thirty minutes (up to 10,000 messages; the matches are not re-checked), and it creates, updates and deletes filters behind the same kind of preview — forwarding included unless its draft-only policy is set. taylorwilsdon went to fcbf5a2c (v2.2.0); --permissions now also takes a union such as gmail:readonly+send that grants only the named levels, which the least-privilege cell now names. klodr went to e5c080c3 (3.0.0); create_filter now refuses a forwarding action whatever the scopes, and its filter cell says so. agentcomms went to 261cae4f (0.28.0, with per-recipient rules on what it sends); no cell moves. a-bonus has not moved since 13 October 2026. Google's tool reference, last read on 13 October 2026, documents an output schema on every one of its eleven tools; it is still Developer Preview, with no send, trash, filter, snooze, unsubscribe or query-driven tool. — = not offered / not documented. Columns are the servers a reader is most likely to reach for — Google's first-party one, plus the three largest community servers still under maintenance — and klodr, which comes closest to mailwarden's own least-privilege design. agentcomms (@agentcomms/gmail-mcp, read at 01cee751 on 13 October 2026) was added the same day for two reasons: it is the only other server we know of that reads Authentication-Results, and it pins that read to Gmail's own report, which is stricter than what mailwarden did until then and the reason mailwarden now does the same; and its npm reach overtook klodr's within a month of its first release. Its bulk path is per id, not per query, but every change returns an exact per-message undo — the design mailwarden's bulk_modify adopted as undo: true. It sends, behind a per-message approval whose default is a yes in the conversation; its own README says the software cannot tell that yes from the agent's, and offers a terminal confirmation (confirm) or no sending at all (never) instead. gmail-tidy (gmail-tidy-mcp, read at 6df48c69 on 25 October 2026) was added that day because its stated position is the closest to this one: no send tool