Fastmail MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| FASTMAIL_API_TOKEN | Yes | Fastmail API token with JMAP access. |
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
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_mailboxesA | List all mailboxes (folders) in the Fastmail account with their roles, email counts, and IDs |
| create_mailboxA | Create a new mailbox (folder) in the Fastmail account |
| rename_mailboxA | Rename an existing mailbox (folder). Use list_mailboxes to find the mailbox ID. |
| delete_mailboxA | Delete a mailbox (folder). The mailbox must be empty or you must set force=true to delete with all contents. System mailboxes (Inbox, Trash, etc.) cannot be deleted. |
| get_identitiesA | List all sender identities (email addresses) available for sending emails |
| search_emailsA | Search for emails using filters like sender, recipient, subject, date range, or full-text query. Use this tool when you need to find specific emails matching particular criteria. For simply checking recent emails, use get_latest_emails instead. For unread emails only, use get_unread_emails instead. |
| get_emailA | Get the full content of a specific email by its ID, including headers, body text, and attachment info |
| get_email_headersA | Get selected raw email headers for a message without returning the full body. Defaults to unsubscribe, reply routing, return path, and authentication headers. |
| one_click_unsubscribeA | Unsubscribe from a message using one-click unsubscribe headers. Only posts to safe HTTPS List-Unsubscribe URLs when List-Unsubscribe-Post advertises one-click unsubscribe. |
| get_threadA | Get all emails in a conversation thread, showing the full discussion chronologically |
| get_unread_emailsA | Retrieve unread emails, optionally filtered by mailbox. Best for checking what needs attention. Do not use search_emails for this purpose. |
| get_latest_emailsA | Get the most recent emails sorted by date. Best for quickly checking recent activity without specific search criteria. Do not use search_emails for this purpose. |
| get_mailbox_emailsA | List emails in a specific mailbox with pagination support. Use this when browsing a folder's contents page by page. Use list_mailboxes first to find available mailbox IDs. |
| get_email_attachmentsA | List the attachments on a specific email without returning the full email body. Use this when you only need filenames, types, sizes, and blob IDs before calling download_attachment. |
| download_attachmentA | Download an email attachment by its blob ID. Use get_email first to find attachment blob IDs. Returns text content directly for text files, or base64-encoded data for binary files. Maximum attachment size is 10 MB. |
| send_emailA | Compose and send a new email. Use get_identities first to find available sender identities. |
| reply_emailA | Reply to an existing email. Automatically sets threading headers (In-Reply-To, References) and determines recipients. |
| forward_emailB | Forward an existing email to new recipients with an optional message |
| create_draftA | Save an email as a draft without sending. The draft can be edited or sent later using send_draft. |
| send_draftA | Send a previously saved draft email. The draft must already exist in the Drafts mailbox. |
| move_emailA | Move an email to a different mailbox (folder). Use list_mailboxes to find mailbox IDs. |
| add_labelsA | Add one or more mailbox labels to an email without removing its existing mailbox assignments. |
| remove_labelsA | Remove one or more mailbox labels from an email while preserving any other mailbox assignments. |
| update_email_flagsA | Update email flags (read/unread status, flagged/unflagged status) |
| delete_emailA | Delete an email. By default moves to Trash. Set permanent=true to permanently destroy the email. |
| bulk_email_actionB | Perform an action on multiple emails at once. Supports marking as read/unread, flagging/unflagging, moving, and deleting. |
| bulk_add_labelsA | Add one or more mailbox labels to multiple emails at once while preserving their other mailbox assignments. |
| bulk_remove_labelsA | Remove one or more mailbox labels from multiple emails at once while preserving any other mailbox assignments. |
| archive_emailA | Move one or more emails to the Archive mailbox. A convenient one-step operation for archiving emails you've dealt with. |
| mark_mailbox_readA | Mark all emails in a specific mailbox as read. Useful for clearing unread counts on a mailbox. Processes up to 500 unread emails at a time. |
| get_mailbox_statsA | Get compact mailbox statistics such as email counts, unread counts, and thread counts. Use this when you need an overview instead of listing mailbox contents. |
| get_account_summaryA | Get a compact account-level summary with unique email totals, unread counts, mailbox counts, and top mailboxes. Prefer this over large list calls when you only need an overview. |
| list_calendarsA | List all calendars in the Fastmail account with their names, colors, and visibility status |
| get_calendar_eventsA | Get calendar events within a date range. Optionally filter by calendar ID or search text. |
| get_calendar_eventA | Get the full details of a specific calendar event by its ID |
| create_calendar_eventA | Create a new calendar event. Use list_calendars first to get calendar IDs. |
| update_calendar_eventA | Update an existing calendar event. Only specified fields will be changed. |
| delete_calendar_eventA | Delete a calendar event by its ID |
| list_address_booksA | List all address books (contact groups) in the Fastmail account |
| search_contactsA | Search contacts by name, email, or other criteria. Returns a summary list of matching contacts. |
| get_contactA | Get full details of a specific contact by their ID |
| create_contactB | Create a new contact in the Fastmail address book |
| delete_contactA | Delete a contact by their ID |
| update_contactA | Update an existing contact's information. Only the fields you provide will be updated; other fields remain unchanged. |
| summarize_emailA | Use the connected LLM to produce a concise summary of an email's subject, sender, and body. Requires the MCP client to support sampling. |
| suggest_replyA | Use the connected LLM to draft a reply to an email based on the provided intent or instructions. Requires the MCP client to support sampling. |
| check_function_availabilityA | Check which major Fastmail feature groups are available for this account and MCP client, including setup guidance for missing mail, submission, contacts, calendars, or sampling support. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 47 tools
Multiple email retrieval tools (search_emails, get_latest_emails, get_unread_emails, get_mailbox_emails) overlap in functionality, though descriptions explicitly clarify when to use each. Bulk actions also duplicate single-item operations, but most other tools have clear boundaries.
Most tools use a consistent verb_noun pattern (get_, list_, create_, update_, delete_, send_, etc.). Minor deviations like 'one_click_unsubscribe' and 'check_function_availability' don't fit the pattern, and 'bulk_email_action' is inconsistent with 'bulk_add_labels'/'bulk_remove_labels'.
47 tools is excessive for a single server, even covering email, calendar, and contacts. The granularity is inflated by many specialized bulk operations and retrieval variants (latest, unread, mailbox, search) that could be consolidated.
Email functionality is thorough, with full CRUD, search, drafts, labels, flags, and bulk actions. Calendar and contacts have basic CRUD, but calendar-level management (create/update/delete calendars) and a simple list-all-contacts endpoint are missing. These are workable gaps.