New
Apps 207Makers 207This week 207
Promote your app−30%
MCPEmails screenshot 1
2views in
the last 30 days

MCPEmails

Hosted email MCP server for AI agents. Connect Gmail, Fastmail, iCloud, or IMAP to Claude, ChatGPT,

Built with Claude/Claude Code/Gemini CLI/Windsurf/Cline

by albretsen · from NONorway · added Oct 29, 2026
no ratings0 comments
Open app Code

Give your AI agent an inbox. A hosted Model Context Protocol server that lets Claude, Cursor, or any MCP‑compatible client read, search, send, organize, and schedule email through your existing mailboxes — without ever storing your mail.

Glama quality grade

Connect a mailbox once, paste one URL into your agent, and it can work your inbox live. Email is fetched on demand and never retained; credentials are encrypted at rest and decrypted on our servers only for the request that needs them.

🔗 mcpemails.com · 📚 Docs · 💳 Pricing


Contents


How it works

  1. Connect a mailbox. Sign in at mcpemails.com and connect Outlook / Microsoft 365 (Sign in with Microsoft, over Microsoft Graph), Gmail (a Google app password over IMAP), or any IMAP/SMTP account (app password). Credentials are encrypted with AES‑256‑GCM before they touch the database.
  2. Get access. OAuth‑capable clients (claude.ai, Claude Desktop, Cursor) connect in one click via OAuth 2.0 + PKCE. Everything else uses a scoped API key (mcpe_…).
  3. Point your client at the server. The MCP endpoint is a single URL:
    https://mcpemails.com/api/mcp
    
  4. Your agent works the inbox. It calls tools like inbox_list, email_read (action: "search"), email_compose (action: "send"), and schedule (action: "create"). Each request fetches live from your provider — nothing is mirrored or cached server‑side.

Permissions are scoped per key, so you can hand an agent read:email only, or grant it send and folder management without ever exposing delete.

Quick start (connecting an agent)

Claude Desktop / Cursor (OAuth): add a remote MCP server pointing at https://mcpemails.com/api/mcp and approve the consent screen. Pick the scopes the agent should have.

API key (any MCP client): create a key in the dashboard, choose its scopes and (optionally) restrict it to specific inboxes, then send it as a bearer token:

// Example MCP client config
{
  "mcpServers": {
    "mcpemails": {
      "url": "https://mcpemails.com/api/mcp",
      "headers": { "Authorization": "Bearer mcpe_your_key_here" }
    }
  }
}

The protocol is JSON‑RPC 2.0 over HTTP (MCP 2025-06-18, Streamable transport). Start every session with inbox_list — it returns the inboxes the key can reach, their per‑provider capabilities, and a versioned compatibility profile. The profile marks normalized operations as exact, different, or unavailable, so agents can preserve provider differences rather than silently weakening a request.

Setup guides

Copy‑paste instructions per client, including where each one keeps its config file: mcpemails.com/docs/clients.

Claude · Claude Code · ChatGPT · Cursor · VS Code · Cline · Windsurf · Gemini CLI · Zed · JetBrains · Raycast · Warp · curl

Capabilities

  • Live, never stored — email is read straight from your provider on each call; no message bodies are persisted.
  • Multi‑provider — Outlook / Microsoft 365 via Microsoft Graph (Sign in with Microsoft), Gmail via a Google app password over IMAP, plus any IMAP/SMTP mailbox (Fastmail, iCloud, Yahoo, Zoho, Yandex, self‑hosted…) via app password.
  • Your provider sends — outbound mail is sent through your provider's SMTP/API, from your real address. When a provider refuses connections from cloud addresses, the IMAP/SMTP connection goes through our own tunnel (an HTTP CONNECT relay); TLS still runs end to end to the provider, so the relay never sees mail or credentials.
  • Granular scopes — eight permission scopes, grantable independently per API key and per inbox.
  • Batch & search‑and‑act — read, move, delete, or flag up to hundreds of messages in one call, including "search then move/delete" combinators.
  • Drafts & scheduling — compose drafts and queue messages for future send (server‑side dispatch).
  • Provider‑agnostic search — Gmail syntax, Microsoft Graph KQL and IMAP SEARCH are normalized behind one email_read (action: "search") interface.
  • Business‑ready: several workspaces, unlimited members with roles, and admin approval of held sends on the Business plan.

Tools

21 tools you call directly. Most are resource-oriented and take an action argument that selects the specific operation (and, for actions that need different privileges, the required scope):

  • inbox_list - Lists the inboxes the key can reach, with each one's provider capabilities.
  • email_read - Lists, reads and searches messages, in batches, plus attachments, extracted attachment text and the original .eml.
  • email_organize - Moves, copies, flags and archives messages you name by id, singly or in batches.
  • email_search_and_move - Moves every message matching a search into a folder. Its own tool, and the destructive one, because a wrong filter relocates a whole inbox.
  • email_delete - Trashes or permanently deletes messages, singly, in batches, or by search.
  • email_compose - Sends, replies and forwards through your own provider, from your real address.
  • folder_list - Lists folders (labels on Gmail) with their provider-native IDs and message counts. Read-only.
  • folder - Creates, renames and deletes folders (labels on Gmail).
  • draft_list - Lists the drafts saved in the inbox, with their draft ids. Read-only.
  • draft - Creates, updates, sends and deletes drafts, including provider-native replies.
  • schedule_list - Lists what is queued for future delivery. Read-only.
  • schedule - Queues a message for future delivery, and cancels one that is queued.
  • reminder_list - Lists the follow-ups and snoozes the server tracks: due, upcoming or all. Read-only. Pro and Business.
  • reminder - Follows up on sent mail nobody replied to, and snoozes a message out of the inbox until a time you choose. Runs server-side while the chat is closed. Pro and Business.
  • signature_get - Reads the signature and sender name configured for an inbox. Read-only.
  • signature_set - Sets the signature appended to outbound mail, and the sender name.
  • automation_read - Lists triage rules, reads one, shows run history, and dry-runs a filter. Read-only.
  • automation - Creates, updates, enables, disables and deletes unattended triage rules, with no model in the loop.
  • contact_search - Looks up contacts by scanning recent mail live, with no stored address book.
  • draft_read - Reads one unsent draft in full, for example after the user edited it in the draft editor card. Read-only.
  • draft_editor_hide - Hides or shows the in-chat draft editor card for one inbox or the whole workspace. A display preference only.
Tool Actions Scope(s)
inbox_list (single action) read:email
email_read list, read, read_batch, search, attachment, extract, original read:email (search also accepts search:email)
email_organize move, move_batch, copy, copy_batch, flag, archive manage:folders
email_search_and_move (single action) manage:folders
email_delete delete, delete_batch, search_and_delete delete:email
email_compose send, reply, forward send:email
folder_list (single action) read:email
folder create, rename, delete manage:folders
draft_list (single action) manage:drafts
draft create, reply, update, send, delete manage:drafts (create/reply/update/delete), read:email (reply also), send:email (send)
schedule_list (single action) schedule:email
schedule create, cancel schedule:email
reminder_list (single action) read:email
reminder follow_up, snooze, done, cancel manage:automations (snooze, and cancel of a snooze, also need manage:folders)
signature_get (single action) read:email
signature_set (single action) send:email
automation_read list, get, runs, preview manage:automations
automation create, update, enable, disable, delete manage:automations
contact_search (single action) manage:contacts (also accepts read:email)
draft_read (single action) manage:drafts and read:email
draft_editor_hide (single action) manage:drafts

A full-scope key sees 29 tools in tools/list: the 21 above plus eight app-only tools that drive the in-chat cards rather than being composed by hand: approval_review, approval_decide, approval_update, approval_schedule (a held send), bulk_execute, bulk_cancel (a previewed bulk operation), draft_editor_save (the draft editor's Save button) and card_automation (the automation card's On/Off switch). The six approval_* and bulk_* tools always carry _meta.ui.visibility: ["app"]; draft_editor_save carries it where the draft editor is on and refuses every call where it is off; card_automation is listed only where the card is on.

prompts/list holds 7 user-invoked workflow prompts (morning_inbox_triage, find_and_brief, follow_up_radar, decision_tracker, prepare_reply_drafts, clean_up_safely, review_scheduled_sends), each listed only to a key holding its scopes.

Notes:

  • Tools accept either an explicit inbox_id (UUID) or an inbox email address; single‑inbox keys auto‑resolve the target.
  • Batch actions cap at 50 (email_read's read_batch) to 500 (move/delete/flag) messages per call.
  • For a targeted mutation, first use email_read with action: "search", then pass the returned message_id or message_ids to email_organize or email_delete. Search fields are accepted only by email_search_and_move and email_delete's search_and_delete action.
  • contact_search scans recent mail live, so there is no stored address book.
  • email_read's original action returns one complete provider-stored MIME message as a portable .eml file (up to 25 MB). It is read-only and never marks the message as read.
  • draft's send action requires send:email, not manage:drafts, so a key that can only manage drafts can't use them to bypass the send‑mail consent.
  • draft's reply action creates an unsent, provider-native reply in the source conversation. It needs both manage:drafts and read:email, and defaults to replying only to the sender.
  • The read-only halves (folder_list, draft_list, schedule_list, signature_get, automation_read) were split out of their write tools on 2026-09-09, so a read-only key is never shown a write tool. The old combined shapes (folder action: "list", draft action: "list", schedule action: "list", signature action: "get"/"set", automation action: "list"/"get"/"runs"/"preview") are still accepted on the wire for already-connected clients, but are no longer advertised.
  • automation manages unattended scheduled triage rules: a stored search plus one fixed action, evaluated on a cadence with no model in the loop. There is no delete-mail action, a forward always waits for human approval, and draft_reply only ever writes a draft. See docs/automations-trust-boundary.md.
  • For an API key, tools/list returns only the tools its scopes allow. An OAuth connection is listed every tool, and a call that needs a scope it was not granted gets the MCP step-up challenge (insufficient_scope).

OAuth scopes

Scope Grants
read:email List inboxes & folders; list, read, and search messages; read an inbox's signature; look up contacts
search:email Narrower alternative that grants only email_read's search action
send:email Send, reply and forward; set the signature and sender name; also required to send a draft
manage:folders Create/rename/delete folders; move, copy, flag and archive messages
delete:email Trash or permanently expunge messages
manage:drafts Create, edit, and delete drafts (sending one also requires send:email)
manage:contacts Live contact lookup from recent mail
schedule:email Queue messages for future delivery
manage:automations Create and manage unattended scheduled triage rules (no delete action; forwards stay approval-gated)

Supported providers

Provider Connect via Read/Search Send Folders Permanent delete Drafts
Gmail / Google Workspace App password (IMAP/SMTP) ✅ ✅ Labels ✅ (follows Gmail's IMAP expunge settings) ✅
Fastmail App password (IMAP/SMTP) ✅ ✅ ✅ ✅ ✅
iCloud, Yahoo, AOL, GMX, Zoho, Yandex App password (IMAP/SMTP) ✅ ✅ ✅ ✅ ✅
IONOS, STRATO, One.com, OVHcloud, Namecheap Private Email, Hostinger, Infomaniak, Hetzner Mailbox password (IMAP/SMTP) ✅ ✅ ✅ ✅ ✅
cPanel, Plesk, SiteGround, Bluehost and other shared hosts Mailbox password (IMAP/SMTP) ✅ ✅ ✅ ✅ ✅
Any other IMAP/SMTP mailbox App password or mailbox password ✅ ✅ ✅ ✅ ✅
Outlook / Microsoft 365 OAuth 2.0 (Microsoft Graph) ✅ ✅ ✅ (nested) ✅ ✅

Mail on your own domain at a web host connects like any IMAP mailbox, and one workspace can hold several of them (info@, sales@, support@). Per-host settings and known pitfalls for 100 providers are at mcpemails.com/connect. Feature support per provider is in the provider compatibility matrix, and the probed IMAP/SMTP hosts, login mechanisms and size limits are free to download as an open provider dataset (JSON and CSV, CC BY 4.0).

Outlook uses Microsoft Graph with "Sign in with Microsoft", not IMAP. Personal Microsoft accounts (outlook.com, hotmail.com, live.com, msn.com) connect directly. On work or school Microsoft 365 tenants, Microsoft's default consent policy stops employees approving mail permissions themselves, so an IT admin approves the app once for the organisation; the dashboard gives the user a shareable approval link to send them (/auth/outlook/admin-consent), and the admin needs no MCPEmails account. A Microsoft account with no Exchange Online mailbox is refused, with a pointer to IMAP. The label tools are Gmail-only (Outlook uses folders), except that an automation's label action applies an Outlook category; and Graph cannot combine a text search with the unread, attachment, flagged or date filters.

Pricing

The value metric is connected inboxes. Free connects one mailbox, Personal connects up to three, Pro connects up to 10 for one person running a business, and Business includes 10 mailboxes, charges $3 a month for each extra one, and adds unlimited people with roles and a separate workspace per client. Annual billing saves about 20%.

Free Personal Pro Business
Price $0 $9/mo · $86.40/yr ($7.20/mo) $15/mo · $144/yr ($12/mo) $39/mo · $374.40/yr ($31.20/mo)
Connected inboxes 1 3 10 10 included, then $3/mo each ($28.80/yr)
Email actions / month 150 (first 3 days uncounted) No monthly cap (fair use) No monthly cap (fair use) No monthly cap (fair use)
API keys Unlimited Unlimited Unlimited Unlimited
Members 1 (owner only) 1 (owner only) 1 (owner only) Unlimited, with roles, no extra cost
Fair‑use rate limit 60 req/min 120 req/min 300 req/min 1,000 req/min
Roles, admin send approval, several workspaces No No No ✅
Support Community Email Email Email

Per‑API‑key limits also apply (100 req/min · 1,000/hr · 10,000/day). Rate limits are retryable: they come back as JSON-RPC error -32003 with data.retry_after in seconds.

Free workspaces get 150 email actions per calendar month (UTC). The first 3 days after signup are not counted (7 days for workspaces created before 2026-10-17), and inbox_list and the dashboard are never counted. When the allowance is reached, every other email action is refused until the 1st of the next month, unattended automations pause and resume automatically on the 1st, and the owner is emailed at 80% and at 100%. Personal, Pro and Business have no monthly cap, subject to fair use (their ceilings are abuse guards, not plan features, and are not printed anywhere). A refusal is not retryable and not a JSON-RPC error: it comes back as a normal tool result with isError: true, text that opens with the count and the reset date, and a _meta["com.mcpemails/usage_limit"] block that clears at reset_at.

Internal plan ids predate the names: solo is sold as Pro and pro is sold as Business (it was Team until 2026-10-19). The newer personal id is the only one that matches its display name, Personal. Every user who existed before the 2026-08-19 repricing keeps unlimited inboxes for free, permanently, every workspace already on Pro when the 10-inbox cap arrived keeps unlimited inboxes, and every workspace created before the 2026-09-12 launch of the action allowance is an early member that is not metered against it. See apps/web/src/lib/stripe/plans.ts.

Architecture

flowchart LR
    Agent["MCP client<br/>(Claude, Cursor, …)"] -->|"JSON-RPC / OAuth or API key"| Web

    subgraph Vercel["Vercel — Next.js 16"]
      Web["/api/mcp route<br/>+ marketing site + dashboard"]
    end

    subgraph Supabase
      Edge["mcp-server<br/>edge function 

Description taken from the repository README.

Ratings

–
0 ratings
5 0
4 0
3 0
2 0
1 0

Rate this app

Sign in to rate

Comments 0

Sign in to comment

No comments yet.

Related apps

#ai-agents · #email · #gmail