Fastmail's MCP server vs. faist

Both speak MCP. Both connect to your Fastmail. But they sit on opposite sides of the inbox: Fastmail's MCP is the live-ops layer; faist is the historical index. This page is a frank side-by-side, including when to use one, both, or neither.

TL;DR

Use Fastmail's MCP when you want your AI to read, draft, send mail, or pull a calendar entry — live operations against the inbox. Use faist when you want your AI to aggregate across the archive: group, count, filter, semantic-search, or join across years of mail. They compose cleanly: connect both to the same Claude / Cursor / Continue and let the model pick.

At a glance

DimensionFastmail MCPfaist
Primary surfaceTools (read, search, draft, send, calendar, contacts)SQL (SELECT against jmap.emails / email_chunks / jmap_accounts)
Use caseLive ops — "draft a reply", "what's on my calendar tomorrow"Historical search & analytics — "who emailed me 10× without a reply?"
IndexingNone — walks the inbox per questionFull backfill + incremental tail, embeddings precomputed
SearchJMAP search (provider-side)pgroonga BM25 + pgvector cosine fused with RRF
Data locationStays in FastmailYour Supabase project (you own the DB)
AuthOAuth (read / write / send tiers)OAuth 2.1 + DCR, or per-user PAT
TransportStreamable HTTPStreamable HTTP
ProvidersFastmail onlyAny JMAP (Fastmail, Stalwart, generic)
Open sourceNoYes (MIT)
Self-host?No (hosted by Fastmail)Yes — Docker Compose or Vercel + Railway

When Fastmail's MCP is the right choice

  • You want the agent to act on your mailbox — draft replies, send mail, file messages, edit calendar events.
  • You don't want to run any infrastructure: it's a hosted endpoint with OAuth.
  • You're happy to let the model query the live inbox per question, paginating JMAP as needed.

When faist is the right choice

  • You want to aggregate across the archive — counts, group-bys, time-window analyses — without paying the JMAP round-trip per question.
  • You want semantic search over mail bodies (pgvector) fused with strong keyword precision (pgroonga BM25).
  • You want the data in a database you own, with your own backups, your own retention, and the option to drop faist any day.
  • You use Stalwart or another JMAP provider, not just Fastmail.

Using both together

Claude Code, Cursor, Continue, Cline, and VSCode's native MCP all support multiple MCP servers connected at once. The cleanest setup:

  • Fastmail MCP at https://api.fastmail.com/mcp for live read/write/send.
  • faist at https://faist.app/mcp for SQL over the archive.

Ask "summarize my Q4 revenue from acme.com" and the model will reach for faist's sql-query tool. Ask "draft a reply to Sarah's last message" and it'll reach for Fastmail's tool. Same conversation, two surfaces.

FAQ

Is faist a replacement for Fastmail's MCP?
No — faist complements it. Fastmail handles live ops; faist handles historical aggregation, analytics, and search. Most users will want both connected at once.
Does faist need my Fastmail password?
No. You generate a Fastmail API token (Mail · Read-only) at app.fastmail.com/settings/security/tokens and paste it once. faist encrypts it with an AES-256 KEK before storing.
Will my email content be used to train a model?
No. faist sends embedding requests through zero-retention endpoints. No body, no metadata, nothing is used to train a model.
How do I get started?
Read the docs — the quickstart connects Fastmail, installs the schema in your Supabase, and prints an MCP config snippet you can paste into Claude Code, Cursor, or Continue.

Try faist

Two minutes, a Fastmail API token, and a Supabase account.

sign in → · read the docs →