Lettio MCP
OfficialConnect an AI assistant to Lettio mailboxes to list, search, read, send, reply to, and organize email.
List configured accounts and folders with message/unread counts.
List recent emails and search by free text.
Read the full content of an email.
Send a new email from the authenticated mailbox.
Reply in-thread, optionally reply-all.
Mark emails read/unread, flag/unflag them, and move them to folders, archive, or trash.
Choose among configured mailboxes with the
accountparameter; sending is restricted to the signed-in mailbox.
This server has a remotely hosted endpoint. Open its connector listing for connection details, authentication requirements, and setup instructions:
Lettio MCP
Let your AI assistant read, search and send email from a private, EU-hosted mailbox.
Lettio MCP is a Model Context Protocol server that connects an AI agent (Claude, Cursor, and any other MCP client) to a Lettio mailbox over JMAP. Your assistant can triage your inbox, find a message, and send a reply.
🇪🇺 European by default — talks to your own EU-hosted mailbox, no third‑party middleman.
🔒 Safe sending — the server can only ever send as the mailbox it is signed in to. It cannot be tricked into sending from another address.
📬 Everything an agent needs — list, search, read and send, over the open JMAP standard.
👥 One or many mailboxes — configure a single account or several.
Prefer nothing to install? Lettio also runs as a hosted, OAuth‑secured MCP server at
https://mcp.lettio.eu/mcp— add that URL in your client and sign in. This npm package is the local / self‑hosted option for people who want to run it on their own machine.
Hosted server: mail cards in Claude
The hosted server at https://mcp.lettio.eu/mcp adds three tools that open interactive cards in clients that support MCP Apps, such as Claude:
show_emails: the inbox, a folder or search results as a list you can open, archive and flagshow_email: a whole conversation, with Reply, Reply all, Archive and Trashpreview_email: a drafted message you can edit, preview in your brand and send
Sending from a card always needs your click, even when the connection doesn't allow the agent to send on its own. One connection can cover up to 10 mailboxes; searches run across all of them.

Related MCP server: Fastmail MCP Server (Unofficial)
Tools
Tool | What it does |
| Show the connected mailbox and whether it may send. |
| List configured mailboxes (local server). |
| List folders with message and unread counts. |
| Latest messages in a folder, with paging. |
| Free text plus filters: sender, recipient, subject, dates, attachments, unread, folder. |
| One message as text, with its attachments listed. HTML mail is converted. |
| A whole conversation, oldest first. |
| Open an attachment: text and PDF as text, images as images, others as binary. Locally it can also save to a file. |
| Send formatted mail as the signed-in mailbox, with attachments. |
| Reply in-thread, optionally to everyone, with attachments. |
| Save a message to Drafts without sending. |
| Save a threaded reply to Drafts without sending. |
| Send a draft that is already in Drafts. |
| Mark messages read or unread. |
| Flag or unflag messages. |
| Add or remove a label. |
| Move to a folder, |
| Create a mail folder. |
Messages are written in Markdown and rendered as a styled email: headings, tables, quotes (end with > — Name), callouts (> [!NOTE] Title), code blocks, numbered steps and buttons ([Label](https://url "button")). The mailbox signature is added automatically; set it with set_signature.
To match your brand, set LETTIO_BRANDS to JSON (or a path to a JSON file) keyed by domain:
{ "example.com": { "primary": "#231F47", "accent": "#D8093A", "font": "Lexend, Arial, sans-serif" } }Formatted mail goes out as HTML with a plain-text version. Pass format: "plain" to send text as written. Bulk tools take up to 100 ids.
Attachments can be base64 content, a local path, or from_email_id with attachment_id to reuse a file from another message.
Requirements
Node.js 18 or newer.
A Lettio mailbox and an app password for it (use a dedicated app password, not your main login).
Use with Claude Desktop
Add this to your claude_desktop_config.json:
{
"mcpServers": {
"lettio": {
"command": "npx",
"args": ["-y", "@lettio/mcp"],
"env": {
"LETTIO_USERNAME": "you@yourcompany.eu",
"LETTIO_PASSWORD": "your-app-password"
}
}
}
}Restart Claude Desktop; the Lettio tools appear in the tools menu.
Configuration
Configured entirely through environment variables.
Single mailbox
Variable | Required | Description |
| yes | Full email address, e.g. |
| yes | Mailbox app password. |
| no | Mail host. Defaults to |
| no | Friendly name for the account (default: the username). |
Several mailboxes
Set LETTIO_ACCOUNTS to a JSON array and omit the single‑account variables:
[
{ "name": "work", "username": "you@yourcompany.eu", "password": "app-password" },
{ "name": "sales", "username": "sales@yourcompany.eu", "password": "app-password" }
]Then pass account: "work" to any tool to choose which mailbox to use.
Security
Sending is deliberately constrained. Before it sends, the server asks the mail host for the
identities the signed‑in mailbox is allowed to use and requires one that matches the login
address. The From header and the SMTP envelope MAIL FROM are both pinned to that
address. There is no parameter for choosing a different sender, so an agent can never send
"from" a foreign or arbitrary mailbox. Credentials are read from the environment, kept only in
memory, and never logged.
Run from source
npm install
npm run build
LETTIO_USERNAME=you@yourcompany.eu LETTIO_PASSWORD=app-password npm startLicense
MIT © Valmia Solutions s.r.o.
Available Tools
10 toolsflag_emailBInspect
Flag (star) or unflag an email.
Inputs: id (required), flagged (required), account.
list_accountsBInspect
List the Lettio mailboxes this server is configured to access.
Inputs: no named parameters.
list_mailboxesAInspect
List the folders (mailboxes) in a Lettio account, with message and unread counts.
Inputs: account.
list_recent_emailsAInspect
List the most recent emails in a Lettio mailbox (defaults to the inbox).
Inputs: limit, account, mailbox.
move_emailAInspect
Move an email to another folder. Use "archive" to archive, "trash" to move to Trash (reversible), or a folder name.
Inputs: id (required), mailbox (required), account.
read_emailAInspect
Read the full content of one email by its id (get ids from list/search first).
Inputs: id (required), account.
reply_emailAInspect
Reply to an email, keeping it in the same conversation thread. Sends as the mailbox only.
Inputs: id (required), body (required), account, reply_all.
search_emailsAInspect
Search a Lettio mailbox by free-text query (matches sender, subject and body).
Inputs: query (required), limit, account.
send_emailBInspect
Send an email from a Lettio mailbox. Use deliberately — this really sends.
Inputs: to (required), body (required), subject (required), cc, +1 more.
set_read_statusBInspect
Mark an email as read or unread.
Inputs: id (required), read (required), account.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 10 tools
Each tool targets a distinct action or resource: listing folders vs. accounts vs. emails, searching vs. reading, sending vs. replying, and separate mutation tools for read status, flags, and moves. No meaningful overlap or ambiguity.
All tool names use a consistent snake_case verb_noun pattern (list_mailboxes, read_email, set_read_status, move_email). The naming is predictable and makes the action of each tool immediately clear.
Ten tools is well-scoped for an email server covering discovery, retrieval, sending, and message management. Each tool has a clear purpose and none feel redundant or unnecessary.
The core email lifecycle is well covered: list, search, read, send, reply, read/unread, flag, and move/archive/trash. Minor gaps exist such as no permanent deletion or attachment handling, but these are workable and not blocking for typical email workflows.
Maintenance
Related MCP Connectors
Email for AI agents: read, search and send from your Gmail, Outlook, Yahoo, iCloud or IMAP inbox.
Email inboxes for AI agents. Send, receive, and read email with a trust report on every message.
Stateful email for AI agents: read inboxes, reply in-thread, draft with approval.
Give AI agents their own email inboxes: list, read and send mail via scoped, revocable OAuth grants.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to manage email over JMAP, including inspecting mailboxes, searching and retrieving messages, navigating threads, downloading attachments, triaging inboxes, and sending emails atomically via HTTP.MIT
- FlicenseNot gradedqualityAmaintenanceEnables AI assistants to read, search, send, draft, reply to, and organize email, manage contacts, and handle calendar events through the JMAP and CalDAV APIs. It also supports attachments, bulk operations, mailbox/label management, and account statistics.-
- AlicenseNot gradedqualityAmaintenanceEnables AI assistants to manage email, contacts, and calendar data through JMAP, CalDAV, and WebDAV APIs, including sending, replying, searching, attachments, labels, and bulk operations.MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI assistants to access and manage email, contacts, and calendar data over JMAP/CalDAV/WebDAV, including searching, sending, threading, attachments, contacts, events, and mailbox operations.MIT