yahoo-mail-mcp-server
Click on "Deploy 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., "@yahoo-mail-mcp-serverlist my recent emails"
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.
yahoo-mail-mcp-server
An MCP server that gives Claude Desktop or Claude Code access to a Yahoo Mail account over IMAP/SMTP: list, search, read, and send email.
Tools
Tool | Description |
| List recent emails in a folder (default |
| Search by sender, subject substring, or unseen status. |
| Fetch the full text/HTML body of one email by UID. |
| Send an email from the configured account. |
Related MCP server: IMAP MCP Server
1. Generate a Yahoo App Password
Yahoo Mail requires an app password, not your normal account password, for third-party IMAP/SMTP access:
Go to Yahoo Account Security.
Enable two-step verification if it isn't already on.
Under "App passwords", generate a new one (e.g. name it
mcp-server).Copy the 16-character password — you won't be able to see it again.
Never use your real Yahoo login password here, and never commit it anywhere.
2. Install
git clone https://github.com/satishkovuru/yahoo-mail-mcp-server
cd yahoo-mail-mcp-server
npm install3. Configure credentials
Copy .env.example to .env and fill in your address and app password:
cp .env.example .envYAHOO_EMAIL=you@yahoo.com
YAHOO_APP_PASSWORD=your16charapppassword.env is gitignored — never commit real credentials.
4. Wire it into Claude Desktop / Claude Code
Add an entry to your MCP client config
(claude_desktop_config.json, found under %APPDATA%\Claude\ on Windows or
~/Library/Application Support/Claude/ on macOS; for Claude Code use its
.mcp.json or claude mcp add):
{
"mcpServers": {
"yahoo-mail": {
"command": "node",
"args": ["/absolute/path/to/yahoo-mail-mcp-server/src/index.js"],
"env": {
"YAHOO_EMAIL": "you@yahoo.com",
"YAHOO_APP_PASSWORD": "your16charapppassword"
}
}
}
}Credentials belong in the env block of your local config file, which stays
on your machine — never in a file you commit to a repository.
Restart Claude Desktop (or restart your Claude Code session) and the
yahoo-mail tools will be available.
Notes
Uses
imapflowfor IMAP,nodemailerfor SMTP, and the official@modelcontextprotocol/sdk.Default IMAP/SMTP hosts are Yahoo's (
imap.mail.yahoo.com,smtp.mail.yahoo.com); override viaYAHOO_IMAP_HOST,YAHOO_IMAP_PORT,YAHOO_SMTP_HOST,YAHOO_SMTP_PORTif needed.This project is not affiliated with or endorsed by Yahoo.
Available Tools
4 toolsget_emailC
Fetch the full content of one email by UID.
| Name | Required | Description | Default |
|---|---|---|---|
| uid | Yes | Message UID from list_emails/search_emails | |
| folder | No | INBOX |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and discloses almost nothing: it does not say whether the fetch marks the message as read, what permissions are required, what happens for an invalid UID or folder, or anything about the shape/size of the returned content. 'Full content' is the only behavioral hint.
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?
A single front-loaded sentence with zero filler. It is efficient, though arguably terse to the point of under-specification rather than genuinely well-proportioned.
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?
With no annotations and no output schema, the description should explain what 'full content' means (headers, body, attachments, HTML vs text) and cover the folder parameter. Neither is addressed, leaving real gaps for an agent to call this 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?
Schema description coverage is 50%: uid is documented but folder is not, and the description adds no meaning for either parameter. Critically, it never mentions the folder parameter or its INBOX default, which materially affects which message is returned.
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 states a specific verb ('Fetch') and resource ('full content of one email') plus the lookup key ('by UID'), which clearly separates it from list_emails and search_emails that return collections. It stops short of naming those siblings explicitly, so it is clear but not maximally differentiated.
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?
There is no statement of when to use this tool versus list_emails or search_emails, nor any prerequisite guidance such as needing a UID obtained from those tools. The schema comment hints at the source of the UID, but the description itself offers no usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_emailsA
List recent emails in a Yahoo Mail folder (default INBOX), most recent first.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| folder | No | IMAP folder name | INBOX |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the burden. It discloses ordering (most recent first) and default folder behavior, but omits read-only safety confirmation, pagination/offset behavior, and what happens when limit is exceeded.
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?
One sentence, front-loaded with the verb and resource, everything earns its place. No filler.
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?
For a simple read-only list tool this is adequate, but with no annotations and no output schema the description should confirm read-only nature and pagination/return shape. It leaves those gaps.
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?
Schema coverage is 50%: folder has a description in-schema, but limit has none (only default/min/max). The description adds the default INBOX behavior, matching the schema default, but no meaning for limit beyond the numeric bounds.
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?
States a specific verb (List) and resource (emails) with scope (recent, in a folder, most recent first). Distinguishable from siblings: search_emails queries, get_email fetches one, send_email writes.
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?
Implies usage for browsing recent mail, but never states when to use this versus search_emails, nor any exclusions (e.g., pagination limits, older mail). Usage is only inferred from the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_emailsC
Search emails in a folder by sender, subject substring, or unseen status.
| Name | Required | Description | Default |
|---|---|---|---|
| from | No | Filter by sender address/name | |
| limit | No | ||
| folder | No | INBOX | |
| subject | No | Filter by subject substring | |
| unseenOnly | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Search' implies a read-only operation, but the description says nothing about pagination, result ordering, the default 10-item limit, or what happens with multiple filters combined. For a tool with zero annotation coverage, this leaves significant gaps.
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?
A single front-loaded sentence with no filler; the filter dimensions are listed immediately after the verb+resource. Nothing is wasted, and the reader gets the core capability in one pass.
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?
With 5 parameters, 40% schema coverage, no annotations, and no output schema, one sentence is not enough. The description omits how results are bounded (limit/default 10/max 50), how filters combine, and what a result contains, all of which an agent needs to invoke and interpret this tool 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?
Schema description coverage is 40% (only 'from' and 'subject' are documented), so the description must compensate. It does name sender, subject, folder, and unseen status, which maps meaning onto the undocumented folder and unseenOnly parameters, but it omits the limit/pagination parameter entirely and adds no syntax hints (e.g. substring matching, case sensitivity).
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?
States a specific verb (search) and resource (emails) plus the filter dimensions it supports (sender, subject substring, unseen status). However, it never distinguishes itself from the sibling list_emails, which is the obvious alternative for enumerating a folder's contents, so an agent must infer the search-vs-list boundary.
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?
There is no guidance on when to use this tool versus list_emails, get_email, or any other sibling, and no mention of prerequisites or when-not-to-use. The only usage signal is the implied 'use this if you want to filter,' which is weak given the near-identical sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_emailC
Send an email from the configured Yahoo Mail account.
| Name | Required | Description | Default |
|---|---|---|---|
| cc | No | ||
| to | Yes | ||
| bcc | No | ||
| body | Yes | ||
| subject | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It indicates that an email is sent from the configured Yahoo account, but it does not disclose side effects, whether the action is reversible, authentication requirements, rate limits, or what happens on failure. The only behavioral context is the configured account scope.
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 a single, front-loaded sentence with no filler. It is concise and easy to parse, though its extreme brevity contributes to incompleteness rather than being a model of efficient specification.
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 five parameters with zero schema coverage, no annotations, and no output schema, the description is far too thin. It communicates the basic action but omits parameter semantics, usage guidance, and behavioral details needed to invoke the tool correctly. It is not entirely absent, but it is substantially incomplete.
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?
Schema description coverage is 0% and the description mentions no parameter names, formats, or constraints. Five parameters exist (to, subject, body, cc, bcc), yet the description adds no meaning beyond the tool's basic purpose. It does not compensate for the complete lack of schema descriptions.
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 gives a specific verb and resource: 'Send an email'. It also scopes the action to the 'configured Yahoo Mail account', so the agent knows this is a write operation using the existing mail configuration. Sibling tools are all read operations (list_emails, search_emails, get_email), so differentiation is implicit but not explicitly stated.
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 provides no guidance on when to use this tool versus alternatives. It does not mention any preconditions beyond the configured account, nor does it distinguish sending from listing, searching, or getting emails. Usage is left to the agent's inference from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
v1.0.0- First observed
get_email - First observed
list_emails - First observed
search_emails - First observed
send_email
TDQS
Scored across 4 tools
list_emails and search_emails both return email lists, but search_emails adds filtering criteria while list_emails is purely chronological. get_email and send_email target distinct resources and actions, making overall selection clear.
All tools follow a consistent verb_noun pattern (list_emails, search_emails, get_email, send_email). The convention is predictable and easy to scan.
Four tools provide a focused core for basic email interaction without bloat. It is slightly thin for a full email client, but each tool earns its place.
Core read and send operations are covered, but common email lifecycle actions like delete, mark read/unread, move, and list folders are missing. Agents can handle simple tasks but will hit dead ends for routine mailbox management.
Maintenance
Related MCP Connectors
Connect any mailbox to Claude, ChatGPT & AI: read, send, reply, schedule & search emails.
Email infrastructure for AI agents — send, receive, search, and reply to email over MCP.
Manage Gmail end-to-end: search, read, send, draft, label, and organize threads. Automate workflow…
Email inboxes for AI agents: send, receive, reply, search, and manage threaded email over MCP.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables LLMs to read, search, and send emails through Yahoo Mail using secure OAuth2 authentication.-
- AlicenseAqualityAmaintenanceEnables Claude to interact with email accounts via IMAP and SMTP, providing tools for searching, reading, sending, and managing emails across multiple providers.40393 npm94MIT
- FlicenseNot gradedqualityBmaintenanceEnables Claude to read, search, draft, send, flag, and move email across multiple IMAP/SMTP mailboxes while keeping credentials local.-
- FlicenseAqualityDmaintenanceEnables users to manage their Yahoo Mail account through natural language, including listing, reading, searching, deleting, archiving, flagging, and moving emails via IMAP. Supports both local Claude Desktop integration and remote access with secure OAuth 2.0 authentication.11-