Skip to main content
Glama

@bryanberger/jmap-mcp

Local MCP server that exposes a Stalwart mail server's JMAP surface to an AI assistant, with no data leaving your machine except the exchange with your own server.

What it covers

  • Mail: search, read, fetch attachments, compose, send, file and delete messages, manage folders.

  • Contacts: search and read cards, write them, manage address books.

  • Calendar: search and read events, check availability, create, correct, answer and delete.

  • Files: browse, fetch to disk, upload from disk, organize and delete.

  • Sieve: list scripts, store one, choose which one filters, manage the vacation response.

  • Sharing: read who an object is open to, grant and revoke rights, dismiss notifications.

Thirty tools in all, described one by one in the tools reference.

Related MCP server: fastmail-mcp

Quick start with Claude Code

You need the URL of your server's JMAP session and a bearer token it accepts, obtained as the token page describes.

claude mcp add jmap --transport stdio --scope user \
  --env JMAP_SESSION_URL=https://mail.example.com/.well-known/jmap \
  --env JMAP_BEARER_TOKEN=API_xxx \
  -- npx -y @bryanberger/jmap-mcp

Claude Desktop and Cursor take the same server through a JSON file; see the documentation.

Write policy

Every call is classified from its arguments into one of four classes: read, draft, send, destroy. Each class has a level, allow, confirm or deny, and by default send and destroy are confirmed before they run. A confirmation is a question asked through your MCP client, which must support elicitation; when it does not, the call is refused rather than run silently. The question names what the call is about to do: the recipients, the messages, the rights, the script. The write policy page explains the whole mechanism and how to tune it.

Documentation

Page

Answers

Getting a token from Stalwart

Which bearer the server accepts, and how to check it

Claude Code, Claude Desktop, Cursor

How to register the server in each client

Configuration

Every key and variable, with its default

Tools

What each of the thirty tools does, and when it asks

Limits

Every ceiling, and what happens past it

Write policy

Classes, levels, confirmation, recipient perimeter

Troubleshooting

What a refusal or a startup error means

The documentation lives on GitHub and is not shipped in the npm package.

Development

Requires Node 24 (nvm use) and pnpm.

pnpm install
pnpm typecheck   # tsc, native Go compiler
pnpm test        # vitest
pnpm lint        # biome
pnpm build       # emits dist/

Architecture, decisions and the full file tree live in aidd_docs/INSTALL.md. Contribution workflow in CONTRIBUTING.md.

License

MIT

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to manage Fastmail email accounts via JMAP, including reading, sending, organizing emails, and handling mailboxes, drafts, and masked emails.
    43
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Enables AI assistants to read, organize, and send Proton Mail through the local Proton Bridge, with careful gating for sending and attachment access.
    34
    1
    Apache 2.0