Skip to main content
Glama

JMAP MCP

by wyattjoh

JMAP MCP Server

A Model Context Protocol (MCP) server that provides tools for interacting with JMAP (JSON Meta Application Protocol) email servers. Built with Deno and using the @htunnicliff/jmap-jam client library.

Features

Email Management Tools

  • Search Emails: Search emails with text queries, sender/recipient filters, date ranges, and keywords
  • Get Emails: Retrieve specific emails by ID with full details
  • Get Threads: Retrieve email threads (conversation chains)
  • Mark Emails: Mark emails as read/unread, flagged/unflagged
  • Move Emails: Move emails between mailboxes
  • Delete Emails: Delete emails permanently

Mailbox Management

  • Get Mailboxes: List all mailboxes/folders with hierarchy support

Email Composition

  • Send Email: Compose and send new emails with support for plain text and HTML
  • Reply to Email: Reply to existing emails with reply-all support

Key Capabilities

  • Full JMAP RFC 8620/8621 compliance via jmap-jam
  • Comprehensive input validation with Zod schemas
  • Pagination support for all list operations
  • Rich error handling and connection management
  • Functional programming patterns throughout
  • TypeScript support with strong typing

Installation

Prerequisites

  • Deno v1.40 or later
  • A JMAP-compliant email server (e.g., Cyrus IMAP, Stalwart Mail Server, FastMail)
  • Valid JMAP authentication credentials

Setup

Add the following to your agent of choice:

{ "mcpServers": { "fastmail": { "type": "stdio", "command": "deno", "args": [ "run", "--allow-net=api.fastmail.com", "--allow-env=JMAP_SESSION_URL,JMAP_BEARER_TOKEN,JMAP_ACCOUNT_ID", "jsr:@wyattjoh/jmap-mcp@0.1.1" ], "env": { "JMAP_SESSION_URL": "https://api.fastmail.com/jmap/session", "JMAP_BEARER_TOKEN": "API_TOKEN" } } } }

Usage

Environment Variables

VariableRequiredDescription
JMAP_SESSION_URLYesJMAP server session URL (usually ends with /.well-known/jmap)
JMAP_BEARER_TOKENYesBearer token for authentication
JMAP_ACCOUNT_IDNoAccount ID (auto-detected if not provided)

Available Tools

search_emails

Search for emails with various filters.

Parameters:

  • query (optional): Text search query
  • from (optional): Filter by sender email address
  • to (optional): Filter by recipient email address
  • subject (optional): Filter by subject text
  • inMailbox (optional): Search within specific mailbox
  • hasKeyword (optional): Filter by keyword (e.g., '$seen', '$flagged')
  • notKeyword (optional): Exclude by keyword
  • before (optional): Only emails before date (ISO datetime)
  • after (optional): Only emails after date (ISO datetime)
  • limit (optional): Max results (1-100, default: 50)
  • position (optional): Starting position for pagination (default: 0)
get_emails

Retrieve specific emails by their IDs.

Parameters:

  • ids: Array of email IDs (1-50 IDs)
  • properties (optional): Specific properties to return
get_mailboxes

Get list of mailboxes/folders.

Parameters:

  • parentId (optional): Filter by parent mailbox
  • limit (optional): Max results (1-200, default: 100)
  • position (optional): Starting position for pagination
get_threads

Get email threads by their IDs.

Parameters:

  • ids: Array of thread IDs (1-20 IDs)
mark_emails

Mark emails with keywords (read/unread, flagged/unflagged).

Parameters:

  • ids: Array of email IDs (1-100 IDs)
  • seen (optional): Mark as read (true) or unread (false)
  • flagged (optional): Mark as flagged (true) or unflagged (false)
move_emails

Move emails to a different mailbox.

Parameters:

  • ids: Array of email IDs (1-100 IDs)
  • mailboxId: Target mailbox ID
delete_emails

Delete emails permanently.

Parameters:

  • ids: Array of email IDs (1-100 IDs)
send_email

Send a new email.

Parameters:

  • to: Array of recipients with name and email
  • cc (optional): Array of CC recipients
  • bcc (optional): Array of BCC recipients
  • subject: Email subject
  • textBody (optional): Plain text body
  • htmlBody (optional): HTML body
  • identityId (optional): Identity to send from
reply_to_email

Reply to an existing email.

Parameters:

  • emailId: ID of email to reply to
  • replyAll (optional): Reply to all recipients (default: false)
  • subject (optional): Custom reply subject
  • textBody (optional): Plain text body
  • htmlBody (optional): HTML body
  • identityId (optional): Identity to send from

JMAP Server Compatibility

This server should work with any JMAP-compliant email server, including:

Development

Running in Development

deno run --allow-env --allow-net --watch src/mod.ts

Testing

# Test connection deno run --allow-env --allow-net src/mod.ts

Architecture

The server is built using:

Security

  • All input is validated using Zod schemas
  • Environment variables are used for sensitive configuration
  • No secrets are logged or exposed in responses
  • Follows JMAP security best practices

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make changes following the functional programming style
  4. Test your changes thoroughly
  5. Submit a pull request

License

MIT License - see LICENSE file for details.

-
security - not tested
A
license - permissive license
-
quality - not tested

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

A Model Context Protocol (MCP) server that provides tools for interacting with JMAP (JSON Meta Application Protocol) email servers. Built with Deno and using the jmap-jam client library.

  1. Features
    1. Email Management Tools
    2. Mailbox Management
    3. Email Composition
    4. Key Capabilities
  2. Installation
    1. Prerequisites
    2. Setup
  3. Usage
    1. Environment Variables
    2. Available Tools
  4. JMAP Server Compatibility
    1. Development
      1. Running in Development
      2. Testing
    2. Architecture
      1. Security
        1. Contributing
          1. License
            1. Related Projects

              Related MCP Servers

              • A
                security
                A
                license
                A
                quality
                A Model Context Protocol (MCP) server that provides JSON-RPC functionality through OpenRPC.
                Last updated -
                2
                10
                36
                JavaScript
                Apache 2.0
                • Apple
              • A
                security
                A
                license
                A
                quality
                A beginner-friendly Model Context Protocol (MCP) server that helps users understand MCP concepts, provides interactive examples, and lists available MCP servers. This server is designed to be a helpful companion for developers working with MCP. Also comes with a huge list of servers you can install.
                Last updated -
                3
                614
                61
                JavaScript
                Apache 2.0
              • -
                security
                F
                license
                -
                quality
                A server implementation of the Model Context Protocol (MCP) that provides REST API endpoints for managing and interacting with MCP resources.
                Last updated -
                Python
              • -
                security
                A
                license
                -
                quality
                An implementation of the Model Context Protocol (MCP) server that enables multiple clients to connect simultaneously and handles basic context management and messaging with an extendable architecture.
                Last updated -
                Python
                MIT License

              View all related MCP servers

              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/wyattjoh/jmap-mcp'

              If you have feedback or need assistance with the MCP directory API, please join our Discord server