Config is the same across clients — only the file and path differ.
{
"mcpServers": {
"dead-letter": {
"args": [
"--directory",
"/path/to/dead-letter",
"run",
"--extra",
"mcp",
"dead-letter-mcp"
],
"command": "uv"
}
}
}Are you the author?
Add this badge to your README to show your security score and help users find safe servers.
dead-letter converts email exports into clean Markdown with YAML front matter — threads split, signatures stripped, attachments extracted, calendars parsed. One file or ten thousand.
Run this in your terminal to verify the server starts. Then let us know if it worked — your result helps other developers.
uvx 'dead-letter' 2>&1 | head -1 && echo "✓ Server started successfully"
After testing, let us know if it worked:
Five weighted categories — click any category to see the underlying evidence.
No known CVEs.
Checked dead-letter against OSV.dev.
Be the first to review
Have you used this server?
Share your experience — it helps other developers decide.
Sign in to write a review.
Others in communication / writing
Asynchronous coordination layer for AI coding agents: identities, inboxes, searchable threads, and advisory file leases over FastMCP + Git + SQLite
A Model Context Protocol (MCP) server for interacting with Microsoft 365 and Office services through the Graph API
AI prompt optimization for 58+ platforms across 7 categories with custom platforms
Model Context Protocol (MCP) Server to connect your AI with any MediaWiki
MCP Security Weekly
Get CVE alerts and security updates for io.github.BigCactusLabs/dead-letter and similar servers.
Start a conversation
Ask a question, share a tip, or report an issue.
Sign in to join the discussion.
Your .eml files deserve a second life.
dead-letter converts email exports into clean Markdown with YAML front matter — threads split, signatures stripped, attachments extracted, calendars parsed. One file or ten thousand.
.eml files into an Inbox, let dead-letter organize the Markdown bundles into a Cabinetdead-letter doctor checks your runtime environment/dead-letter:convert, /dead-letter:summarize, /dead-letter:triage, /dead-letter:cabinet)from dead_letter import convert and you're offRaw .eml files are noisy input for downstream LLM and retrieval pipelines — MIME headers, multipart boundaries, duplicated HTML/plain bodies, and encoded attachments all get mixed into the text path.
dead-letter normalizes that into Markdown with YAML front matter, so message text and metadata are ready for chunking or indexing without MIME parsing or base64 cleanup. Default convert() and convert_dir() runs write a single .md per message and keep attachment names in front matter.
If you want the filesystem artifacts separated too, bundle and Cabinet workflows write message.md plus retained decoded files under attachments/. The Markdown is ready for text ingestion, while PDFs, spreadsheets, calendar files, and other retained binary attachments stay cleanly split out for whatever downstream parser you already use.
For direct LLM integration, the MCP server lets Claude Desktop, Claude Code, Codex, and other MCP clients call dead-letter's conversion tools without shelling out.
dead-letter's value isn't fewer tokens than every alternative — it's fidelity per token: the cheapest representation that keeps the email intact. Measured across a synthetic corpus of HTML threads, attachments, and newsletters (tokenizer o200k_base, medians):
.eml — a single email with a PDF attachment is ~126k tokens raw vs ~180 converted.The benchmark is honest about where it loses: naive extraction is fewer tokens when you don't mind throwing away attachments, links, and thread structure. Full method, the complete table (including those rows), tokenizer disclosure, and a one-command reproduce are in benchmarks/.
With Homebrew on Apple silicon macOS:
brew tap BigCactusLabs/tap
brew insta
... [View full README on GitHub](https://github.com/bigcactuslabs/dead-letter#readme)