Back to Browse

Mcp MCP Server

Developer ToolsModerate7.2MCP RegistryLocalRemote
Free

Server data from the Official MCP Registry

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

About

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

Remote endpoints: streamable-http: https://mcp.lettio.eu/mcp

Security Report

7.2
Moderate7.2Low Risk

Lettio MCP is a well-designed email client server with strong security fundamentals. Authentication is properly required, credentials are handled safely (environment variables, Basic Auth in memory), and the send operation is deliberately constrained to prevent spoofing. Minor code quality issues around input validation and error handling do not materially impact security. Supply chain analysis found 1 known vulnerability in dependencies (0 critical, 1 high severity). Package verification found 1 issue.

4 files analyzed · 7 issues found

Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.

Permissions Required

This plugin requests these system permissions. Most are normal for its category.

HTTP Network Access

Connects to external APIs or services over the internet.

env_vars

Check that this permission is expected for this type of plugin.

What You'll Need

Set these up before or after installing:

Full email address of the Lettio mailbox, e.g. you@yourcompany.eu.Optional

Environment variable: LETTIO_USERNAME

App password for the mailbox.Required

Environment variable: LETTIO_PASSWORD

Mail host. Defaults to https://mail.lettio.eu.Optional

Environment variable: LETTIO_HOST

How to Install & Connect

Available as Local & Remote

This plugin can run on your machine or connect to a hosted endpoint. during install.

Documentation

View on GitHub

From the project's GitHub 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:

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

VariableRequiredDescription
LETTIO_USERNAMEyesFull email address, e.g. you@yourcompany.eu.
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:

[
  { "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 start

License

MIT © Valmia Solutions s.r.o.

Reviews

No reviews yet

Be the first to review this server!