Skip to main content
Glama
p-l-ta

mail-mcp

by p-l-ta

mail-mcp

MCP server that gives Claude (and other MCP hosts) full access to Mail.app on macOS — search, read, send, reply, flag, move, and more — across every account configured in Mail.app (iCloud, Exchange, IMAP, etc.).

Prerequisites

  • macOS (Mail.app required)

  • Node.js 20+

  • An MCP host: Claude Desktop, Amazon Quick, or any stdio MCP client

Installation

  1. Download mail-mcp.dxt from the latest release

  2. Double-click the .dxt file — Claude Desktop installs it automatically

  3. Grant the required macOS permissions (see below)

Manual / Amazon Quick / other hosts

npx @p-l-ta/mail-mcp

Or install globally:

npm install -g @p-l-ta/mail-mcp
mail-mcp

Point your MCP host at the mail-mcp binary (stdio transport). Example config:

{
  "mcpServers": {
    "mail-app": {
      "command": "npx",
      "args": ["@p-l-ta/mail-mcp"]
    }
  }
}

Required macOS permissions

Grant these to the application that runs the MCP host (Claude Desktop, Amazon Quick, etc.):

Permission

Where to grant

Full Disk Access

System Settings → Privacy & Security → Full Disk Access

Automation → Mail

System Settings → Privacy & Security → Automation

The MCP server process inherits permissions from the host application that launches it.

Tools

Tool

Description

search_emails

Search messages via the Envelope Index database with rich filters

read_email

Read the full body of a message by its RFC message-id

list_accounts_and_mailboxes

List all configured accounts and mailboxes with unread counts

list_recent

List recent messages in a specific mailbox

list_senders

Grouped summary of senders with message and unread counts

send_email

Send a new email from one of the configured accounts

reply_to_email

Reply to an existing message by RFC message-id

set_message_flags

Set read and/or flagged status on a message

move_email

Move a message to a different mailbox

trash_email

Move a message to Deleted Messages

create_mailbox

Create a new mailbox/folder in an account

bulk_mark_read

Mark all messages in a mailbox and/or from a sender as read

get_unsubscribe_link

Extract unsubscribe URLs from a message's headers and body

empty_mailbox

Delete every message in a mailbox at once (Junk, Trash, etc.)

How it works

  • Search & read — queries Mail's own Envelope Index SQLite database directly for fast, structured results across all accounts

  • Actions (send, reply, flag, move, trash) — driven by AppleScript automation against Mail.app, so they work even for accounts where messages aren't stored as local files

Development

npm install
npm run dev          # tsx watch — live reload
npm test             # vitest unit tests
npm run build        # compile TypeScript → dist/
npm run dxt          # build Claude Desktop extension → build/mail-mcp.dxt

Interactive MCP testing:

npm run build
npx @modelcontextprotocol/inspector node dist/server.js

License

ISC

Install Server
A
license - permissive license
A
quality
B
maintenance

Maintenance

Maintainers
Response time
0dRelease cycle
5Releases (12mo)

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

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/p-l-ta/mail-mcp'

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