by MadLlama25
A Model Context Protocol (MCP) server that provides access to the Fastmail API, enabling AI assistants to interact with email, contacts, and calendar data. Includes a DXT (desktop extension) for Claude Desktop.
# Add to your Claude Code skills
git clone https://github.com/MadLlama25/fastmail-mcpA Model Context Protocol (MCP) server that provides access to the Fastmail API, enabling AI assistants to interact with email, contacts, and calendar data.
Clone or download this repository
Install dependencies:
npm install
Build the project:
npm run build
Get your Fastmail API token:
Set environment variables:
export FASTMAIL_API_TOKEN="your_api_token_here"
# Optional: customize base URL (defaults to https://api.fastmail.com)
export FASTMAIL_BASE_URL="https://api.fastmail.com"
# Optional: customize attachment download directory (defaults to ~/Downloads/fastmail-mcp/)
export FASTMAIL_DOWNLOAD_DIR="/path/to/your/downloads"
Start the MCP server:
npm start
For development with auto-reload:
npm run dev
Default to main branch:
FASTMAIL_API_TOKEN="your_token" FASTMAIL_BASE_URL="https://api.fastmail.com" \
npx --yes github:MadLlama25/fastmail-mcp fastmail-mcp
Windows PowerShell:
$env:FASTMAIL_API_TOKEN="your_token"
$env:FASTMAIL_BASE_URL="https://api.fastmail.com"
npx --yes github:MadLlama25/fastmail-mcp fastmail-mcp
Pin to a tagged release:
FASTMAIL_API_TOKEN="your_token" \
npx --yes github:MadLlama25/fastmail-mcp@v1.9.1 fastmail-mcp
You can install this server as a Desktop Extension for Claude Desktop using the packaged .dxt file.
Build and pack:
npm run build
npx @anthropic-ai/dxt pack
This produces fastmail-mcp.dxt in the project root.
Install into Claude Desktop:
.dxt file, or drag it into Claude Desktophttps://api.fastmail.com (default)Use any of the tools (e.g. get_recent_emails).
🎯 Most Popular Tools:
mailboxId (optional), limit (default: 20), ascending (optional, oldest first)emailId (required)inReplyTo and references headers)
to (required array), cc (optional array), bcc (optional array), from (optional), mailboxId (optional), subject (required), textBody (optional), htmlBody (optional), inReplyTo (optional array), references (optional array), replyTo (optional array)send=false to save as draft instead of sending.
originalEmailId (required), to (optional array, defaults to original sender), cc (optional array), bcc (optional array), from (optional), textBody (optional), htmlBody (optional), send (optional boolean, default: true), replyTo (optional array)to (required array), cc (optional array), bcc (optional array), from (optional), subject (required), textBody (optional), htmlBody (optional), inReplyTo (optional array), references (optional array)to (optional array), cc (optional array), bcc (optional array), from (optional), mailboxId (optional), subject (optional), textBody (optional), htmlBody (optional), replyTo (optional array)query (required), limit (default: 20), ascending (optional, oldest first)limit (default: 10, max: 50), mailboxName (default: 'inbox'), ascending (optional, oldest first)emailId (required), read (default: true)emailId (required)emailId (required), targetMailboxId (required)emailId (required), mailboxIds (required array)emailId (required), mailboxIds (required array)emailId (required)emailId (required), attachmentId (required), savePath (optional)query (optional), from (optional), to (optional), subject (optional), hasAttachment (optional), isUnread (optional), mailboxId (optional), after (optional), before (optional), limit (default: 50), ascending (optional, oldest first)threadId (required)mailboxId (optional, defaults to all mailboxes)emailIds (required array), read (default: true)emailIds (required array), targetMailboxId (required)emailIds (required array)emailIds (required array), mailboxIds (required array)emailIds (required array), mailboxIds (required array)limit (default: 50)contactId (required)query (required), limit (default: 20)calendarId (optional), limit (default: 50)eventId (required)calendarId (required), title (required), description (optional), start (required, ISO 8601), end (required, ISO 8601), location (optional), participants (optional array)No comments yet. Be the first to share your thoughts!