mcpField
M
mbox-mcp

mbox-mcp

Local
github.com/arose26Communication0Updated 2w ago

About mbox-mcp

mbox-mcp is an MCP server for searching local .mbox archives and .eml files. It is for people analyzing saved email without connecting to an account; message parsing is on demand, and attachment contents are not returned.

Key features

  1. 01Index .mbox and .eml archives
  2. 02Search by keyword and envelope fields
  3. 03Filter by date range
  4. 04Parse individual messages on demand
  5. 05List attachment names and sizes

Use cases

  1. 01Find an old message in a Takeout export
  2. 02Summarize correspondence with a contact
  3. 03Review archive senders and date range

MCP support

Exposes archive indexing, message search, and message retrieval tools to MCP clients. It reads local files without OAuth, cloud, or IMAP connections.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"arose26-mbox": {
"command": "npx",
"args": [
"-y",
"mbox-mcp"
]
}
}
}
Run commandnpx -y mbox-mcp

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
npmmbox-mcp0.1.1

Tools

3

Saved tool list · updated 2w ago

ParameterTypeRequiredDescription
pathstringYesPath to an .mbox file (e.g. a Google Takeout export) or a directory of .eml files

Details

From the project README

mbox-mcp

An MCP server for local email archives. Point it at a Google Takeout .mbox export or a folder of .eml files and ask Claude things like:

  • "Who did I email most in this archive?"
  • "Find the message where the landlord mentioned the lease renewal."
  • "Summarize my correspondence with [email protected] from early 2026."

Everything stays on your machine. No OAuth, no app passwords, no IMAP connection, no cloud. Every other email MCP server connects to a live account — this one reads the archive files you already have, which is exactly what you want for the 15 years of Gmail sitting in a Takeout export.

Quick start

Claude Code

claude mcp add mbox -- npx -y mbox-mcp

Claude Desktop — add to claude_desktop_config.json:

{
  "mcpServers": {
    "mbox": {
      "command": "npx",
      "args": ["-y", "mbox-mcp"]
    }
  }
}

Then: "Open C:\Takeout\Mail\All mail Including Spam and Trash.mbox and tell me about it."

Tools

ToolWhat it does
open_archiveIndex an .mbox file or .eml directory: message count, date range, top senders
search_messagesSearch by keyword, sender, subject, date range — plus bounded body-text search
get_messageFully parse one message: decoded body, headers, attachment names/sizes

Built for large archives

A Takeout mbox is often multiple gigabytes with 100k+ messages. The design reads the minimum, lazily:

  • Streaming index — one pass in 8 MiB chunks, recording byte offsets; only the current message's first 16 KiB is ever held for envelope parsing (sender, subject, date, RFC 2047 decoding).
  • Full MIME on demand — reading a message parses just that message (postal-mime: nested multipart, charsets, quoted-printable/base64). Attachments are listed with names and sizes, never dumped into context.
  • Honest body search — body_query only full-parses messages that already match your envelope filters, stops at a scan cap, and reports how many it scanned, so the model knows to narrow by sender or date first.
  • Staleness-aware cache — archives are indexed once per process and re-indexed if the file changes.

Notes and limitations

  • mbox variants: Takeout and Thunderbird produce mboxrd (body From lines are quoted as >From ), which splits cleanly. Plain mboxo archives with unquoted body From lines can over-split.
  • Attachment contents are never returned or written anywhere.
  • PST/OST and Maildir are out of scope for now.

Development

npm install
npm test                 # offline tests — synthetic archives built in-suite
npm run build            # tsc → dist/
node scripts/smoke.mjs   # end-to-end: generates an archive, drives the server over stdio

Architecture: src/archive.ts (streaming indexer, header decoding, envelope filtering) and src/reader.ts (per-message MIME parsing) are pure logic; src/index.ts is the MCP wiring. The test suite includes a chunk-seam property test: indexing with pathological 17-byte chunks must produce an identical index to whole-file reads.

License

MIT

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.