fastmail-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@fastmail-mcpSend an email to support@fastmail.com about billing issue"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Check out my other MCP tools
jmap-dav-mcp
Generic Model Context Protocol (MCP) server for open email/PIM standards:
Mail via JMAP (RFC 8620/8621)
Calendar via CalDAV
Contacts via CardDAV
Works with any compliant server. Fastmail works out of the box (this project began as fastmail-mcp), and the JMAP side also works with self-hosted servers like Stalwart, Cyrus, and Apache James. The CalDAV/CardDAV side works with iCloud, Nextcloud, Radicale, Baïkal, and friends.
Tool domains (mail / calendar / contacts) are registered based on which credentials you configure — a calendar-only setup exposes only calendar tools.
Requirements
Bun 1.3+ (recommended) or Node.js 18+
Credentials for a JMAP and/or CalDAV/CardDAV server
Related MCP server: FastMail MCP Server
Configuration
Mail (JMAP)
Variable | Description |
| Server base URL. The session is discovered at |
| Alternative: point directly at the session resource (overrides |
| Bearer token auth (recommended where supported). |
| Basic auth alternative. |
Calendar + Contacts (CalDAV/CardDAV)
Variable | Description |
| CalDAV server URL (server root is fine — collections are discovered). |
| CardDAV server URL. |
| Basic auth credentials (use an app password where supported). |
| Optional. ORGANIZER email used when generating events (defaults to |
Domain selection
Variable | Description |
| Optional comma list of |
Fastmail
Legacy FASTMAIL_* variables are fully supported and imply the Fastmail server URLs, so an existing Fastmail setup needs no URL configuration:
FASTMAIL_USERNAME+FASTMAIL_APP_PASSWORD— mail (JMAP basic auth) + calendar + contactsFASTMAIL_API_TOKEN— mail via JMAP bearer token (optional alternative)FASTMAIL_BASE_URL,FASTMAIL_CALDAV_URL,FASTMAIL_CARDDAV_URL,FASTMAIL_DAV_USERNAME,FASTMAIL_ORGANIZER_EMAIL— optional overrides
Create an app password in Fastmail Settings → Privacy & Security → App passwords.
Install
bun installOptional (bundle to dist/):
bun run buildRun
bun run start # all configured domainsDev (auto-reload):
bun run devVia bunx:
bunx --bun github:adinschmidt/fastmail-mcpEntry points
Bin | Domains |
| everything configured |
| mail only |
| calendar + contacts only |
MCP Client Config Examples
Fastmail (mcpServers)
{
"mcpServers": {
"fastmail": {
"command": "bun",
"args": ["/absolute/path/to/jmap-dav-mcp/src/index.ts"],
"env": {
"FASTMAIL_USERNAME": "you@fastmail.com",
"FASTMAIL_APP_PASSWORD": "your-app-password"
}
}
}
}Generic servers
{
"mcpServers": {
"mail-calendar-contacts": {
"command": "bun",
"args": ["/absolute/path/to/jmap-dav-mcp/src/index.ts"],
"env": {
"JMAP_BASE_URL": "https://mail.example.com",
"JMAP_API_TOKEN": "your-token",
"CALDAV_URL": "https://dav.example.com",
"CARDDAV_URL": "https://dav.example.com",
"DAV_USERNAME": "you@example.com",
"DAV_PASSWORD": "your-app-password"
}
}
}
}Calendar/contacts only (e.g. iCloud, Nextcloud)
{
"mcpServers": {
"calendar": {
"command": "bun",
"args": ["/absolute/path/to/jmap-dav-mcp/src/bin/dav-mcp.ts"],
"env": {
"CALDAV_URL": "https://caldav.icloud.com",
"CARDDAV_URL": "https://contacts.icloud.com",
"DAV_USERNAME": "you@icloud.com",
"DAV_PASSWORD": "app-specific-password"
}
}
}
}Tools
Mail (JMAP):
list_mailboxescreate_mailboxupdate_mailboxdelete_mailboxlist_emailsget_emailsearch_emailssend_emailmark_email_readmove_emaildelete_emailget_email_attachmentsdownload_attachment
Calendar (CalDAV):
list_calendarscreate_calendarupdate_calendardelete_calendarget_calendar_eventlist_calendar_eventscreate_calendar_eventupdate_calendar_eventdelete_calendar_event
Contacts (CardDAV):
list_contact_listslist_contactsget_contactcreate_contactsearch_contactsupdate_contactdelete_contact
Security Notes
Prefer app passwords / API tokens over your account password.
delete_mailboxrefuses to delete protected system mailboxes (Inbox, Spam, Trash, Sent, Drafts, Archive).delete_calendarrefuses to delete the last remaining calendar.
Troubleshooting
403 Forbidden creating calendar events
In almost all cases this means you're trying to write to a read-only calendar (e.g. a subscribed/shared calendar).
Run
list_calendarsPick a calendar with
canWrite: trueUse that calendar's
idascalendarIdforcreate_calendar_event
JMAP session errors on non-Fastmail servers
The session is discovered at <JMAP_BASE_URL>/.well-known/jmap, following redirects with auth. If your server hosts the session elsewhere, set JMAP_SESSION_URL directly.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/adinschmidt/fastmail-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server