Lettio MCP

eu.lettioPublished by lettio.euOfficial publisherv0.5.0Updated Nov 3, 2026

Private, EU-hosted email for AI agents over JMAP: read, search, reply, draft, organize, send.

VerifiedStreamable HTTPWeb executableProductivity & WorkflowCommunication & Collaboration

Overview

Lettio's hosted MCP server (mcp.lettio.eu), published by lettio.eu; OAuth sign-in required; Streamable HTTP; 20 tools.

No AI overview yet: these facts come from the registry entry and the server itself.

Publisher
lettio.eu
Endpoint
mcp.lettio.eu
Last checked

Installation

In SourceWeft

  1. Open Lettio MCP in the dashboard and add it to a workspace.
  2. Connect the required credentials. They are stored privately and never shown on public pages.
  3. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/eu.lettio%2Fmcp/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config. The client completes OAuth sign-in on first connect.

{
  "mcpServers": {
    "lettio": {
      "type": "http",
      "url": "https://mcp.lettio.eu/mcp"
    }
  }
}

README

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 flag
  • show_email: a whole conversation, with Reply, Reply all, Archive and Trash
  • preview_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.

[Lettio mail cards in Claude]

Tools

ToolWhat it does
whoamiShow the connected mailbox and whether it may send.
list_accountsList configured mailboxes (local server).
list_mailboxesList folders with message and unread counts.
list_recent_emailsLatest messages in a folder, with paging.
search_emailsFree text plus filters: sender, recipient, subject, dates, attachments, unread, folder.
read_emailOne message as text, with its attachments listed. HTML mail is converted.
get_threadA whole conversation, oldest first.
get_attachmentOpen an attachment: text and PDF as text, images as images, others as binary. Locally it can also save to a file.
send_emailSend formatted mail as the signed-in mailbox, with attachments.
reply_emailReply in-thread, optionally to everyone, with attachments.
create_draftSave a message to Drafts without sending.
create_reply_draftSave a threaded reply to Drafts without sending.
send_draftSend a draft that is already in Drafts.
set_read_statusMark messages read or unread.
flag_emailFlag or unflag messages.
label_emailAdd or remove a label.
move_emailMove to a folder, archive, or trash (reversible).
create_folderCreate 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:

json
{ "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:

json
{  "mcpServers": {    "lettio": {      "command": "npx",      "args": ["-y", "@lettio/mcp"],      "env": {        "LETTIO_USERNAME": "[email protected]",        "LETTIO_PASSWORD": "your-app-password"      }    }  }}

Restart Claude Desktop; the Lettio tools appear in the tools menu.

Configuration

Configured entirely through environment variables.

Single mailbox

VariableRequiredDescription
LETTIO_USERNAMEyesFull email address, e.g. [email protected].
LETTIO_PASSWORDyesMailbox app password.
LETTIO_HOSTnoMail host. Defaults to https://mail.lettio.eu.
LETTIO_ACCOUNT_NAMEnoFriendly name for the account (default: the username).

Several mailboxes

Set LETTIO_ACCOUNTS to a JSON array and omit the single‑account variables:

json
[  { "name": "work", "username": "[email protected]", "password": "app-password" },  { "name": "sales", "username": "[email protected]", "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

bash
npm installnpm run build[email protected] LETTIO_PASSWORD=app-password npm start

License

MIT © Valmia Solutions s.r.o.

Source: README.md at commit 41ad3bb

Tools

20

whoami

Show which mailbox this connection uses and whether it may send.

Parametersaccount

list_accounts

List the mailboxes this server can use.

Takes no parameters.

list_mailboxes

List folders with message and unread counts.

Parametersaccount

list_recent_emails

List the most recent emails in a folder, newest first.

Parameterslimitoffsetaccountmailboxunread_only

search_emails

Search email. Combine free text with filters; all given filters must match. With several mailboxes and no account, searches them all.

Parameterstofromafterlimitquerybeforeoffsetaccountmailboxsubjectunread_onlyhas_attachment

read_email

Read one email: its text and a list of attachments. HTML mail is converted to text.

Parametersidrequiredaccount

get_thread

Read the whole conversation an email belongs to, oldest first.

Parametersidrequiredaccount

get_attachment

Open an attachment. Text and PDF come back as text, images as images, other files as a binary resource. Give save_to to write it to a local file instead.

Parametersaccountsave_toemail_idrequiredattachment_idrequired

send_email

Send an email from this mailbox. This really sends, and the sender is always this mailbox. Write in Markdown; recipients get formatted HTML with a plain-text version.

Parameterscctorequiredbccbodyrequiredformataccountsubjectrequiredsignatureattachments

reply_email

Reply in the same conversation and send it. Replies to the sender, or to everyone with reply_all.

Parametersidrequiredbodyrequiredformataccountreply_allsignatureattachments

create_draft

Save a new message to Drafts without sending it.

Parameterscctorequiredbccbodyrequiredformataccountsubjectrequiredsignatureattachments

create_reply_draft

Save a reply to Drafts, in the same conversation, without sending it.

Parametersidrequiredbodyrequiredformataccountreply_allsignatureattachments

send_draft

Send a draft that is already in Drafts. This really sends.

Parametersidrequiredaccount

get_signature

Show the signature that is added to outgoing mail.

Parametersaccount

set_signature

Set the signature added to outgoing mail. Stored on the mailbox, so it applies to every client that reads it.

Parametershtmltextrequiredaccount

set_read_status

Mark emails read or unread.

Parametersidsrequiredreadrequiredaccount

flag_email

Flag (star) or unflag emails.

Parametersidsrequiredaccountflaggedrequired

label_email

Add or remove a label on emails.

Parametersaddidsrequiredlabelrequiredaccount

move_email

Move emails to a folder. Use "archive", "trash" (reversible), "inbox", or a folder name.

Parametersidsrequiredaccountmailboxrequired

create_folder

Create a mail folder, optionally inside another.

Parametersnamerequiredparentaccount

Version history

2
  1. v0.5.0LatestNov 3, 2026
  2. v0.1.2Sep 16, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listed15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts