email-tool

io.github.skhan61Published by GitHub account skhan61v5.6.0Updated Nov 3, 2026

IMAP/SMTP email for AI assistants: read, search, draft and send, with CMMC-grade safeguards.

Overview

AI-generated overview

Local IMAP/SMTP email server that lets an assistant list mailboxes, read, search, draft, send and delete mail, with attachments.

What you can do
  • List configured mailboxes and their folders, and check whether each can log in
  • List and search messages by sender, subject, body text or date, and read one message in full without marking it read
  • Save a message's attachment into a folder the user names
  • Create, list, read and update drafts, including replies that join a conversation
  • Send mail immediately with attachments, or permanently delete a message
  • Add a mailbox through a setup page in the browser, and build or email a problem report to the maintainer
When to use it
Useful when you want an assistant to work with real email on your own machine: triaging and searching a mailbox, preparing drafts for review, or sending messages you explicitly approve, including for organizations that need logged, approval-gated sending.
Requirements
Runs as a local process on the user's desktop machine (PyPI package email-tool-mcp, installed via uv or an app installer). At least one mailbox must be added through the setup page, which opens in the user's browser; passwords are typed there and kept in the operating system keyring. Network access to the mail provider's IMAP/SMTP servers is required.
Before you install
Sending and deleting are irreversible, and deletion is permanent; the server asks for explicit confirmation of the exact message, and sensitive-looking attachments are shown for approval first. Passwords must be entered only on the setup page, never in chat. The problem-report tool collects versions, app details, mailbox kinds and recent failed calls, with addresses, subjects, quoted text, paths and secrets removed, and emailing it sends data to the maintainer after the app shows the exact…

Installation

In SourceWeft

  1. Open email-tool 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

[email-tool icon]

email-tool

Email for any AI agent that speaks MCP: Claude Code, Claude Desktop, Cowork, ChatGPT desktop, Codex and others.
Read, search, draft and send mail, with attachments, over IMAP/SMTP.

Works with
[Claude Code plugin] [Claude Desktop and Cowork] [ChatGPT desktop and Codex] [MCP server]

Compliance
[CMMC Level 2 / NIST SP 800-171 control mapping]

Build and security
[CI] [CodeQL] [OpenSSF Scorecard] [Latest release]

Code quality
[Python version] [Tested on Linux, macOS and Windows] [Ruff] [mypy strict] [uv] [pre-commit] [Dependabot]

Project
[License] [Security policy] [Contributing]

email-tool lets an AI assistant read, search, draft and send your email. It runs on your own computer, keeps passwords in your operating system's keyring, and is built for organizations under CMMC Level 2 and NIST SP 800-171: every action is logged, sending can wait for your approval, and CUI-marked mail stays inside the domains you allow.

Documentation: skhan61.github.io/email-tool

Quick start

No terminal, any app: Start here. Install email-tool in your app (Claude Desktop and Cowork: one file to open; ChatGPT desktop and Codex: one installer to open), then ask your assistant to "add my mailbox".

From a terminal:

  1. Install uv.

  2. Connect your AI app. In Claude Code:

    text
    /plugin marketplace add skhan61/email-tool/plugin install email-tool@email-tool

    Other apps: Advanced setup.

  3. Ask your assistant to "add my mailbox", or from a terminal:

    bash
    uv tool install email-tool-mcpemail-tool-mcp add work --auth microsoft --address [email protected]

    Gmail, Google Workspace and other accounts: Mailbox details.

Documentation

PageWhat it covers
Start hereInstall in any app and add a mailbox, no terminal
Everyday useWhat to ask, the tools, approving before sending
Mailbox detailsWhat each mailbox needs (Gmail App Password, Microsoft, GCC High, Google Workspace, others), and the terminal steps
Advanced setupuv by hand, configuration files, ChatGPT Business, other MCP apps, update or remove
Why CMMCEach protection, with examples
CMMC control mappingNIST SP 800-171 requirements, evidence and your part
For administratorsPolicy, audit log, FIPS mode, your own Microsoft or Google app
TroubleshootingEvery message and its fix
PrivacyWhat email-tool accesses and where it goes

Contributing and security

See CONTRIBUTING.md. Report vulnerabilities privately as described in SECURITY.md.

License

MIT

Source: README.md at commit c17996b

Tools

15

list_mailboxes

List the mailboxes configured on this machine and whether each can log in.

Takes no parameters.

list_folders

List every folder in the mailbox.

Parametersmailbox

list_emails

List the newest messages in a folder, newest first.

Parameterslimitfoldermailbox

search_emails

Search a folder by sender, subject, body text or date (since, as DD-Mon-YYYY). On Gmail, `gmail_query` takes Gmail's own search syntax instead; other servers ignore it. Supply at least one field.

Parametersbodylimitsincefoldersendermailboxsubjectgmail_query

get_email

Read one message in full by UID. Does not mark it as read.

Parametersuidrequiredfoldermailbox

save_attachment

Save one attachment of a message into a folder the user names. The file is never opened. A relative folder is taken from the user's home ("Downloads" is ~/Downloads). Saving into a place where a file can run (autostart, .ssh, ...) asks the user first.

Parametersuidrequiredindexrequiredfoldermailboxdirectoryrequiredconfirm_sensitive

delete_email

Permanently delete one message by UID. This cannot be undone.

Parametersuidrequiredfolderrequiredmailbox

create_draft

Save a new draft into the drafts folder, with any attachments. Does not send it. For a reply, `in_reply_to_uid` names the message answered, so the draft joins its conversation.

Parameterscctorequiredbodyhtmlfolderrequiredmailboxsubjectattachmentsin_reply_to_uidin_reply_to_folder

list_drafts

List the newest drafts, newest first.

Parameterslimitfolderrequiredmailbox

get_draft

Read one draft in full by UID.

Parametersuidrequiredfolderrequiredmailbox

update_draft

Replace an existing draft with new content and attachments, keyed by UID. IMAP has no in-place edit: the replacement is stored first, then the original deleted. A reply draft stays in its conversation; `in_reply_to_uid` moves it to another one.

Parameterscctorequireduidrequiredbodyhtmlfolderrequiredmailboxsubjectattachmentsin_reply_to_uidin_reply_to_folder

send_email

Send an email immediately from this mailbox, with any attachments. This is not reversible. Attachments that look sensitive (keys, credentials, CUI) are shown to the user to confirm first. For a reply, `in_reply_to_uid` names the message answered, so the reply joins its conversation.

Parameterscctorequiredbodyrequiredhtmlmailboxsubjectrequiredattachmentsin_reply_to_uidconfirm_sensitivein_reply_to_folder

add_mailbox

Open a setup page in the user's browser to add a mailbox: Gmail, Outlook or Microsoft 365, Google Workspace, or any other. The user types any password on that page only; never ask for it in the chat. Closing the app's page box can read as "canceled" even after a mailbox was added: then call list_mailboxes to see whether it was.

Takes no parameters.

report_problem

Build a problem report for the email-tool maintainer when the user wants to report a problem. It holds the versions, the app, the kinds of mailbox and the last few failed calls, with addresses, subjects, quoted text, home-folder paths, passwords, tokens and keys removed. It changes nothing and sends nothing; it says how the user can send it.

Parametersdescriptionrequired

email_problem_report

Email a report from report_problem to the email-tool maintainer, from one of the user's mailboxes. The user's app always shows them the exact message to approve first. If the app cannot ask, nothing is sent: offer the GitHub link from report_problem instead.

Parametersreportrequiredmailbox

Version history

3
  1. v5.6.0LatestOct 29, 2026
  2. v5.5.0Oct 23, 2026
  3. v5.4.4Oct 23, 2026

Score

90% 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
  • 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 listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts