mail-triage
Monitors Gmail accounts via IMAP for incoming mail, extracts verification codes, triages messages, supports inbox search, and can send email via authenticated SMTP.
Provides a single-user Telegram bot gateway for OTP notifications and commands such as /otp, /status, /recent, /search, /ping, and /help.
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
Mail Triage & Verification Aggregation Daemon
Autonomous, privacy-first multi-account email triage service and Model Context Protocol (MCP) gateway designed for edge devices (Raspberry Pi, Linux home servers) and autonomous AI agent workflows (Google Antigravity, Claude Desktop, Cursor).
Architecture Overview
flowchart TD
subgraph Inboxes["Monitored Email Accounts"]
G1["Gmail Accounts"]
Y1["Yandex Mail"]
U1["University / Corporate IMAP"]
end
subgraph Daemon["mail-triage-daemon (Raspberry Pi / Edge Server)"]
W["Async IMAP Workers (IDLE + 20s Polling Fallback)"]
P["MIME Parser & HTML Sanitizer"]
subgraph Triage["Triage Pipeline"]
T0["Tier 0: Deterministic OTP Engine (< 1ms)"]
T1["Tier 1: Bulk & Marketing RFC Header Discard"]
T2["Tier 2: Semantic Intent Classifier"]
end
DB[("SQLite State Storage (state.db)")]
API["Embedded REST API (:8766)"]
TG["Telegram Notifier & Command Gateway"]
end
subgraph Clients["Clients & Integration Gateways"]
User["User Telegram Client (Strict ACL Lock)"]
MCP["FastMCP Server (stdio / LAN)"]
Agent["Antigravity / Claude Agentic Coding AI"]
end
Inboxes --> W
W --> P
P --> T0
T0 -- "Code Detected" --> DB
T0 -- "Code Detected" --> TG
T0 -- "No Code" --> T1
T1 -- "Marketing / Newsletter" --> DB
T1 -- "Candidate Message" --> T2
T2 -- "Career / Academic / Security" --> TG
T2 --> DB
DB <--> API
API <--> MCP
MCP <--> Agent
TG <--> UserRelated MCP server: work-assistant
Core Capabilities
Sub-Millisecond Deterministic OTP Extraction: Zero LLM inference latency (< 1ms execution time). Regex engine identifies Russian and English 2FA codes, account confirmation tokens, and Steam Guard keys while strictly eliminating false positives such as calendar years and phone numbers.
IMAP IDLE Event Driven: Subscribes to unsolicited server pushes over persistent TLS connections, falling back to gentle 20-second poll cycles to ensure reliable message delivery even with non-standard IMAP implementations.
Strict Single-User Telegram Gateway: All notifications and interactive bot controls are cryptographically locked to a single authorized user ID (
allowed_user_id). Unauthorized interactions from external users are silently dropped without response.Embedded REST API: Exposes lightweight local endpoints (
:8766) for health checks, unread statistics, remote IMAP search, and authenticated SMTP dispatch.Model Context Protocol (MCP) Native: Equips autonomous AI developer agents with tools to retrieve verification codes, search inboxes during automated logins, and inspect recent email traffic without cloud dependencies.
Resilient Edge Deployment: Minimal RAM footprint (< 45 MB RSS), optimized for continuous 24/7 background operation via
systemdon Raspberry Pi 4B/5 or Linux home servers.
Telegram Bot Interface
The dedicated bot acts as an edge notifications dashboard and interactive control center.
Command | Description |
| Display the most recent 2FA / OTP verification code with 1-tap copyable formatting |
| Report daemon uptime, total processed messages, OTP extraction count, and mailbox states |
| List the most recently processed and triaged emails with category tags |
| Perform real-time IMAP search across all active inboxes (supports Cyrillic and UTF-8 queries) |
| Healthcheck response verification ( |
| Detailed command reference and system documentation |
Model Context Protocol (MCP) Server
The daemon includes an MCP server implementation (mcp_server.py) powered by FastMCP.
Available Tools
mail_get_latest_otp(service_name: str = ""): Fetches the most recent verification code received within the last 15 minutes. Ideal for autonomous browser automation and registration workflows.mail_search_messages(query: str, account_id: str = "", limit: int = 5): Performs live IMAP search across configured mailboxes matching keywords, subject, or sender.mail_send_message(to: str, subject: str, body: str, account_id: str = ""): Sends an email message via authenticated SMTP using the configured accounts.mail_list_recent(limit: int = 10, category: str = ""): Returns recently processed triage events directly from local SQLite cache without network latency.mail_get_system_status(): Queries daemon uptime, memory health, and active IMAP listener connections.
Antigravity / Claude Desktop Configuration
Add the server to your mcp_config.json:
{
"mcpServers": {
"mail-triage": {
"command": "python",
"args": [
"/path/to/mail-triage-daemon/mcp_server.py"
],
"env": {
"MAIL_DAEMON_URL": "http://192.168.0.114:8766"
}
}
}
}Installation & Setup
Prerequisites
Python 3.10+
Linux environment (Debian, Ubuntu, Raspberry Pi OS, Arch)
Dedicated Telegram Bot token (from
@BotFather)
1. Clone & Dependencies
git clone https://github.com/ijstt/mail-triage-daemon.git
cd mail-triage-daemon
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt2. Configuration
Copy the example configuration and populate your mailbox credentials:
cp config/accounts.example.json config/accounts.json
chmod 600 config/accounts.jsonEdit config/accounts.json:
{
"api_port": 8766,
"db_path": "storage/state.db",
"telegram": {
"bot_token": "YOUR_TELEGRAM_BOT_TOKEN",
"allowed_user_id": 123456789,
"topic_otp": null,
"topic_career": null,
"topic_academic": null,
"topic_digest": null
},
"accounts": [
{
"id": "gmail_primary",
"email": "username@gmail.com",
"password": "your_google_app_password",
"host": "imap.gmail.com",
"port": 993,
"ssl": true,
"enabled": true
}
]
}3. Running as a Systemd Service
To ensure continuous background operation on your edge host:
sudo cp systemd/mail-triage.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now mail-triage.service
sudo systemctl status mail-triage.serviceTesting
Run the test suite covering deterministic OTP extraction, UTF-8 Cyrillic parsing, and classification tiers:
PYTHONPATH=. python tests/test_triage.pySecurity & Privacy Invariants
Zero Cloud Relay: Email bodies and extracted credentials are processed strictly in-memory on the local host.
Encrypted Local Storage: Only metadata (Message-ID, timestamp, category, subject) and short-lived OTP tokens are cached in SQLite.
Single Owner Isolation: Hardcoded ACL enforcement prevents multi-user leakage in shared or public Telegram environments.
License
MIT License. See LICENSE for details.
This server cannot be deployed
Maintenance
Related MCP Connectors
Email for AI agents: read, search and send from your Gmail, Outlook, Yahoo, iCloud or IMAP inbox.
Email infrastructure for AI agents — send, receive, search, and reply to email over MCP.
Task-scoped email inboxes for AI agents: read mail, extract verification codes, and reply.
Email inboxes for AI agents: send, reply, read verification codes, human-approved drafts.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to manage multiple email accounts with secure credentials, local full-text search, thread-aware replies, and automation.4 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to search and read a local, provider-independent email archive, reconstruct contacts and interactions, and prepare draft responses without sending anything.1MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI assistants to read, search, send, schedule, and organize email across multiple IMAP/SMTP accounts, including drafts, provider-aware labels, real-time inbox watching, verification-code capture, and analytics. Supports OAuth2, calendar extraction, and both local stdio and networked Streamable HTTP access.27 npmISC
- AlicenseNot gradedqualityAmaintenanceEnables AI assistants to read, search, send, reply, forward, schedule, and analyze email across multiple IMAP/SMTP accounts, with drafts and templates, provider-aware labels and bulk operations, calendar extraction, real-time inbox watching with AI triage, and verification-code capture. Exposes 52 tools, 7 prompts, and 6 resources over stdio or Streamable HTTP, with OAuth2 support for Gmail and Microsoft 365.27 npmISC