mailmcp
MCPB · MAILMCP.MCPB · 2 COMPONENTS · SCANNED SEP 20
Your mailboxes in ChatGPT and Claude: Gmail, iCloud, Fastmail, any IMAP. Passwords stay yours.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security13
- Malware scan not yet available for this package.Unverified
- Known CVEs could not be checked: this artifact ships no SBOM, so there is no dependency list to read. Publishing one would let us assess it.Unverified
- No install/post-install scripts declared.Pass
- Dependency health could not be checked: this artifact ships no SBOM, so there is no dependency list to read. Publishing one would let us assess it.Unverified
Provenance & Transparency32
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- License check failed: the license (Proprietary (see LICENSE)) isn't a recognized OSI-approved license. See how to fix → Fail
- Actively maintained (last published 0 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability69
- 67% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Partial
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 3098 tokens (~140/item across 22 items; 21 tools + 1 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management0
- Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage92
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 75% of tool parameters carry a description.Partial
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 3 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 23 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Unverified: 1 category
A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.
Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.
mcpb · mailmcp.mcpb
Download bundleEvery change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 19 Sept 26 40
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 20 Sept 2026 · Analysed mcpb/https://github.com/kojott/mailmcp-dist/releases/download/v0.7.8/mailmcp.mcpb@0.7.8
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | mcpb |
Background: How many MCP packages publish verified provenance →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
create_draft Create draft ~263
Saves a draft into the Drafts folder of the account. Nothing is sent; the owner reviews and sends it from their mail client (or asks you to send_draft). Attachments: existing mailbox attachments, files from upload_attachment/request_upload, or inline content. This is the preferred way to prepare replies.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | yes | Account id from list_accounts |
| attachments | array | – | Files to attach: existing mailbox attachments, uploaded files (folder "mailmcp-uploads"), inline content, or local paths |
| bcc | array | – | – |
| cc | array | – | – |
| html | string | – | Optional HTML body (scripts are stripped); when absent it is rendered from text |
| in_reply_to_folder | string | – | Folder/label path. Defaults to All Mail on Gmail, INBOX elsewhere. |
| in_reply_to_uid | integer | – | uid of the message being answered: sets In-Reply-To/References, keeps the Re: subject and quotes the original. Prefer reply_draft / reply_send. |
| quote | boolean | – | Quote the original under the reply (default true when replying) |
| subject | string | yes | – |
| text | string | yes | Plain-text body |
| to | array | yes | Recipient addresses |
No output schema declared.
No examples provided.
fetch Fetch document (ChatGPT-compatible) ~34
Returns the full sanitized text of one email by the id returned from `search`.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Document id from search |
No output schema declared.
No examples provided.
forward_message Forward a message ~174
Forwards a message including all its attachments, without the files passing through the chat. Optional comment goes above the forwarded text. Recipients must match send_allowlist; with as_draft the forward is saved to Drafts instead.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | yes | Account id from list_accounts |
| as_draft | boolean | – | Save to Drafts instead of sending |
| bcc | array | – | – |
| cc | array | – | – |
| comment | string | – | Text to put above the forwarded message |
| folder | string | – | Folder/label path. Defaults to All Mail on Gmail, INBOX elsewhere. |
| include_attachments | boolean | – | Default true |
| subject | string | – | Defaults to "Fwd: <original subject>" |
| to | array | yes | – |
| uid | integer | yes | – |
No output schema declared.
No examples provided.
get_attachment Get attachment ~104
Downloads one attachment (max 2097152 bytes). Text-like types are returned as text, others as embedded binary.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | yes | Account id from list_accounts |
| folder | string | – | Folder/label path. Defaults to All Mail on Gmail, INBOX elsewhere. |
| inline | boolean | – | Embed the binary content in the result instead of returning a link |
| part | string | yes | part id from get_message |
| uid | integer | yes | – |
No output schema declared.
No examples provided.
get_message Read a message ~98
Returns headers, sanitized text body and the attachment list of one message. Body is truncated to the configured limit.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | yes | Account id from list_accounts |
| folder | string | – | Folder/label path. Defaults to All Mail on Gmail, INBOX elsewhere. |
| include_quoted | boolean | – | Keep quoted replies (default false) |
| max_chars | integer | – | – |
| uid | integer | yes | uid from search_messages |
No output schema declared.
No examples provided.
get_signature Show the mailbox signature ~66
Returns the signature mailmcp appends under replies: the newest message in the mailbox folder "mailmcp-signature" (HTML with inline images) when the account uses it, otherwise the plain-text signature from the token.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | yes | Account id from list_accounts |
No output schema declared.
No examples provided.
get_thread Get conversation thread ~72
Lists all messages belonging to the same conversation as the given message (Gmail thread id, or References headers elsewhere).
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | yes | Account id from list_accounts |
| folder | string | – | Folder/label path. Defaults to All Mail on Gmail, INBOX elsewhere. |
| uid | integer | yes | – |
No output schema declared.
No examples provided.
list_accounts List mail accounts ~45
Lists configured mailboxes with their ids, addresses and what operations are permitted on each.
| Name | Type | Req | Description |
|---|---|---|---|
| check_connection | boolean | – | Also test the IMAP login of every account (slower). |
No output schema declared.
No examples provided.
list_folders List folders / labels ~37
Lists folders (labels on Gmail) of one account with message and unseen counts.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | yes | Account id from list_accounts |
No output schema declared.
No examples provided.
list_uploads List uploaded files ~60
Files waiting in "mailmcp-uploads" of an account (from upload_attachment or an upload link), newest first, with the {folder, uid, part} needed to attach them.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | yes | Account id from list_accounts |
No output schema declared.
No examples provided.
modify_message Modify message ~133
Mark read/unread, star/unstar, add/remove Gmail labels, move to a folder or archive.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | yes | Account id from list_accounts |
| add_labels | array | – | Gmail only |
| archive | boolean | – | Remove from inbox (Gmail) or move to Archive |
| flagged | boolean | – | – |
| folder | string | – | Folder/label path. Defaults to All Mail on Gmail, INBOX elsewhere. |
| move_to | string | – | Destination folder path |
| remove_labels | array | – | Gmail only |
| seen | boolean | – | – |
| uid | integer | yes | – |
No output schema declared.
No examples provided.
reply_draft Reply as a draft ~251
Saves a reply to a specific message into Drafts, in the same thread: In-Reply-To/References, "Re:" subject, recipients (sender, or everyone with reply_all) and the quoted original are set by the server. Use this whenever the owner says "reply / answer / write a draft" ("odpověz", "napiš koncept"). Nothing is sent.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | yes | Account id from list_accounts |
| attachments | array | – | – |
| folder | string | – | Folder/label path. Defaults to All Mail on Gmail, INBOX elsewhere. |
| html | string | – | Optional HTML version of the reply body |
| lang | string | – | Language of the "On … wrote:" line (default: guessed from the reply) |
| quote | boolean | – | Quote the original under the reply (default true) |
| reply_all | boolean | – | Reply to every recipient of the original (default: sender only) |
| text | string | yes | The reply itself, plain text, without greeting-to-quote artefacts; the original is quoted automatically |
| uid | integer | yes | uid of the message being answered (from search_messages / get_message / get_thread) |
No output schema declared.
No examples provided.
reply_send Reply and send ~245
Sends a reply to a specific message in the same thread (threading headers, "Re:" subject, recipients and the quoted original are set by the server). Only when the owner enabled sending for the account AND every recipient matches send_allowlist; otherwise use reply_draft. Use this only when the owner says "send" ("pošli", "odešli").
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | yes | Account id from list_accounts |
| attachments | array | – | – |
| folder | string | – | Folder/label path. Defaults to All Mail on Gmail, INBOX elsewhere. |
| html | string | – | Optional HTML version of the reply body |
| lang | string | – | Language of the "On … wrote:" line (default: guessed from the reply) |
| quote | boolean | – | Quote the original under the reply (default true) |
| reply_all | boolean | – | Reply to every recipient of the original (default: sender only) |
| text | string | yes | The reply itself, plain text, without greeting-to-quote artefacts; the original is quoted automatically |
| uid | integer | yes | uid of the message being answered (from search_messages / get_message / get_thread) |
No output schema declared.
No examples provided.
request_upload Get an upload link ~115
Returns a one-hour HTTPS upload link for an account. Anyone with the link can PUT/POST a file to it (curl -T file <url>, or open it in a browser and drop the file); the file lands in "mailmcp-uploads" and appears in list_uploads. Use it for files on the user's disk or files too big for upload_attachment. If you can run commands, upload the file yourself; otherwise give the link to the user.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | yes | Account id from list_accounts |
No output schema declared.
No examples provided.
search Search (ChatGPT-compatible) ~75
Searches all readable mailboxes with one query string and returns documents with ids for `fetch`. Use Gmail search syntax for Gmail accounts (from:, newer_than:7d, has:attachment); plain words elsewhere. Prefix the query with "account:<id> " to limit it to one mailbox.
| Name | Type | Req | Description |
|---|---|---|---|
| query | string | yes | Search query |
No output schema declared.
No examples provided.
search_messages Search messages ~235
Searches one account (or all accounts with account="all"). On Gmail, `query` accepts full Gmail search syntax (from:, newer_than:7d, has:attachment, label:, "exact phrase"). Elsewhere `query` is full-text and the structured filters do the rest. Returns newest first with uid + folder needed by other tools.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | yes | Account id, or "all" to search every readable account |
| before | string | – | ISO date |
| flagged | boolean | – | Only starred/flagged |
| folder | string | – | Folder/label path. Defaults to All Mail on Gmail, INBOX elsewhere. |
| from | string | – | – |
| has_attachment | boolean | – | – |
| limit | integer | – | Default 20, max 50 |
| offset | integer | – | – |
| query | string | – | Gmail search syntax on Gmail; plain text elsewhere |
| since | string | – | ISO date, e.g. 2026-09-01 |
| subject | string | – | – |
| to | string | – | – |
| unseen | boolean | – | Only unread |
No output schema declared.
No examples provided.
send_draft Send a saved draft ~97
Sends a draft exactly as stored in the Drafts folder (including its attachments) and removes it from Drafts. Recipients are taken from the draft and must match send_allowlist.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | yes | Account id from list_accounts |
| folder | string | – | Drafts folder path if not the default |
| uid | integer | yes | uid of the draft (from create_draft or search_messages in the Drafts folder) |
No output schema declared.
No examples provided.
send_message Send email ~244
Sends an email via SMTP, optionally with attachments (existing mailbox attachments, uploaded files, inline content). Only allowed when the owner enabled sending for the account AND every recipient matches send_allowlist. Otherwise use create_draft.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | yes | Account id from list_accounts |
| attachments | array | – | Files to attach: existing mailbox attachments, uploaded files (folder "mailmcp-uploads"), inline content, or local paths |
| bcc | array | – | – |
| cc | array | – | – |
| html | string | – | Optional HTML body (scripts are stripped); when absent it is rendered from text |
| in_reply_to_folder | string | – | Folder/label path. Defaults to All Mail on Gmail, INBOX elsewhere. |
| in_reply_to_uid | integer | – | uid of the message being answered: sets In-Reply-To/References, keeps the Re: subject and quotes the original. Prefer reply_draft / reply_send. |
| quote | boolean | – | Quote the original under the reply (default true when replying) |
| subject | string | yes | – |
| text | string | yes | Plain-text body |
| to | array | yes | Recipient addresses |
No output schema declared.
No examples provided.
set_signature Set the mailbox signature ~136
Stores the signature as a message in the mailbox folder "mailmcp-signature" (HTML and/or text). Use it when the owner pastes or dictates their signature. For a signature with a photo or logo the owner instead sends themselves an e-mail from their usual mail client and moves it into that folder; images are then embedded from there. Requires the account to use the mailbox signature (setup page) and the draft capability.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | yes | Account id from list_accounts |
| html | string | – | HTML signature (scripts are stripped) |
| text | string | – | Plain-text signature; derived from html when omitted |
No output schema declared.
No examples provided.
trash_message Move to trash ~61
Moves a message to the Trash folder. Never deletes permanently.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | yes | Account id from list_accounts |
| folder | string | – | Folder/label path. Defaults to All Mail on Gmail, INBOX elsewhere. |
| uid | integer | yes | – |
No output schema declared.
No examples provided.
upload_attachment Hand a file to mailmcp ~136
Stores a file you have (text, or base64 for binary, up to policy.max_upload_bytes) in the mailbox folder "mailmcp-uploads" so it can be attached to a draft or a sent message. Returns {folder, uid, part} to use in the attachments parameter. The file is removed once attached. For large files or files on the user's disk use request_upload.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | yes | Account id from list_accounts |
| content | string | yes | UTF-8 text or base64 |
| content_type | string | – | – |
| encoding | string | – | – |
| filename | string | yes | – |
No output schema declared.
No examples provided.
What is the mailmcp MCP server?
mailmcp is an MCP server listed in the public MCP registry as ai.mailmcp/mailmcp. Your mailboxes in ChatGPT and Claude: Gmail, iCloud, Fastmail, any IMAP. Passwords stay yours. This page covers its MCPB bundle (https://github.com/kojott/mailmcp-dist/releases/download/v0.7.8/mailmcp.mcpb).
Is the mailmcp MCP server safe to use?
mailmcp scores 40 out of 100 on VerifyMCP. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the mailmcp MCP server expose?
mailmcp exposes 21 tools: list_accounts, list_folders, search_messages, get_message, get_thread, and 16 more. Their descriptions and schemas cost roughly 2,681 tokens of context every time the server is loaded.