Skip to main content

MCP server for Fastmail — email, contacts, calendar, and files via JMAP, CardDAV, CalDAV, and WebDAV

Project description

pyfastmail-mcp

An MCP server that gives AI assistants full access to your Fastmail account — email, contacts, calendars, and file storage.

⚠️ This server can send email, delete messages, and modify contacts/calendars on your behalf. AI assistants may act on content from untrusted sources (emails, web pages, files) which could contain prompt injection attacks. Review tool calls before approving them, especially actions that send email or delete data.

Features

Domain Protocol Tools
Mail JMAP Send, reply, forward, search, read, pin, archive, keywords, masked email, attachments, threads, import/export, identities
Contacts JMAP List address books, CRUD contacts, query
Calendar CalDAV List calendars, CRUD events (optional — requires app password)
Files WebDAV List, upload, download, move, delete, create folders (optional — requires app password)

Installation

pip install pyfastmail-mcp

Or run directly with uvx:

uvx pyfastmail-mcp

Configuration

1. Get Fastmail Credentials

You need an API token from Fastmail. An app password is optional (only needed for calendar and file storage).

If you only set the API token, the server starts with mail and contacts tools. Calendar and file tools are registered only when the app password is also provided.

2. Set Environment Variables

export FASTMAIL_API_TOKEN="fmu1-..."
export FASTMAIL_APP_PASSWORD="your-app-password"
export FASTMAIL_EMAIL="you@fastmail.com"

3. Add to Your MCP Client

For Claude Desktop, add to claude_desktop_config.json:

{
  "mcpServers": {
    "fastmail": {
      "command": "uvx",
      "args": ["pyfastmail-mcp"],
      "env": {
        "FASTMAIL_API_TOKEN": "fmu1-...",
        "FASTMAIL_APP_PASSWORD": "your-app-password",
        "FASTMAIL_EMAIL": "you@fastmail.com"
      }
    }
  }
}

For Kiro CLI, add to .kiro/settings/mcp.json:

{
  "mcpServers": {
    "fastmail": {
      "command": "uvx",
      "args": ["pyfastmail-mcp"],
      "env": {
        "FASTMAIL_API_TOKEN": "${FASTMAIL_API_TOKEN}",
        "FASTMAIL_EMAIL": "${FASTMAIL_EMAIL}",
        "FASTMAIL_APP_PASSWORD": "${FASTMAIL_APP_PASSWORD}"
      }
    }
  }
}

Tools

Mail (mail_*)

Tool Description
health_check Verify connection and auth
mail_list_mailboxes List all mailboxes (folders/labels)
mail_create_mailbox Create a mailbox
mail_rename_mailbox Rename a mailbox
mail_delete_mailbox Delete a mailbox
mail_get_email Get email by ID (with optional headers)
mail_get_recent_emails Get recent emails
mail_search_emails Search by query
mail_search_snippets Highlighted search result snippets
mail_get_email_thread Get full thread
mail_mark_email_read Mark read/unread
mail_pin_email Pin/unpin (flag/star)
mail_move_email Move to mailbox
mail_delete_email Move to trash or permanently delete
mail_archive_email Archive
mail_manage_email_labels Add/remove keywords
mail_export_email Download raw .eml file
mail_import_email Import .eml into mail store
mail_parse_email Parse a blob as email without importing
mail_list_identities List send-as identities
mail_set_identity Create/update/delete identities
mail_send_email Send new email
mail_reply_to_email Reply to email
mail_forward_email Forward email
mail_list_masked_emails List masked emails
mail_create_masked_email Create masked email
mail_update_masked_email Update masked email state, domain, description, or URL
mail_download_attachment Download attachment
mail_upload_attachment Upload blob for sending

Contacts (contacts_*)

Tool Description
contacts_list_address_books List address books
contacts_list List contacts (query+get combo)
contacts_get_contact Get contact(s) by ID
contacts_query_contacts Query contacts with filters and sorting
contacts_create_contact Create contact
contacts_update_contact Update contact fields
contacts_delete_contact Delete contact(s)

Calendar (calendar_*)

Tool Description
calendar_list_calendars List calendars
calendar_list_events List events
calendar_get_event Get event details
calendar_create_event Create event
calendar_update_event Update event
calendar_delete_event Delete event

Files (files_*)

Tool Description
files_list List files/folders
files_get Download file
files_upload Upload file
files_create_folder Create folder
files_move Move/rename file
files_delete Delete file/folder

Development

git clone https://github.com/pjosols/pyfastmail-mcp.git
cd pyfastmail-mcp
uv sync --group dev
uv run pytest

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyfastmail_mcp-0.3.1.tar.gz (1.4 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyfastmail_mcp-0.3.1-py3-none-any.whl (45.9 kB view details)

Uploaded Python 3

File details

Details for the file pyfastmail_mcp-0.3.1.tar.gz.

File metadata

  • Download URL: pyfastmail_mcp-0.3.1.tar.gz
  • Upload date:
  • Size: 1.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pyfastmail_mcp-0.3.1.tar.gz
Algorithm Hash digest
SHA256 7295f2d4c74ae3153b113242ed4b3c0b9feb22ace5110d576203da51e97cf152
MD5 b651a3b0afd99dc3220fa91441acd291
BLAKE2b-256 266792fd0cff3f2e0849ce34172d0d3cdd5301f088c4e2efe3b9a8b8c79903bb

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyfastmail_mcp-0.3.1.tar.gz:

Publisher: publish.yml on pjosols/pyfastmail-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyfastmail_mcp-0.3.1-py3-none-any.whl.

File metadata

  • Download URL: pyfastmail_mcp-0.3.1-py3-none-any.whl
  • Upload date:
  • Size: 45.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pyfastmail_mcp-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 2f5bf164d3ce92ecd04c0294740452d1dbf452c301c241c2c08f57b0322a4ba8
MD5 7411b51e42cfd6f9df577eda3bd12adf
BLAKE2b-256 2af45bfd09181db28841e661a4cb8c849d4b139346850d73e16d0bf63a087fe5

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyfastmail_mcp-0.3.1-py3-none-any.whl:

Publisher: publish.yml on pjosols/pyfastmail-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page