Skip to main content
Glama
zedong-peng

imap-draft-mcp

by zedong-peng

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:

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.

Related MCP server: MCP Email

Configure

One environment variable, comma-separated accounts:

EMAIL_CREDENTIALS='me@icloud.com:app-password,me@uni.edu:password:imap.uni.edu,me@corp.example: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:

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

Codex:

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

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

{
  "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:

imap-draft-mcp -http 127.0.0.1:8080 -allow-host server.tailnet.ts.net
tailscale 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

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.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to interact with email accounts via IMAP and SMTP, supporting mailbox listing, email search, retrieval, sending, and management.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to read, send, organize, and search emails across multiple IMAP/SMTP mailboxes.
    1,018 npm
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to read, search, send, and manage emails via IMAP/SMTP with OAuth 2.1 authentication, supporting folders, drafts, replies, and forwarding.
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI assistants to securely manage multiple email accounts via IMAP and SMTP, including searching, reading, sending, replying, forwarding, organizing folders, marking, and bulk deleting messages.
    1,013 npm
    MIT