yahoo-mail-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| YAHOO_EMAIL | No | Your Yahoo email address | |
| YAHOO_ACCOUNTS | No | JSON array of account objects with name, email, app_password | |
| YAHOO_MAIL_MCP_DB | No | Path to SQLite database file | |
| YAHOO_ACCOUNT_NAME | No | A name for the account (e.g., personal) | |
| YAHOO_APP_PASSWORD | No | Yahoo app password | |
| YAHOO_MAIL_MCP_LOG_LEVEL | No | Python log level | |
| YAHOO_MAIL_MCP_BATCH_SIZE | No | IMAP fetch batch size | |
| YAHOO_MAIL_MCP_DELETE_THRESHOLD | No | Threshold for large move confirmation |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_accountsA | List configured Yahoo accounts with their folders and message counts. Connects to each account over IMAP, so this also verifies that the app passwords work. |
| scan_mailboxA | Scan a Yahoo account's folders, pulling header-level data only. Does all the heavy lifting internally: fetches sender, subject, date, size and List-Unsubscribe headers in batches, and persists them to the local database. Progress is checkpointed continuously, so if the scan is interrupted, calling this tool again resumes where it left off. Once a folder has been fully scanned, later calls only pick up new mail. By default scans all folders except Trash, Drafts and Sent. Pass
|
| get_scan_statusA | Show scan progress per folder (from checkpoints), without connecting to IMAP. |
| start_scan_jobA | Start a durable background header scan and return immediately. Use this for large scans from remote clients that impose request timeouts. Poll get_scan_job with the returned job_id. If the server restarts, starting a new job resumes from the stored IMAP checkpoints. |
| get_scan_jobB | Get status and, when complete, the result of one background scan. |
| list_scan_jobsC | List recent background scans, optionally filtered by status. |
| list_recent_messagesA | List recently scanned messages using cached headers only. Run scan_mailbox first. Results include account, folder, UID, UIDVALIDITY and a staleness field. Sender email is hidden by default; raw unsubscribe links and message bodies are never returned. |
| search_messagesA | Search cached message headers without connecting to IMAP. Free-text query matches subject, sender domain and sender email. Additional exact filters can narrow account, folder, sender, date, unsubscribe availability and decision. List results never expose raw unsubscribe URLs or message bodies. |
| list_unsubscribe_candidatesA | List sender domains with cached unsubscribe methods for one account.
|
| get_message_headersA | Get the cached headers for one exact account/folder/UID reference. Includes sender, subject, date, size, decision and safe unsubscribe method names. It never returns raw unsubscribe links or a message body. |
| list_sender_groupsA | List scanned mail grouped by account and sender domain. Every group includes its account. Pass |
| get_sender_detailA | Full detail for one sender domain: addresses, folder breakdown, up to 20 sample subjects, and unsubscribe methods for one account. |
| set_decisionsA | Batch-tag sender domains with account-scoped cleanup decisions. Each entry: {"account": "personal", "domain": "example.com",
"decision": "keep|unsubscribe|archive|delete|needs_review",
"notes": "optional"}. |
| export_review_csvB | Export all sender groups to a CSV for spreadsheet review. Edit the |
| import_review_csvA | Import decisions from a CSV previously produced by export_review_csv. Only account, sender_domain, decision and notes are read. Account may be omitted only when exactly one account is configured. |
| preview_cleanupA | Dry run for execute_decisions: exact counts of affected messages for one account and per domain, plus a confirm_token. Nothing in Yahoo Mail is modified. The token is required by execute_decisions for large Archive or Delete operations. |
| execute_decisionsA | Execute tagged decisions. THE ONLY DESTRUCTIVE TOOL.
decision="unsubscribe": for each domain tagged 'unsubscribe', performs RFC 8058 one-click POST or sends a mailto unsubscribe email. Plain http links are never auto-fetched; they are returned as manual items. Domains tagged 'keep' or 'needs_review' are never touched. |
| triage_new_mailB | Incrementally scan new mail since the last scan and triage it. Never deletes or unsubscribes anything. Returns:
|
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 18 tools
Each tool has a distinct purpose: scanning, listing, decision tagging, execution, export/import, etc. Even similar-sounding tools like list_sender_groups, list_unsubscribe_candidates, and list_recent_messages are clearly differentiated by their descriptions.
Most tools follow a verb_noun pattern (e.g., list_accounts, scan_mailbox, execute_decisions). Minor inconsistency with triage_new_mail (verb at start but not consistent with other patterns) and some tools lack a clear verb (e.g., get_scan_job vs. list_scan_jobs).
18 tools is appropriate for the email cleanup domain. The count covers the core workflow stages (scan, review, decide, execute) without being overwhelming or too sparse.
The tool set covers the full cleanup lifecycle: scanning, reviewing senders, tagging decisions, previewing, executing, and exporting/importing reviews. Minor gaps exist, such as undoing decisions or managing multiple cleanup passes, but core functionality is well-covered.