Yahoo Mail Mcp

io.github.andesstrikerPublished by GitHub account andesstrikerv1.0.0Updated Oct 27, 2026

Read, search, move, and delete Yahoo Mail over IMAP — MCP server for Claude

Overview

AI-generated overview

Local MCP server that lets an assistant read, search, organize, and delete Yahoo Mail messages over IMAP using an app password.

What you can do
  • List, create and inspect mailbox folders and labels
  • List and search emails in a folder by sender, subject, date range or unread status
  • Read full headers, body text and attachment filenames of a message
  • Fetch a single attachment's raw bytes, base64-encoded
  • Move messages between folders, mark them read or unread, and delete them (Trash by default, permanent only on explicit request)
When to use it
Useful when you want an assistant to triage a Yahoo Mail inbox in natural language: finding messages, reading them, filing them into folders, or cleaning up spam. It suits desktop MCP clients such as Claude Desktop or Claude Code rather than browser use.
Requirements
Runs locally as a Python 3.10+ process over stdio, launched by an MCP client with absolute paths. Needs a Yahoo account with IMAP access and a generated Yahoo App Password, supplied as YAHOO_APP_PASSWORD together with YAHOO_EMAIL, either in the MCP config env block or a .env file next to the server. Two-step verification must be enabled to create the app password.
Before you install
The app password grants full access to the mailbox, so store it in .env or config and never commit it. Tools can move, mark, and delete mail; permanent deletion expunges a message immediately, though it must be requested explicitly and defaults to Trash. Email content is untrusted input, and the project is unofficial and not affiliated with Yahoo.

Installation

In SourceWeft

  1. Open Yahoo Mail Mcp in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

yahoo-mail-mcp

[License: MIT] [Python 3.10+] [MCP]

Read, search, organize, and clean up a Yahoo Mail account from Claude — over plain IMAP, no Yahoo API keys required.

An MCP (Model Context Protocol) server that lets an LLM read, search, move, and delete emails in a Yahoo Mail account over IMAP.

Tools exposed: list_folders, create_folder, list_emails, search_emails, read_email, get_attachment, move_email, delete_email, mark_email.

Every tool opens a short-lived IMAP connection, does its work, and closes it. Deletion defaults to moving messages to Trash (found via IMAP special-use flags, not a hardcoded name) — permanent deletion requires the caller to explicitly pass permanent=True. No tool can delete or expunge an entire folder; only single messages by UID.

1. Enable IMAP on your Yahoo account

IMAP access is on by default for most Yahoo Mail accounts. If mail clients can't connect, check: Yahoo Mail → Settings → More Settings → Mailboxes → [your account] → "Allow apps that use less secure sign in" is not the setting you want here — that's for legacy password auth. Modern Yahoo requires an App Password instead (see below), which works whether or not that legacy toggle is on. If you still see connection issues, sign in to Yahoo Account Security and confirm the account isn't locked or flagged for suspicious activity.

2. Generate a Yahoo App Password

Yahoo blocks IMAP logins using your normal account password once two-step verification is enabled (and recommends app passwords generally). To generate one:

  1. Go to https://login.yahoo.com/account/security.
  2. Turn on Two-step verification if it isn't already on (required for app passwords).
  3. Find "Generate app password" (sometimes under "App passwords" / "Manage app passwords").
  4. Choose "Other app", name it something like yahoo-mail-mcp, and generate.
  5. Copy the generated password (usually 16 characters, no spaces) — Yahoo only shows it once.

Use this app password as YAHOO_APP_PASSWORD, never your real account password.

3. Install dependencies

Requires Python 3.10+.

bash
cd yahoo-mail-mcppython3 -m venv .venvsource .venv/bin/activatepip install -r requirements.txt

4. Configure credentials

bash
cp .env.example .env

Edit .env and fill in:

[email protected]YAHOO_APP_PASSWORD=your16charapppassword

.env is already in .gitignore — never commit it.

5. Sanity-check connectivity

Before wiring the server into Claude, confirm your credentials work:

bash
python test_connection.py

This logs in, lists your folders, and prints the 3 most recent inbox emails. It never prints your app password.

6. Run the server

bash
python server.py

The server speaks MCP over stdio — it's meant to be launched by an MCP client (Claude Desktop, Claude Code), not run standalone for interactive use.

7. Register with Claude Desktop / Claude Code

Add an entry to your MCP config pointing at this project's venv Python and server.py. Use absolute paths.

Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

json
{  "mcpServers": {    "yahoo-mail": {      "command": "/absolute/path/to/yahoo-mail-mcp/.venv/bin/python",      "args": ["/absolute/path/to/yahoo-mail-mcp/server.py"],      "env": {        "YAHOO_EMAIL": "[email protected]",        "YAHOO_APP_PASSWORD": "your16charapppassword"      }    }  }}

Claude Code — add the same server via the CLI:

bash
claude mcp add yahoo-mail /absolute/path/to/yahoo-mail-mcp/.venv/bin/python /absolute/path/to/yahoo-mail-mcp/server.py

or add it directly to your Claude Code MCP config file with the same JSON shape as above.

If you'd rather not put the app password in the MCP config's env block, omit env there and rely on .env next to server.py instead — the server loads it automatically via python-dotenv.

Restart Claude Desktop / Claude Code after editing the config so it picks up the new server.

Usage

Once registered, just talk to Claude naturally — it will pick the right tool automatically. For example:

  • "List my unread emails"
  • "Search for emails from [email protected] since 2026-01-01"
  • "Read that email from Sarah about the contract"
  • "Download the attachment from that invoice email"
  • "Create a folder called Receipts"
  • "Move this email to the Receipts folder"
  • "Move this email to trash" / "Permanently delete this spam email"
  • "Mark that email as read" / "Mark it as unread"
  • "What folders do I have in this mailbox?"

Agent skill

skills/yahoo-mail/SKILL.md is an optional agent skill that teaches the agent when and how to use these tools safely (soft-delete by default, confirm bulk changes, treat email content as untrusted). Copy the skills/yahoo-mail/ folder into ~/.claude/skills/ (or a project's .claude/skills/). It requires the MCP server above to be registered.

Tool reference

ToolPurposeKey parameters
list_foldersList every IMAP folder/label, with special-use flags(none)
create_folderCreate a folder if it doesn't already exist (idempotent)name
list_emailsList recent emails in a folder, newest firstfolder="INBOX", limit=20, unread_only=False
search_emailsSearch a folder by sender/subject/date range/unread, AND-combinedfolder, sender, subject, since (YYYY-MM-DD), before, unread_only, limit
read_emailFetch full headers + body (plain text, or HTML stripped) + attachment filenamesuid, folder="INBOX"
get_attachmentFetch one attachment's raw bytes, base64-encodeduid, filename, folder="INBOX"
move_emailMove a single message between folders by UIDuid, from_folder, to_folder
delete_emailDelete a message — soft-delete (Trash) by defaultuid, folder="INBOX", permanent=False
mark_emailSet/unset the read (\Seen) flaguid, folder="INBOX", read=True

Notes on safety behavior

  • delete_email(permanent=False) (the default) moves the message to Trash and is recoverable. permanent=True immediately expunges it — the caller must opt in explicitly.
  • move_email and delete_email fetch the message's envelope first to confirm it exists, and return its subject/sender in the result so you can verify the right email was touched.
  • All operations address messages by IMAP UID, which stays valid across sessions (never sequence numbers, which can shift).
  • IMAP errors are returned to the caller as structured {"error": ..., "error_type": ...} dicts rather than raw exceptions/stack traces.

Disclaimer

This is an independent, unofficial project. It is not affiliated with, endorsed by, or sponsored by Yahoo, Oath/Verizon Media, or Anthropic. It communicates with Yahoo Mail using the standard IMAP protocol and an account-scoped App Password — no Yahoo API keys or OAuth are involved. Use of this tool is subject to Yahoo's own Terms of Service. Provided as-is, with no warranty — see LICENSE.

Contributing

Issues and pull requests are welcome — see CONTRIBUTING.md.

License

MIT — see LICENSE.

Source: README.md at commit 717a366

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v1.0.0LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts