Skip to main content
Glama
kojott

mailmcp

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
MAILMCP_KEYYesThe master encryption key for tokens. Must be 32 random bytes as base64url. Changing it invalidates every token.
MAILMCP_LICENSENoYour licence key. Leave empty for the free tier.
MAILMCP_PUBLIC_URLNoPublic URL of the server when running behind a reverse proxy.
MAILMCP_TRUST_PROXYNoSet to 1 to trust the reverse proxy.0
MAILMCP_ALLOW_PRIVATE_MAIL_HOSTSNoSet to 1 to allow connecting to mail servers on private IP addresses.0

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}
prompts
{
  "listChanged": true
}
resources
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_accountsA

Lists configured mailboxes with their ids, addresses and what operations are permitted on each.

list_foldersA

Lists folders (labels on Gmail) of one account with message and unseen counts.

search_messagesA

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.

get_messageA

Returns headers, sanitized text body and the attachment list of one message. Body is truncated to the configured limit.

get_threadA

Lists all messages belonging to the same conversation as the given message (Gmail thread id, or References headers elsewhere).

get_attachmentA

Downloads one attachment (max 2097152 bytes). Text-like types are returned as text, others as embedded binary.

create_draftA

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.

get_signatureA

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.

set_signatureA

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.

reply_draftA

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.

reply_sendA

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").

send_messageA

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.

send_draftA

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.

forward_messageA

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.

upload_attachmentA

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.

request_uploadA

Returns a one-hour HTTPS upload link for an account. Anyone with the link can PUT/POST a file to it (curl -T file , 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.

list_uploadsA

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.

modify_messageB

Mark read/unread, star/unstar, add/remove Gmail labels, move to a folder or archive.

trash_messageA

Moves a message to the Trash folder. Never deletes permanently.

searchA

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: " to limit it to one mailbox.

fetchA

Returns the full sanitized text of one email by the id returned from search.

Prompts

Interactive templates invoked by user choice

NameDescription
triage_inboxSummarize what needs attention across accounts
draft_replyPrepare a reply draft to a specific message

Resources

Contextual data attached and managed by the client

NameDescription
accounts

TDQS

A3.8/5.0

Scored across 21 tools

Disambiguation3/5

Most tools are clearly separated by action and resource, but `search`/`fetch` duplicate the purpose of `search_messages`/`get_message` with different ID schemes, which can confuse an agent about which pair to use. `trash_message` also overlaps with `modify_message`'s move-to-folder capability, though descriptions mostly clarify boundaries.

Naming Consistency3/5

The large majority follow a clean verb_noun snake_case pattern (`list_accounts`, `send_message`, `create_draft`, `upload_attachment`). The bare `search` and `fetch` break this pattern and are especially problematic because they visually resemble general verbs rather than specific mail operations alongside `search_messages` and `get_message`.

Tool Count4/5

21 tools is at the heavy end, but the email domain genuinely spans search, threads, drafts, sending, replies, forwarding, attachments, signatures, and message modification. The redundant `search`/`fetch` pair makes the count feel slightly larger than necessary, but the scope is still reasonable.

Completeness4/5

The surface covers the full email workflow: find, read, thread, reply, forward, draft, send, attach, sign, and modify messages. Minor gaps exist, such as no explicit draft-update tool or folder management beyond moving messages, but these can be worked around with existing tools.

Maintenance

ActivityMaintained
ResponsivenessNo issues