MCP server that gives AI agents your mailboxes through mailbox-service, within its token's rights.
Runs on your machine from its package; the steps are below.

At most: moves money, runs code or commands, deletes data, or sends messages for you.
Odel charges nothing per call. The publisher may charge for its own service.
Runs locally over stdio
This server isn't hosted — your MCP client launches it from a package registry. Use one of the commands below, or drop the config into your client (e.g. Claude Desktop).
Run
uvx benethos-mailbox-mcp
MCP client config
{
"mcpServers": {
"benethos-mailbox": {
"command": "uvx",
"args": [
"benethos-mailbox-mcp"
]
}
}
}Distributed as an MCP bundle (`https://github.com/benethos-hub/mailbox/releases/download/v0.4.1/benethos-mailbox-mcp-0.4.1.mcpb`) — download it and import the bundle in your MCP client.
One REST API for all your mailboxes, whichever provider they are at, a Python client for it and an MCP server on top. Scripts, tools and AI agents work with your mail through one door you control.
Status: beta, version 0.4.1. Usable with real accounts. A breaking change of the API or the configuration is announced in the changelog. Stored data is carried forward by migrations.
Contents
Most people and small companies have more than one mail account: a personal address at GMX or web.de, a company mailbox at Microsoft 365, an info@ address at some hoster, maybe a Gmail account. Each speaks its own dialect: IMAP here, Microsoft Graph there. Every tool that wants to work with mail has to learn all of them and has to be given the passwords.
Mailbox turns that around. It has four packages. mailbox-service runs on
your own machine or server and holds the connections to all accounts.
Everything else talks to that service only, through one REST API that
looks the same for every provider. mailbox-client is the Python
client of that API, for scripts and apps. mailbox-mcp, the MCP
server, builds on the client and opens the service to AI agents.
mailbox-common holds what the service and the MCP server share. The
service decides who may do what. A script, an app or an AI agent gets
a token of its own. That token opens exactly the accounts and
operations it was given, nothing more.
That makes a few things simple that are hard otherwise.
Through the MCP server, Claude or another AI agent works with every account you gave it. A few requests it handles today:
Its rights decide whether it may send on its own or only leave drafts for a person to send. A grant can also name the recipients it may write to, such as the tax advisor's address alone, and how many mails it may send a day. A mail to anyone else is refused. It can keep the agent to some folders, such as the invoices, and end after a week.
Idempotency-Key)./ui: accounts, users,
rights, tokens, reading and writing mail, the send audit, webhooks,
the status of accounts and sync, the audit of administration, the
service log.Planned next: threads across folders. The order is in docs/ROADMAP.md.
| Provider | Connected via | Credential | State |
|---|---|---|---|
| GMX, web.de, T-Online, Yahoo, AOL, iCloud, Posteo, mailbox.org, IONOS, Strato, own mail servers | IMAP + SMTP | app password | available |
| Microsoft 365, Outlook.com | Microsoft Graph | OAuth, through the project's app or your own (setup) | available |
| Proton Mail | IMAP + SMTP through Proton Mail Bridge | Bridge password | IMAP, not tested |
| Gmail / Google Workspace | Gmail API, or IMAP + SMTP | OAuth, with your own Google Cloud client (setup), or an app password | available |
| Fastmail, Stalwart, other JMAP servers | JMAP | API token or password | available |
| legacy mailboxes without IMAP | POP3 + SMTP: the inbox only, no folders, no read state, no search | password | available |
Not supportable: Tuta, which offers no IMAP and no API. Details per provider in docs/CONCEPT.md, section 5.3.
| Package | What it is | Runs | Read more |
|---|---|---|---|
mailbox-service | the service: REST API, configuration UI, users and rights, accounts, encrypted credentials, provider adapters, background sync | permanently | packages/mailbox-service |
mailbox-client | the Python client of the REST API, async and sync | inside your own code | packages/mailbox-client |
mailbox-mcp | the MCP server, on top of mailbox-client | per client over stdio, or as a server over HTTP | packages/mailbox-mcp |
mailbox-common | what the service and the MCP server share | installed with them | packages/mailbox-common |
A release publishes all four to PyPI under the same version, as
benethos-mailbox-service, benethos-mailbox-client,
benethos-mailbox-mcp and benethos-mailbox-common, and the service
and the MCP server as container
images on ghcr.io. The MCP server is listed in the official MCP
Registry as io.github.benethos-hub/benethos-mailbox-mcp, and every
release carries it as a Claude Desktop extension,
benethos-mailbox-mcp.mcpb. Each package has its own README. It
explains how to install, start and configure it, for the service and
the MCP server with the container image and the compose file.
http://127.0.0.1:8080/ui, sign in as admin with the
one-time password, choose a password of your own and connect your
accounts.uvx: packages/mailbox-mcp./docsOne uv workspace, one lockfile, four distributions.
uv sync
uv run pytest -q
uv run ruff check . && uv run ruff format --check .
uv run mypy
The tests run offline. CI runs these checks too. It also installs the
packages on the lowest versions their pyproject.toml allows, runs the
tests there and checks those versions against OSV for known
vulnerabilities. Manual checks against real test accounts live in
live/ and are described in CLAUDE.md, which also holds the
working rules for this repository.
MIT, see LICENSE.