MCP Emails

Give your AI agent a real inbox. Hosted remote MCP server (https://mcpemails.com/api/mcp, streamable-http, OAuth 2.1 or scoped mcpe_ API key) to read, search, send, organize, draft, schedule and auto-triage email. Connect Gmail via OAuth or any IMAP/SMTP mailbox (Fastmail, iCloud, Yahoo, Zoho, Yandex, self-hosted) with an app password. Mail is fetched live and never stored; outbound sends via your own SMTP from your real address. 11 tools, per-key and per-inbox scopes, AES-256-GCM at rest. Open source, AGPL-3.0.

Documentation

See it work

Connect an inbox, then ask what needs you.

Under a minute, recorded against the live product: a real IMAP connection, then a real tool call that finds the one email that matters.

  <video controls aria-label="Demo video: connecting an inbox and triaging it with an AI agent"><source src="https://mcpemails.com/demo/connect-and-triage-v2.mp4" type="video/mp4"> <track kind="subtitles" src="https://mcpemails.com/demo/connect-and-triage.en.vtt" srcLang="en" label="English"> <track kind="subtitles" src="https://mcpemails.com/demo/connect-and-triage.es.vtt" srcLang="es" label="Español"> <track kind="subtitles" src="https://mcpemails.com/demo/connect-and-triage.fr.vtt" srcLang="fr" label="Français"> <track kind="subtitles" src="https://mcpemails.com/demo/connect-and-triage.nb.vtt" srcLang="nb" label="Norsk bokmål"> <track kind="subtitles" src="https://mcpemails.com/demo/connect-and-triage.zh.vtt" srcLang="zh" label="中文"> Your browser cannot play this video. The quickstart in the docs covers the same steps.</video>

Recorded against a demo mailbox seeded with fictional mail. No real correspondence appears in this video.

Works with every MCP-compatible agent and client

ClaudeChatGPTCursorVS CodeClineWindsurfGemini CLIZedJetBrainsRaycastWarpcurl / APIClaudeChatGPTCursorVS CodeClineWindsurfGemini CLIZedJetBrainsRaycastWarpcurl / APIClaudeChatGPTCursorVS CodeClineWindsurfGemini CLIZedJetBrainsRaycastWarpcurl / APIClaudeChatGPTCursorVS CodeClineWindsurfGemini CLIZedJetBrainsRaycastWarpcurl / APIClaudeChatGPTCursorVS CodeClineWindsurfGemini CLIZedJetBrainsRaycastWarpcurl / APIClaudeChatGPTCursorVS CodeClineWindsurfGemini CLIZedJetBrainsRaycastWarpcurl / API

Principles

Six things we believeabout email and agents.

The decisions that shaped the product. If any of them stop being true, that's a bug worth filing.

  1. 01Scope

    Eleven focused tools. The essentials, covered.

    Tools cover the everyday work: inbox_list, email_read (list, read, search) and email_compose (send, reply), plus focused tools for organizing, deleting, folders, drafts, scheduling, contacts, signatures, and unattended automations. Paste the MCP endpoint URL into claude.ai, Claude Desktop, Cursor, or any MCP-compatible agent.
  2. 02Storage

    Email is fetched live. Never stored.

    Every tool call hits your provider in real time: Gmail API or IMAP. Message bodies, subjects, and attachments go to the agent and are discarded immediately. We persist one thing per inbox, an encrypted token or app password, so we can make the next call. The one exception is a message you schedule to send later: we hold it until the send time, then keep a record for your history.
  3. 03Sending

    You stay in control of every send.

    Messages go through Gmail, Fastmail, or your own SMTP server, never our mail relay. Turn on per-inbox approval to hold sends, replies, forwards, draft sends, and scheduled sends for dashboard review. Automated retries can reuse an idempotency key for 24 hours, and Gmail can send only from a provider-verified Send As identity.
  4. 04Providers

    Gmail, iCloud, Fastmail & any IMAP inbox.

    OAuth 2.0 for Gmail; app-specific passwords for Fastmail, iCloud, Yahoo, Zoho, and Yandex; a generic IMAP / SMTP connector for everything else. Every inbox reports a versioned compatibility profile, so an agent can use portable actions while seeing where a provider behaves differently or cannot support an operation.
  5. 05Access

    OAuth 2.0 for agents. One click to revoke.

    We're standard MCP (streamable-http) with OAuth 2.1, DCR & PKCE, so there is no vendor lock-in. Works with Claude, Cursor, VS Code, ChatGPT, Windsurf, n8n, Make, LibreChat, OpenWebUI, and any MCP-compatible client. OAuth clients connect automatically via authorization code + PKCE; a scoped API key covers clients without OAuth and scripted access. Revoke any connection from the dashboard in one click.
  6. 06Security

    Credentials are encrypted at rest.

    OAuth tokens and app passwords are AES-256-GCM encrypted before being written to the database. Decryption happens only inside an isolated Edge Function at call time. The encryption key is stored as an environment secret, separate from the database.

Product preview

See your whole MCP operation at a glance.

A real-time dashboard for every connected inbox, API key, and tool call, so you always know what your agents are doing.

app.mcpemails.com/dashboard

mcpemails

Overview

Inboxes4

API keys3

Usage

J

jordan

Pro plan

Overview

Real-time view of your connected inboxes and MCP traffic.

Inboxes connected

4

MCP calls (30d)

12,484

Avg. response

214ms

Plan

Team

Recent activity

email_read() · work-gmailjust now

email_compose() · work-gmail12s ago

email_organize() · ops-fastmail1m ago

email_read() · support-imap3m ago

How it works

You're the user. We're the pipe.

Three steps from sign-up to your agent reading and sending mail.

01

Connect your inbox

Sign in and click Connect Inbox. Choose Gmail, iCloud, Fastmail, or any IMAP inbox, then complete OAuth or paste an app password. Credentials are encrypted; the mail your agent reads is never stored.

02

Paste the URL: OAuth or API key

For an MCP client that supports OAuth 2.0 (claude.ai, Claude Desktop, Cursor, and others), paste https://mcpemails.com/api/mcp, click Connect, and authorize. No key needed. For clients without OAuth (Cline, JetBrains, custom scripts), generate a scoped API key in the dashboard instead.

03

Your agent works the inbox

The agent calls tools like email_read() or email_compose(). MCPEmails fetches live from your provider and returns the result. Nothing is cached between calls.

inbox_list()

Discover all connected inboxes and their IDs. Call this first, no UUID copy-pasting from the dashboard.

email_read()

Read mail: list recent summaries, fetch a full message, batch-read up to 50, search across providers, extract readable attachment text, or save the original email as.eml.

email_organize()

Organize mail: move, copy, delete, flag, or archive, whether one at a time, in bulk, or straight from a search. Long bulk runs report their status and can be cancelled from the dashboard.

email_compose()

Compose: send a new message, reply in-thread, or forward through Gmail API or SMTP. Optional inbox approval holds outbound mail for dashboard review before it leaves.

folder()

Manage folders (labels on Gmail): list, create, rename, or delete, and use them as move destinations.

draft()

Drafts: list, create, update, and send provider-stored drafts, including an unsent reply kept in the source conversation for review.

schedule()

Schedule a message for a future time, list pending scheduled sends, and cancel them before they go out.

contact_search()

Find people by name or email with a live scan of recent matching mail. Nothing is stored.

Real prompts

Just ask.It reads, writes, and files.

No dashboards to learn. Tell your AI assistant what you want in plain English, and it uses mcpemails to get it done.

>_

What was the wifi password Alex sent me last week?

email_read()

Found it — pulled straight from Alex’s message on Tuesday.

email_read()email_organize()

Archived 14 newsletters you haven’t touched since April.

>_

Reply to the landlord and say rent’s coming Friday

email_compose()

Sent — Priya knows rent lands Friday.

>_

Move every receipt from this month into a Receipts folder

email_organize()

Moved 23 receipts into Receipts/2026.

>_

Send this at 8am Monday, not now

schedule()

Scheduled for Mon 8:00 AM — nothing goes out before then.

>_

What did the doctor’s office say about my appointment?

email_read()

Confirmed for Thursday at 2:15 PM.

“I wanted my agents to work my inbox, but every option meant handing a third party a copy of my email. So I built the pipe I wished existed: connect once, your inbox is fetched live and never stored, and you can cut off any agent in a click. That's the product I trust with my own inbox.”

Asgeir Albretsen · founder, mcpemails

Pricing

Priced by inbox, not by usage.

Free connects one inbox. Personal connects three. Pro connects every mailbox you own. Team adds people, roles, and a separate workspace per client.

Free

$0 /forever

Connect one inbox and give your agent a real mailbox.

  • 1 connected inbox
  • Read, search, organise, draft and send
  • Gmail, iCloud, Fastmail & any IMAP
  • Unlimited API keys
  • Single user
  • Community support

Personal

$5 /month

Three mailboxes for one person: work, personal, and one more.

  • 3 connected inboxes
  • Scheduled sends and approvals
  • 2x higher burst rate limit
  • Usage analytics
  • Email support

Pro

$15 /month

Every mailbox you own, in one agent. Work, personal, and each side business.

  • Unlimited connected inboxes
  • Scheduled sends and approvals
  • 5x higher burst rate limit
  • Full usage analytics
  • Email support

Team

$79 /month

Shared inboxes for a team, with a separate workspace per client or business.

  • Everything in Pro
  • Unlimited members with roles
  • A separate workspace per client or business
  • SSO (SAML / OIDC) and audit log
  • Full usage analytics
  • Priority support

All plans: the mail your agent reads is fetched live and never stored. OAuth tokens encrypted at rest. Need something custom? Contact us. See full feature comparison →