Yahoo Mail MCP Server
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., "@Yahoo Mail MCP Servershow my unread emails from yesterday"
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
Yahoo Mail MCP server for Claude and other MCP clients.
This server supports two modes:
stdio+ Yahoo app password for local desktop usesse+ delegated Yahoo OAuth for remote Claude connector use
The remote OAuth flow is the important part here: the user connects your MCP URL in Claude, Claude starts MCP OAuth, your server redirects the user to Yahoo consent, Yahoo redirects back to your server, and your server finishes the MCP OAuth flow back to Claude. The user never has to paste a Yahoo app password into Claude.
What’s included
Yahoo IMAP access with OAuth-backed remote auth
MCP OAuth endpoints for remote connector login
Yahoo consent redirect flow
IMAP XOAUTH2 login for per-user mailbox access
UID-based email operations
Tools:
list_emailsread_emailsearch_emailslist_foldersdelete_emailsarchive_emailsmark_as_readmark_as_unreadflag_emailsunflag_emailsmove_emailsdraft_email
Related MCP server: mcp-email-server
Auth model
1. Local mode
Use this when running through stdio.
Requires
YAHOO_EMAILRequires
YAHOO_APP_PASSWORD
2. Remote Claude connector mode
Use this when hosting the server over HTTP/SSE.
Requires
YAHOO_CLIENT_IDRequires
YAHOO_CLIENT_SECRETUser signs into Yahoo in the browser
User grants Yahoo Mail permissions
Claude receives MCP access/refresh tokens from this server
This server stores Yahoo refresh/access tokens in memory and uses IMAP XOAUTH2
Important production note
Current token/session storage is in-memory.
That means:
reconnect is required after process restart or redeploy
multi-instance deployments need a shared store like Redis or a database
If you want true long-lived production sessions across deploys, move:
pendingYahooAuthorizationsmcpAuthCodesmcpAccessTokensmcpRefreshTokensyahooSessions
into a persistent shared store.
Yahoo app setup
Create a Yahoo developer app and enable the permissions your server needs.
Recommended permissions:
OpenID
EmailOpenID
Profile(optional but useful)Yahoo Mail read access
Yahoo Mail write access
Default requested scopes in this server:
YAHOO_SCOPES="openid email mail-r mail-w"If Yahoo requires approval for restricted mail scopes on your app, complete that in Yahoo Developer first.
Your Yahoo callback URL should point to:
https://your-domain.com/oauth/callbackFor local testing:
http://localhost:3000/oauth/callbackEnvironment variables
Remote OAuth mode
TRANSPORT_MODE=sse
PORT=3000
YAHOO_CLIENT_ID=your-yahoo-client-id
YAHOO_CLIENT_SECRET=your-yahoo-client-secret
YAHOO_SCOPES=openid email mail-r mail-w
# Optional but recommended behind proxies/platforms
PUBLIC_BASE_URL=https://your-domain.comLocal stdio mode
TRANSPORT_MODE=stdio
YAHOO_EMAIL=your.email@yahoo.com
YAHOO_APP_PASSWORD=your-yahoo-app-passwordQuick start
npm install
cp .env.example .envRun local stdio mode
npm run start:stdioRun remote SSE mode
npm run start:sseClaude remote connector setup
After deploying the server:
Deploy this repo on Render
In Render environment variables, set:
TRANSPORT_MODE=sse
PUBLIC_BASE_URL=https://your-render-service.onrender.com
YAHOO_CLIENT_ID=...
YAHOO_CLIENT_SECRET=...
YAHOO_SCOPES=openid email mail-r mail-wAdd the remote MCP URL in Claude
Use your SSE endpoint:
https://your-domain.com/mcp/sseClaude discovers the MCP auth metadata
Claude opens the server authorization flow
Your server redirects the user to Yahoo
User approves Yahoo Mail permissions
Yahoo redirects back to your server
Your server completes MCP OAuth and Claude marks the connector connected
For your exact use case, yes — this is the intended path:
deploy once on Render
use the Render URL in Claude cloud connector
user clicks connect
user signs into Yahoo and accepts permissions
Claude stores the connector session
later tool calls use Yahoo OAuth without asking the user for an app password
HTTP endpoints
GET /healthGET /mcp/ssePOST /mcp/messageGET /.well-known/openid-configurationGET /.well-known/oauth-authorization-serverGET /.well-known/oauth-authorization-server/mcp/sseGET /.well-known/oauth-protected-resourceGET /.well-known/oauth-protected-resource/mcp/ssePOST /registerGET /oauth/authorizePOST /oauth/tokenGET /oauth/callback
Local smoke tests
npm run test:health
npm run test:sseYou can also inspect metadata in OAuth mode:
curl http://localhost:3000/.well-known/oauth-authorization-server
curl http://localhost:3000/.well-known/oauth-protected-resource/mcp/sseDeployment notes
Render / Fly / any HTTPS host
set
TRANSPORT_MODE=sseset
YAHOO_CLIENT_IDset
YAHOO_CLIENT_SECRETset
PUBLIC_BASE_URLset Yahoo app callback to
https://your-domain.com/oauth/callbackdo not rely on in-memory sessions for multi-instance production
CORS / proxies
The server already enables permissive CORS for remote MCP clients and respects proxy protocol headers.
How the new remote auth works internally
Claude hits
/mcp/sseServer challenges with
WWW-Authenticateand protected resource metadataClaude discovers
/oauth/authorize,/oauth/token,/registerServer receives MCP auth request
Server redirects user to Yahoo
Yahoo returns code to
/oauth/callbackServer exchanges Yahoo code for Yahoo access/refresh tokens
Server creates its own MCP auth code for Claude
Claude exchanges that code at
/oauth/tokenClaude uses the returned MCP access token on future MCP requests
Tool calls use the mapped Yahoo session and IMAP XOAUTH2
Files to check
server.js.env.exampledocker-compose.ymlrender.yamlfly.toml
Current limitations
token/session storage is in-memory
stdio mode still uses app password, not browser OAuth
remote Yahoo OAuth depends on your Yahoo app having required mail scopes enabled
Version
Current implementation version: 4.0.0
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
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/mayur200904/Email_MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server