Back to Directory/Communication

Lettio MCP

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

CommunicationTypeScriptv0.1.2

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 — without your email ever leaving Europe.

  • 🇪🇺 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.

Tools

ToolWhat it does
list_accountsList the mailboxes this server is configured for.
list_mailboxesList folders in an account, with message and unread counts.
list_recent_emailsMost recent messages in a mailbox (defaults to the inbox).
search_emailsFree‑text search across sender, subject and body.
read_emailFull content of one message by id.
send_emailSend a plain‑text email as the signed‑in mailbox.
reply_emailReply in‑thread (keeps the conversation), optionally reply‑all.
set_read_statusMark a message read or unread.
flag_emailFlag (star) or unflag a message.
move_emailMove to a folder — archive, trash (reversible), or a folder name.

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.

Installation

Source-derived launch command. Check the maintainer’s required arguments and credentials before running:

bash
npx -y @lettio/mcp

Set up in your AI client

Merge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.

json
{
  "mcpServers": {
    "eu-lettio-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@lettio/mcp"
      ]
    }
  }
}

Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.

Claude Desktop setup reference

Package

@lettio/mcpnpm

Compatible MCP Clients

Lettio MCP works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.

  • Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.
  • Cursor~/.cursor/mcp.jsonRestart Cursor for changes to take effect.
  • VS Code.vscode/mcp.jsonReload VS Code window for changes to take effect.
  • Windsurf~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect.
  • Claude Code.mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.

Learn More