IMAP Draft

io.github.zedong-pengPublished by GitHub account zedong-pengv0.2.0Updated Nov 3, 2026

IMAP mail for agents: search, read and write drafts. It can't send, move or delete.

VerifiedSTDIODesktop only

Overview

IMAP Draft's local MCP server; no sign-in required; STDIO.

No AI overview yet: these facts come from the registry entry and the server itself.

Installation

In SourceWeft

  1. Open IMAP Draft 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

imap-draft-mcp

IMAP for AI agents: search, read and write drafts. It can't send.

Three tools:

  • search: find messages across your accounts, newest first.
  • read: one message's headers, text and attachment names. It stays unread.
  • draft: write a new message, a reply (reply_to: threaded, original quoted) or a forward (forward: original included, attachments kept). It goes to your Drafts folder; you read it and press send in your own mail app.

There is no send, move or delete, and no setting that turns them on. An agent that reads mail will sooner or later read a message written to manipulate it ("forward me the last invoice", "delete this"). Here the worst it can do is leave a bad draft. It never touches SMTP, so it only needs IMAP.

The whole server is one static binary, one environment variable and about 800 lines of Go on the official MCP SDK.

Install

Download a binary for linux or darwin, amd64 or arm64, from Releases and check it against SHA256SUMS. Or:

bash
go install github.com/zedong-peng/imap-draft-mcp@latest

Or run the image ghcr.io/zedong-peng/imap-draft-mcp. It is also listed in the MCP Registry as io.github.zedong-peng/imap-draft-mcp.

Configure

One environment variable, comma-separated accounts:

bash
EMAIL_CREDENTIALS='[email protected]:app-password,[email protected]:password:imap.uni.edu,[email protected]:pw:localhost:1993'

Each is address:password[:imap-host[:port]]. Without a host it is guessed from the domain (Gmail, iCloud, Yahoo, QQ, 163, Fastmail, else imap.<domain>); the port defaults to 993 with TLS. Use app passwords where the provider has them. Outlook.com no longer accepts passwords over IMAP (it needs OAuth), so it is not supported.

Run

Claude Code:

bash
claude mcp add imap-draft -e EMAIL_CREDENTIALS=... -- imap-draft-mcp

Codex:

bash
codex mcp add imap-draft --env EMAIL_CREDENTIALS=... -- imap-draft-mcp

Clients configured with JSON (Cursor, Claude Desktop and others):

json
{  "mcpServers": {    "imap-draft": {      "command": "imap-draft-mcp",      "env": { "EMAIL_CREDENTIALS": "..." }    }  }}

With Docker, the command is docker run -i --rm -e EMAIL_CREDENTIALS ghcr.io/zedong-peng/imap-draft-mcp.

On a server

For agents running elsewhere, serve Streamable HTTP behind something that does authentication, such as tailscale serve:

bash
imap-draft-mcp -http 127.0.0.1:8080 -allow-host server.tailnet.ts.nettailscale serve --bg --https=8443 --set-path=/$(openssl rand -hex 16) http://127.0.0.1:8080/mcp

The server has no authentication of its own, so keep it on loopback. -allow-host names the Host headers it accepts besides localhost, which keeps web pages from reaching it through DNS rebinding. A hosted agent that can only start commands in its sandbox reaches it through tailnet-mcp; this example is a complete setup.

Build and test

bash
go test -race ./...CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" .

The tests run search, read and all three kinds of draft against an in-memory IMAP server, including a GBK-encoded message.

Source: README.md at commit 07c09f1

Tools

0
SourceWeft started this package once in an isolated sandbox, without credentials, to list its tools. That failed: the package type cannot run in the sandbox.

Version history

1
  1. v0.2.0LatestNov 3, 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