Controls Gmail threads, labels, filters, attachments, bulk actions, and mailbox-side snoozes through MCP.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent โ or use 1-click editor setup below.
This server is confirmed live โ we successfully called its tools/list endpoint directly (see the verified badge above). We haven't yet sandbox-tested the stdio install command below specifically, which is a separate, ongoing check.
๐ก Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Inspect callable tools, capabilities, and parameters exposed to AI agents by Mailwarden.
searchSearch Gmail with native query syntax (e.g. 'in:inbox from:foo@bar.com newer_than:7d'). Returns thread summaries; read-state/category predicates are re-verified against each hit's live labels. Paginated: when more results exist, the response carries a nextPageToken โ pass it back via pageToken to fetch the next page. USE WHEN: locating threads by sender, subject, date, label, or read state. DO NOT USE: to fetch a thread you already have the ID of (use get_thread). SIDE EFFECTS: none.
get_threadFetch a full thread by ID: headers, plaintext + HTML bodies, and attachment metadata. USE WHEN: reading a thread's content after finding it via search. DO NOT USE: with a message ID โ this takes thread IDs. SIDE EFFECTS: none (does not mark as read).
list_labelsList all Gmail labels (system + user). USE WHEN: inspecting the mailbox structure, or to get exact label names/ids โ though modify_labels/bulk_modify/create_label all accept a plain label name directly, so a lookup is rarely required. SIDE EFFECTS: none.
list_snoozedList all snoozed threads with their due dates. SIDE EFFECTS: none.
get_profileReturn the authorized account: email address plus total message/thread counts. USE WHEN: confirming WHICH mailbox is connected before a bulk or filter action, or as a cheap liveness check. DO NOT USE: to enumerate messages โ this returns only counts, not a listing (use search). SIDE EFFECTS: none.
triage_digestStructured overview of a mailbox slice for triage DECISIONS โ sender / label / age buckets plus unread and attachment counts, instead of a raw thread list. USE WHEN: deciding what to bulk-archive/snooze/label, or summarizing inbox state ('what's in my inbox?'). DO NOT USE: to read a specific thread (use search/get_thread). Samples up to `max` most-recent matches; hasMore flags that more matched than were sampled. byAge buckets by each thread's FIRST message date (thread age, not last activity). SIDE EFFECTS: none.
The csitte/mailwarden MCP server exposes Gmail mailbox operations through the Model Context Protocol. It can find threads with Gmail query syntax, retrieve complete thread content, inspect labels and account details, and produce a structured triage digest with sender, label, age, unread, and attachment information.
Mailbox changes include archiving, marking threads read or unread, moving them to or restoring them from Trash, adding or removing labels, and applying label changes in bulk. Attachments can be written to a local path. The server also manages Gmail filters for automatic label actions on incoming mail, including optional application of those actions to existing messages.
Its distinctive workflow is mailbox-side snoozing. A snoozed thread leaves the inbox and receives a dated label; a later sweep returns due threads to the inbox as unread. This state is visible in Gmail and survives server restarts.
The csitte/mailwarden MCP server sends requests to Gmail rather than maintaining a synchronized mailbox copy. Search accepts Gmail's native query syntax and returns paginated thread summaries. For predicates such as unread, read, starred, inbox, and category, returned threads are checked against live labels to reduce false positives from stale thread-level search state.
Use search to locate a thread, then pass its thread ID to get_thread for headers, plaintext and HTML bodies, and attachment metadata. bulk_modify operates on messages matching a Gmail query in batches of up to 1,000 API requests and reports partial failures. Its query uses Gmail's search index without the live re-verification performed by search, so precise read-state bulk actions should be verified first.
Tool responses declare output schemas and include structured content. Failures expose a code and retryable indicator. The server does not provide send tools, drafts, forwarding, or permanent deletion paths. Message headers can include the receiving server's recorded SPF, DKIM, and DMARC results, with unchecked results reported as such.
Install the csitte/mailwarden MCP server with npx -y mailwarden and configure it as a local stdio MCP process in the client. Gmail authorization is required, and the connected account can be confirmed with get_profile, which returns the account email and mailbox counts.
The optional MAILWARDEN_DOWNLOAD_DIR variable confines downloaded attachments to a directory. If configured, destination paths are resolved within that directory and existing files are not overwritten. Token encryption at rest is also optional through MAILWARDEN_TOKEN_PASSPHRASE; the supplied material does not describe it as required for normal operation.
Filter management requires the gmail.settings.basic scope. If that scope was not included in an earlier authorization, re-run the server's authorization flow. Filter forwarding is not supported; filter actions are limited to Gmail label additions and removals.
Snoozed messages resurface when sweep_snoozed runs; a timed snooze wakes on the next sweep at or after its target time. Bulk operations can be capped by maxMessages, and affected thread IDs are limited in the response even when the modified count is higher.
untrash removes the Trash label but does not restore the Inbox label. Gmail filters affect new mail unless applyToExisting is requested. The server operates against Gmail and writes attachments locally, but it does not provide a general mailbox export or message-sending workflow.
Factual signals from GitHub, npm, and our automated checks โ not a rating.
No reviews yet โ be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/csitte-mailwarden)<a href="https://allmcps.com/mcp/csitte-mailwarden"><img src="https://allmcps.com/api/badge/csitte-mailwarden?style=directory" alt="Mailwarden on AllMCPs" /></a>