
Email MCP Server by codefuturist: Setup for Claude, Cursor and More
Lets Claude or Cursor read, search, send and organize email in any IMAP/SMTP account.
This is a community server by codefuturist, not made by an email provider. It runs on your computer and signs in to your mailbox with your email address and an app password. Run the setup command first to save your account, then add the server to your app.
It can send mail and delete mail. Turn on the read-only switch if you only want it to read.
Good for
- People who want an assistant to triage and answer their inbox
- Users of Gmail, Outlook, Fastmail, iCloud or ProtonMail who want one setup for all
- Developers who need scheduled sends and verification-code lookup
Works in
12 should work
Tap an app to see how to set it up and any known problems.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Client does not support this transport.
Client does not support this transport.
Install @codefuturist/email MCP
Claude Code
- 1
Copy this prompt.
Add the @codefuturist/email MCP server to Claude Code. Run this command: claude mcp add email -- npx -y @codefuturist/email-mcp stdio Then check that it loaded and tell me if I need to sign in or restart.
- 2
Paste it into Claude Code. It shows the change and asks before running it.
Requires Node.js, Node.js 24+, Run setup first.
Read-only mode: Add the environment variable MCP_EMAIL_READ_ONLY=true to the server entry. It removes the send, move, delete, label and bulk tools.
Run the guided setup once before you add the server: npx @codefuturist/email-mcp setup. It saves your account to ~/.config/email-mcp/config.toml. The server then starts with the stdio subcommand, which the config above includes. For one account you can use the MCP_EMAIL_* variables instead of setup. Use an app password for Gmail, Outlook and iCloud. The commands other than Claude Desktop and VS Code are adapted from the README by us.
Built from the package data we hold. Not yet tested by us.
Tools
Lists your folders with unread counts
Shows every folder in an account with how many messages are unread and which is Inbox, Sent or Trash.
Try: “Show my folders and how many unread each has.”
Read ·
list_mailboxesLists recent emails in a folder
Pages through a folder with filters and shows read, flagged, replied and attachment marks. Newsletters and automated mail are tagged.
Try: “Show my 20 newest unread emails in the Inbox.”
Read ·
list_emailsReads one full email
Fetches the whole message without marking it as read. You can ask for plain text, text without quoted replies, or the full form.
Try: “Open the latest email from Sarah and summarise it.”
Read ·
get_emailReads up to 20 emails at once
Fetches several full messages in one call, up to 20. Useful for triage and summaries.
Try: “Read my 10 newest unread emails and tell me which need a reply.”
Read ·
get_emailsChecks if an email is read, flagged or labelled
Returns the read, flag and label state of one message without its body. Cheaper than opening the email.
Try: “Is the invoice email from Monday still unread?”
Read ·
get_email_statusSearches mail by keyword or filter
Searches subject, sender and body, and attachment filenames when the local mirror is on. With no keyword it works as a plain filter.
Try: “Find emails about the Q3 report from last month.”
Read ·
search_emailsReads a whole conversation
Rebuilds a thread from its reply headers and returns all related messages without marking them read.
Try: “Show the full thread about the contract renewal.”
Read ·
get_threadGets an attachment from an email
Downloads one attachment by filename or part id and returns it as base64. It can also save the file to a download folder if you set one.
Try: “Download the PDF attached to the latest invoice email.”
Files ·
download_attachmentLists people you email most
Builds a list of unique contacts from recent email headers, sorted by how often they appear.
Try: “Who do I email most often this month?”
Read ·
extract_contactsShows mailbox volume and top senders
Reports email volume, top senders, daily trends and read and flagged counts for a folder.
Try: “Who sends me the most email and on which days?”
Read ·
get_email_statsSends a new email
Sends a new message with plain text or HTML, CC and BCC. A rate limit of 10 sends a minute applies by default.
Try: “Email tom@example.com that the meeting moves to 3pm.”
Write ·
send_emailReplies to an email
Sends a reply with correct threading and quotes the original by default. It sends right away.
Try: “Reply to Anna and say I can do Thursday.”
Write ·
reply_emailForwards an email
Forwards a message to new recipients with your note on top. Attachments are re-attached unless you turn that off.
Try: “Forward the flight confirmation to my assistant.”
Write ·
forward_emailSaves an email as a draft
Stores a draft in your Drafts folder so you can finish it later.
Try: “Draft a reply to the vendor but do not send it.”
Write ·
save_draftSends a saved draft
Sends a draft from your Drafts folder and then removes it from there.
Try: “Send the draft I saved to the vendor.”
Delete ·
send_draftSends an email at a later time
Queues an email on your machine and sends it when the time comes. The server must be running then.
Try: “Schedule this email to send tomorrow at 9am.”
Write ·
schedule_emailLists emails waiting to be sent
Shows scheduled emails that are pending, already sent, or both.
Try: “What emails do I have scheduled?”
Read ·
list_scheduledCancels a scheduled email
Removes a queued email and deletes its draft.
Try: “Cancel the scheduled email to the vendor.”
Delete ·
cancel_scheduledMoves an email to another folder
Moves a message to a folder you name. The source must be a real folder, not a virtual one.
Try: “Move the receipts from today into the Receipts folder.”
Write ·
move_emailDeletes an email
Moves a message to Trash by default. With the permanent option it deletes it for good.
Try: “Delete the spam email from this morning.”
Delete ·
delete_emailMarks mail read, unread or flagged
Changes the read and flag state of a message. Repeating it does nothing extra.
Try: “Mark all emails from the bank as read.”
Write ·
mark_emailChanges up to 100 emails at once
Marks, flags, moves or deletes a list of messages in one call, up to 100. Returns how many worked.
Try: “Move these 40 newsletters to the Archive folder.”
Delete ·
bulk_actionCreates a folder
Makes a new mailbox. Use a slash for nested folders like Work/Projects.
Try: “Create a folder called Work/Invoices.”
Write ·
create_mailboxRenames a folder
Changes the name of an existing mailbox.
Try: “Rename the folder Old to Archive 2023.”
Write ·
rename_mailboxDeletes a folder and its mail
Permanently deletes a folder and every message in it. The tool itself warns this cannot be undone.
Try: “Delete the empty folder Temp.”
Delete ·
delete_mailboxLists labels
Shows the labels for an account. It handles Gmail labels, ProtonMail label folders and plain IMAP keywords.
Try: “What labels do I have?”
Read ·
list_labelsPuts a label on an email
Adds a label to a message. On ProtonMail it copies the mail into the label folder.
Try: “Label the contract email as Legal.”
Write ·
add_labelTakes a label off an email
Removes a label from a message. On ProtonMail it removes the copy from the label folder.
Try: “Remove the Urgent label from this email.”
Write ·
remove_labelCreates a label
Makes a new label. For plain IMAP it does nothing because labels appear on first use.
Try: “Create a label called Follow-up.”
Write ·
create_labelDeletes a label
Deletes a label folder on ProtonMail. On plain IMAP it cannot delete server-wide and points you to remove it per email.
Try: “Delete the label Old Projects.”
Delete ·
delete_labelLists email templates
Shows the templates stored as files in your config folder.
Try: “What email templates do I have?”
Files ·
list_templatesFills in a template
Fills a template with your values. You can preview it, save it as a draft or send it right away.
Try: “Use the follow-up template for Acme and preview it.”
Write ·
apply_templateFinds a sign-in code in your mail
Looks for the newest one-time code or magic link in recent mail and can wait up to 45 seconds for it to arrive.
Try: “Get the verification code that was just emailed to me.”
Read ·
get_verification_codeChanges code-catching settings
Updates the verification settings while running, and can save them to your config file with a backup.
Try: “Turn on automatic catching of verification codes.”
Write ·
configure_verificationLists AI triage presets
Shows the built-in triage presets with a description and suggested labels each.
Try: “What triage presets are available?”
Read ·
list_presetsShows AI triage settings
Returns the current preset, rules and custom instructions for AI triage.
Try: “Show my current triage rules.”
Read ·
get_hooks_configChanges alert settings
Updates notification settings on the fly, and can save them to your config file.
Try: “Turn off alert sounds.”
Write ·
configure_alertsReads an invite inside an email
Pulls the event details out of a calendar invite in a message: time, place, attendees and status.
Try: “What are the details of the meeting invite in this email?”
Read ·
extract_calendarSpots events and to-dos in an email
Checks whether a message holds an event or a reminder-worthy task so the assistant can decide what to create.
Try: “Does this email contain anything I should put in my calendar?”
Read ·
analyze_email_for_schedulingLists your local calendars
Shows the calendars in Calendar.app on macOS or the default one on Linux.
Try: “Which calendars do I have?”
Read ·
list_calendarsSearches your local calendar
Lists calendar events by title, date range or calendar so you can avoid duplicates.
Try: “What is on my calendar next week?”
Read ·
list_eventsAdds an email event to your calendar
Creates a calendar event from a message, with meeting link, dial-in and attendees. On macOS a confirmation dialog appears first.
Try: “Add the meeting from this email to my calendar.”
Runs code ·
add_to_calendarLists macOS Reminders
Shows reminders from Reminders.app, by default only the open ones.
Try: “What reminders do I have open?”
Read ·
list_remindersCreates a reminder from an email
Adds a reminder in macOS Reminders with a link back to the email. A confirmation dialog appears first.
Try: “Remind me to answer this email on Friday.”
Runs code ·
create_reminderUsed by the assistant behind the scenes
Shows which email accounts are set up
Lists the email accounts in your config. The assistant calls it first to learn the account names.
Try: “Which email accounts do you have access to?”
Read ·
list_accountsFinds the real folder of an email
Finds the actual folder a message sits in when it was found in a virtual one like All Mail. Needed before moving or deleting it.
Try: “Which folder is this email really in?”
Read ·
find_email_folderChecks connections and cache
Tests the connection, quota and features of each account and reports local cache size and hit rate. Use it to find setup problems.
Try: “Is my email connection healthy?”
Read ·
check_healthChecks code-to-clipboard setup
Tests whether caught verification codes can be copied to your clipboard. With the test option it writes a harmless test value.
Try: “Is the clipboard setup for codes working?”
Write ·
check_clipboard_setupShows live mail watcher status
Reports the state of the connections that watch your inbox for new mail.
Try: “Is the inbox watcher running?”
Read ·
get_watcher_statusChecks desktop notifications
Tests whether your system can show desktop notifications and gives setup steps.
Try: “Can this server show desktop notifications?”
Read ·
check_notification_setupShows a test notification
Pops up a desktop notification to confirm permissions work.
Try: “Send me a test notification.”
Runs code ·
test_notificationChecks calendar access
Reports whether the local calendar app can be reached and how to grant access on macOS.
Try: “Can you access my calendar?”
Read ·
check_calendar_permissions
Read from the source code
Permissions
high risk · 5 things to watch
High risk
It can send email from your account and permanently delete mail, folders and labels. Set MCP_EMAIL_READ_ONLY=true unless you want your assistant to send or delete.
What it can do
- Read your data
- Create and change things
- Delete things
- Read-only modeHow to turn it on
Watch out for
It can send and permanently delete email
send_email, reply_email and forward_email send at once, and delete_email, delete_mailbox and bulk_action can remove mail for good. Set MCP_EMAIL_READ_ONLY=true unless you need these. github.com
Your mail password can sit in plain text
The password field takes a literal app password, a keychain: reference (macOS Keychain or Linux libsecret) or an env: reference. A literal value is stored in ~/.config/email-mcp/config.toml, which the README says is written with 0600 permissions. If you pass MCP_EMAIL_PASSWORD in your app's MCP config instead, the password sits in that file. Prefer the keychain option. github.com
Read-only mode still allows some writes
Read-only removes the mailbox-write tools only. add_to_calendar, create_reminder, configure_verification and configure_alerts stay available. github.com
It keeps a local copy of your mail
Reads are served from a local SQLite mirror of your mail and attachments on your disk. Protect the disk and delete the cache if you stop using it. github.com
The optional HTTP mode needs a token
Streamable HTTP binds to 127.0.0.1 by default. If you bind it to another address, set a token with the --token option. github.com
Security advisories
No published security advisories as of Nov 1, 2026.
Technical details
| Turning on read-only | Set MCP_EMAIL_READ_ONLY=true. It unregisters the mailbox-write tools (send, move, delete, labels, bulk). Calendar and Reminders writes, clipboard copy and config-writing tools stay available. |
|---|---|
| Talks to | Your own IMAP and SMTP servers |
| Sign-in and keys | Config file at ~/.config/email-mcp/config.toml (0600). The password field is a literal app password, a keychain: reference (macOS Keychain or Linux libsecret) or an env: reference; the setup command offers to use the keychain. |
| Scopes |
|
Questions
Is the email MCP server official?
No. It is a community project by codefuturist and is not made by Gmail, Outlook or any other email provider. It uses the standard IMAP and SMTP protocols.
Which email providers does it work with?
Any provider with IMAP and SMTP. The README lists auto-detection for Gmail, Outlook, Yahoo, iCloud, Fastmail, ProtonMail, Zoho and GMX.
Do I need an API key?
No key. You give it your email address and a password or app password, in a config file or in environment variables. Gmail and Microsoft 365 sign-in with OAuth2 is marked experimental.
Can I make it read-only?
Yes. Set MCP_EMAIL_READ_ONLY=true and the send, move, delete, label and bulk tools are not registered. Some calendar, reminder and settings tools stay available.
Can it delete my emails?
Yes. delete_email moves mail to Trash, or deletes it for good if asked. It can also delete folders and labels, so use read-only mode if you do not want that.
Does it run on my computer or in the cloud?
On your computer. It talks straight to your mail provider. The calendar and Reminders tools use macOS apps (Calendar on Linux through the default handler).
What Node.js version does it need?
Node.js 24 or newer for the npm version. A Homebrew binary that needs no Node.js is also listed in the README.
Information
updated Nov 2, 2026
- Publisher
- Community
- Package
@codefuturist/email-mcp- Registry
- npm
- Transport
- stdio, Streamable HTTP
- Auth
- token in env
- Version
- 0.6.0
- License
- LGPL-3.0-or-later
- Last commit
- Oct 29, 2026
- Listed in
- Official MCP registry
Sources
Docs, issue trackers and discussions this page is built from. Issues, quotes and findings above link to their own source.
Show all 2Hide
- email-mcp README · github.com
- email-mcp tool registration · github.com