npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@lettio/mcp

v0.1.2

Published

MCP server for Lettio — let your AI agent read, search and send email from a private, EU-hosted mailbox (JMAP).

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 — 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

| Tool | What it does | |------|--------------| | list_accounts | List the mailboxes this server is configured for. | | list_mailboxes | List folders in an account, with message and unread counts. | | list_recent_emails | Most recent messages in a mailbox (defaults to the inbox). | | search_emails | Free‑text search across sender, subject and body. | | read_email | Full content of one message by id. | | send_email | Send a plain‑text email as the signed‑in mailbox. | | reply_email | Reply in‑thread (keeps the conversation), optionally reply‑all. | | set_read_status | Mark a message read or unread. | | flag_email | Flag (star) or unflag a message. | | move_email | Move 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": "[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

| Variable | Required | Description | |----------|----------|-------------| | LETTIO_USERNAME | yes | Full email address, e.g. [email protected]. | | LETTIO_PASSWORD | yes | Mailbox app password. | | LETTIO_HOST | no | Mail host. Defaults to https://mail.lettio.eu. | | LETTIO_ACCOUNT_NAME | 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": "[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

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

License

MIT © Valmia Solutions s.r.o.