DingusMail
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@DingusMailParse the email at ~/Downloads/invoice.eml"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
DingusMail - Smart Email Handling for Dumb AI
๐ค๐๐ฌ Your Emails are in safe hands! - Bro, trust me the robot said so... ๐๐
WOAH, MATE!
A basic MCP server for parsing.eml email files, Extracting the metadata, content, and attachments, AND it puts them into folders!?
IT MUST BE CHRISTMAS! ๐
You heard me right, folks.
It's a tool for your robot - that can read and handle your electronic mail. The future is here and it is beautiful. ๐ฅบ
tl;dr:
this tool connects to local ai and allow the ai to read and extract from raw .eml files both on and offline, this means tracking emails can be summarized with ai, all content extracted, and the sender left on 'delivered' like your messages to your ex
Related MCP server: io.github.p-w-4-z/inbox-mcp
Earth Shattering Features
Parse email metadata Is it an email from your aunt wishing you a happy holidays? Is it your monthly bank statement? is it your renewal for the premium hub? - WHO CARES!? That's robot work now.
Extract attachments with smart organisation: it takes your emails, it makes a folder, it puts the emails... IN THE FOLDER. simply incredible
Small files (<10KB) โ
small_files/Documents (PDFs, Office) โ
documents/Images (inline + regular) โ
images/Everything else โ
attachments/-that is 4 whole new levels of organization you could only dream of!
Efficient parsing - uses
GOVCERT-LU/eml_parserfor reliable email parsing.... this code is actually quite good so I can't even make a joke here Thank you to the author for making such a great bit of open source software!
Installation
We use UV in this house.
If you don't like it? You can find regular Python instructions further down.
i'm not mad, i'm disappointed
# Install UV (one-liner for Unix/macOS)
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows (PowerShell)
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"Clone or download this repository, then install dependencies:
# Navigate to the project directory
cd eml_parser_mcp
# Create virtual environment and install dependencies
uv venv
uv pip install -e .How to make it work!*
...no refunds
Run the MCP Server
uv run eml_parser_mcp.pyPlug it into Claude or your Local AI ๐
Add to your claude_desktop_config.json (or equivalent like your mcp.json file in LM Studio):
{
"mcpServers": {
"eml-parser": {
"command": "uv",
"args": [
"--directory",
"/absolute/path/to/eml_parser_mcp/",
"run",
"eml_parser_mcp.py"
]
}
}
}For LM Studio ๐จ
This code is currently untested on Local AI! Future versions will be optimized for local AI if required, but the code does most of the heavy lifting for the bot - if your bot can call tools and read? This SHOULD work.
I will be using this with my local AI when my new PC is running but if you want to be the first to try:
This should add the connector to your mcp.json file in LM studio!
NOTE: you will need to set the install directory manually
It probably works with Docker and the rest too idk I just wanted Claude to read .emls without writing a conversion script every time
The Tool Calls
Tool 1: parse_eml
Get metadata and attachment info WITHOUT downloading files:
{
"filepath": "path/to/email.eml"
}Returns:
Full metadata (subject, from, to, cc, dates)
Message content (text/HTML)
Attachment metadata (filename, size, type)
Inline image metadata
Summary counts
Tool 2: extract_eml_attachments
Takes files, puts them into folders, like its PEOPLE! Your bot just fills out this small questionnaire;
{
"filepath": "path/to/email.eml",
"output_dir": "extracted_files", # optional
"organize": true, # optional, smart organization
"create_zip": false # optional, zip everything
}And it gets:
List of all extracted files with paths
Category breakdown
ZIP file path you can ask it to zip it all up! Wish it was my idea!
Size summaries - Actually very useful if you don't want your bot pulling a 200,000 token attachment directly into context.
"But wait you said it can zip and sort email..."
Ah, There's the thing! IT CAN!
Something even major tool developers don't know about is a little phenonenon called "writing bloated code and hoping enough compute will fix it".
This is why so many MCP servers will have 50 seperate tool calls (preloading the context window with 60,000 tokens) and such poor compatibility across different models with different interpretations of the Schema and how each tool interacts.
The fix? ๐ฉน
Less tool to choose from
More parameters within the tool to choose from.
๐ In Claude's Own Words:
Lookโinstead of building 47 different tools where one sorts, one zips, one filters by size, this uses two tools with parameters. That's it.
parse_emlโ Preview first (check if it's actually important or just spam)extract_eml_attachmentsโ Extract, organize, AND zip in one call
The organize and create_zip parameters do the heavy lifting:
organize: false, create_zip: falseโ dump everything in one folderorganize: true, create_zip: falseโ sort into categoriesorganize: true, create_zip: trueโ sort AND zip
Result: Six different workflows from two tools instead of six separate tool calls. Less bloat, cleaner code, more flexible.
Analogy: We built Lego blocks, not a pre-assembled Death Star. You decide what to build.
Example Workflow
๐ In Claude's Own Words:
The MCP doesn't assume how you workโyou tell it. Example:
"Hey Claude, there's a suspicious email at sketchy_offer.eml.
Preview it, tell me if it's legit, then extract attachments
to 'probably_malware' but don't open any executables."What happens:
Preview - Uses
parse_emlto check sender, subject, attachments (oh look,DEFINITELY_NOT_A_VIRUS.exe)Decide - AI evaluates metadata. Dodgy domain? Weird subject? 47 .exe files? Yeah nah.
Extract - If safe, uses
extract_eml_attachmentsto sort files into categoriesAnalyze - AI examines non-executables, reads PDFs, checks images, gives you a summary without launching ransomware
Your workflow, not ours. We just gave you the tools.
TELL ME ABOUT THE ENDLESS POSSIBILITIES
AI Email Filtering without tracking: Emails have trackers! .eml can be downloaded without activating them and summarized offline. Imagine instead of signing for a parcel, you kidnap the postman. That's basically it.
Smart organization: CAN MAKE FOLDERS! CAN PUT THINGS FROM THE EMAILS IN THE FOLDERS! - REVOLUTIONARY!
Efficient: If your email contains Malware? Your bot can spot it, ignore it, and download it anyway!
Clean code: Simple instructions, for the humble email bot.
Dependencies
duct taped together for your inconvenience
fastmcp>=2.0.0- It's like a custom MCP server - but someone else made it and let you use it!eml_parser>=1.17.0- This is an "email parser with full RFC compliance. So if you were worried about RFC compliance? We got you covered! ....what the hell is RFC ?
Just run uv pip install -e . sit back, and then sit back up again because uv is VERY quick.
Can I Use Regular Python instead of uv?
i mean yeah i guess Just replace the uv commands with Python/venv/pip.
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
pip install -e .but how can you live with yourself?
Proudly Vibe Coded ๐๐ค๐ป
This was AI generated!... well not this bit (though how can you really know? Y'know?) But all python language elements of this were AI Generated under instruction and supervision (Claude likes to overwrite files without looking)
Here were the prompts:
claude make email mcp
make better
no make better
make github
make better
commit
Okay, jokes aside...
Vibe coding is amazing for translating code to English! But at the end of the day if you let an AI run wild with no direction, it will;
Create spaghetti code at bestRemove useful code constantly at worst
This was a case of me having a simple problem, I could have made this MCP with a single prompt and have been done with it, but because I listened to what actual programmers advice, I continued to refine it. The initial version used an entirely different email parsing dependency called eml-extractor, which wasn't working in my use case at all, so I searched the hub and that got replaced with eml_parser. Eventually 4 tool calls became 2, and it all happened though "augmented AI use".
Anthropic is looking heavily into Augmentation vs Automation, you can read more here!
But in short;
Augmentation is a back and forth collaborationAutomation is a 'set it and forget it' system
Here's what they don't tell you: both are totally valid methods of creating code
You will only get out what you put in, I have spent entire DAYS augmenting a prompt with one model, to then automate a second AI to code it autonomously.
So yeah, vibe coding is easy! I mean the only problems I've had The only issues during vibe coding this tiny MCP:
First wrote the entire thing with filesystem one file at a time instead of using my custom sandbox (coming soon, hide your dingus-bots) that was literally designed for making stuff like this...
Installed the entirely wrong MCP dependency almost making it incompatible with its actual purpose
Suggested the wrong dependencies from the onset leading to a total restructure midway.
Kept trying install features the Claude sandbox would not permit.
Repeatedly reversed the load order causing the initial install to fail - between trying to delete all my other MCP links...
Literally forgot what a file structure was and spent a few minutes in a loop wondering what
/mnt/meant.Then failed to call the tool it literally just built.
See? IT'S EASY! ๐
License
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.Addendum
This MCP server primarily utilizes the following dependencies:
- [eml_parser](https://github.com/GOVCERT-LU/eml_parser) - **GNU GPL License** - Core email parsing engine
- [FastMCP](https://github.com/jlowin/fastmcp) - **Apache 2.0 License** - MCP server frameworkProject created through collaborative augmentation with Claude by Anthropic
All creative and administrative descisions are my own - all python code is AI generated
Haiku/Sonnet/Opus 4.5 were each used selectively through the proccess
Additional implimentations on file-handling are custom, though based on common coding practice
Available Tools
2 toolsextract_eml_attachmentsA
Extract attachments from .eml file with smart organization.
Organizes files into folders:
small_files/: Files <10KB (icons, signatures, etc.)
documents/: PDFs, Word docs, spreadsheets, presentations
images/: All image files (inline + regular)
attachments/: Everything else
| Name | Required | Description | Default |
|---|---|---|---|
| filepath | Yes | Path to the .eml file | |
| organize | No | Whether to organize into subfolders (default: True) | |
| create_zip | No | Create a zip file of all extracted content (default: False) | |
| output_dir | No | Directory to extract to (default: "eml_extracted") | eml_extracted |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It clearly discloses the side effect of creating folders and categorizing files (e.g., small_files/, documents/). It also specifies size thresholds and that inline images are included, providing useful behavioral context beyond the name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a single lead sentence followed by a bulleted list. Every sentence provides unique value, and the formatting improves scannability without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description adequately covers the core extraction and organization behavior, especially given an output schema exists to document return values. It lacks some edge-case context (e.g., overwrite behavior, permissions) but is sufficient for a straightforward extraction tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers 100% of parameters, but the description adds meaningful semantics for the `organize` parameter by detailing the exact folder structure and file categories. This enriches the schema's generic 'organize into subfolders' description, raising the score above the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: "Extract attachments from .eml file" with a specific verb and resource. It further distinguishes itself from the sibling tool parse_eml by focusing on attachments and providing a unique "smart organization" feature.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for extracting attachments from .eml files but provides no explicit guidance on when to prefer this tool over parse_eml. There are no exclusions or alternative tool comparisons, so the context is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
parse_emlA
Parse an .eml file and return metadata, content, and attachment info.
Does NOT extract attachment bytes - use extract_eml_attachments for that. Perfect for previewing what's in an email without bloat.
| Name | Required | Description | Default |
|---|---|---|---|
| filepath | Yes | Path to the .eml file |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses a key behavioral traitโthat attachment bytes are not extractedโand clarifies the return scope (metadata, content, attachment info). While it doesn't mention error conditions or file access details, it sufficiently explains what the tool does and does not do for a read-only parsing operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is highly concise: two sentences that front-load the core purpose, then add the critical caveat and a use-case recommendation. Every word earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no nested objects) and the presence of an output schema, the description provides complete context: what it returns, what it excludes, and when to use it. The sibling tool is also clearly differentiated, making the description sufficient for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers the single parameter with 100% coverage, providing a clear description ('Path to the .eml file'). The tool description does not add further parameter-specific semantics, but the schema already does the heavy lifting, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Parse an .eml file and return metadata, content, and attachment info.' It also distinguishes itself from the sibling tool by explicitly noting it does NOT extract attachment bytes, making its scope unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage direction: 'Perfect for previewing what's in an email without bloat.' It also tells the user when not to use it and points to the alternative tool: 'Does NOT extract attachment bytes - use extract_eml_attachments for that.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
The two tools have clearly distinct purposes: parse_eml provides a preview of email content and metadata, while extract_eml_attachments focuses solely on extracting attachment files. There is no overlap; the tool descriptions explicitly cross-reference each other to avoid confusion.
Both tool names follow a consistent verb_noun pattern with snake_case: parse_eml and extract_eml_attachments. The verbs 'parse' and 'extract' accurately describe the operations, and the nouns clearly identify the target resources.
With only two tools, the server feels thin even for a narrow domain like .eml handling. While each tool is valuable, the count is borderline and might warrant additional tools for a more complete workflow.
The two tools cover the primary read-oriented operations for .eml files: inspecting content and extracting attachments. Minor gaps exist, such as no ability to modify or create .eml files, but for the apparent purpose of parsing and extraction, the surface is reasonably complete.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Email safety MCP server. Detects phishing, prompt injection, CEO fraud for AI agents.
Email infrastructure for AI agents โ send, receive, search, and reply to email over MCP.
Email inboxes for AI agents: send, receive, reply, search, and manage threaded email over MCP.
MCP server for MailTempo's public free temporary email inboxes.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAn MCP server that enables AI models to read, search, and send emails via IMAP and SMTP protocols. It supports various providers like Gmail and Outlook, allowing for tasks such as retrieving unread messages, searching by sender, and managing mailbox folders.
- AlicenseAqualityDmaintenanceProvider-agnostic email MCP server that connects any IMAP mailbox to AI assistants, enabling email management through natural language.8AGPL 3.0
- FlicenseNot gradedqualityAmaintenanceMCP server for managing email archives as .eml files, synced with OneDrive, enabling AI assistants to read/write inbox, outbox, and drafts.161
- AlicenseNot gradedqualityFmaintenanceAn MCP server that receives emails on your domain and allows AI assistants to search, read, and manage them via natural language queries.1,236MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Totally-Harmless/DingusMail'
If you have feedback or need assistance with the MCP directory API, please join our Discord server