Zed + email

Connect your inbox to Zed
from the Agent Panel

Add a real mailbox to Zed as a context server. Read, search, send, reply, forward, schedule and organize mail without leaving the editor.

In the Agent Panel settings click Add Custom Server, or add an entry under context_servers in settings.json with the url https://mcpemails.com/api/mcp. Zed prompts the OAuth flow when no Authorization header is set.

1 inbox free, forever OAuth, no API key needed Email fetched live, never stored

How Zed connects: OAuth, no API key

Zed runs the standard MCP OAuth flow against this server. It registers itself with RFC 7591 dynamic client registration, so there is no client ID to create, and authorizes with authorization code plus PKCE using S256. No client secret is ever transmitted, and the token carries only the scopes you approve on our consent screen. The access token it receives lasts an hour and refreshes itself; it is listed in Dashboard, API Keys as OAuth: followed by the client name, which is where you revoke the connection.

The one value you need

Everything on this page is a way of getting this URL into Zed.

FieldValue
MCP server URLhttps://mcpemails.com/api/mcp
TransportStreamable HTTP (MCP 2025-06-18)
AuthenticationOAuth 2.1, authorization code with PKCE. No API key.
Setup

How to connect Zed to your inbox

Four steps. The first two are the same for every client, the rest are specific to this one.

01

Create a free account and connect a mailbox

Sign up at mcpemails.com, no card required, then go to Dashboard, Inboxes, Connect Inbox. Gmail connects with one-click Google sign-in; iCloud, Fastmail, Yahoo, Zoho and Yandex take an app-specific password; anything else connects over plain IMAP and SMTP. The free plan holds one inbox, forever.

02

Open the Agent Panel settings

In the Agent Panel settings click Add Custom Server, or edit settings.json directly.

03

Add the server

Add the entry below under context_servers.

04

Authorize

Zed prompts the OAuth flow when no Authorization header is set. Sign in with mcpemails and approve the scopes you want Zed to hold.

settings.json
{
  "context_servers": {
    "mcpemails": {
      "url": "https://mcpemails.com/api/mcp"
    }
  }
}
Before you start

What trips people up in Zed

Leave the Authorization header empty on purpose

Zed decides between OAuth and a static token by whether you configured an Authorization header. Set one and Zed uses it and never prompts; leave it empty and Zed runs the browser flow. Half-filling that field is how people end up with a server that neither prompts nor authenticates.

Zed calls them context servers, everyone else calls them MCP servers

The settings key is context_servers. It is the same MCP, and a snippet from another client is correct apart from the wrapper key, which is exactly the sort of difference that survives a careful read.

The Agent Panel is where the tools appear

Mail tools are agent tools. A successful connection changes nothing about inline completions; the place to confirm it worked, and to see which tools arrived, is the Agent Panel.

Limits worth knowing

  • Requests are rate limited to 100 per minute, 1,000 per hour and 10,000 per day per key, plus your plan ceiling on billable actions.
  • The server is request and response only. There are no webhooks and no server-initiated events, so new mail never wakes your agent by itself. To react to arriving mail, poll on a schedule.
  • Mail is fetched live from your provider on every call and never stored. Only the encrypted OAuth token or app password is kept, so a revoked token or a changed mailbox password ends access immediately.
FAQ

Zed and email, answered

How do I connect email to Zed?

Add a custom server from the Agent Panel settings, or add an entry under context_servers in settings.json with the url https://mcpemails.com/api/mcp. Leave the Authorization header empty and Zed runs the OAuth flow. The Agent Panel then has tools for reading, searching, sending, replying, forwarding, organizing and scheduling mail.

Do I need an API key for Zed?

No, as long as you leave the Authorization header unset, which is what makes Zed prompt the OAuth flow. A bearer key is the alternative if you would rather manage the token yourself.

Which mailboxes can Zed reach this way?

Gmail over Google sign-in, iCloud, Fastmail, Yahoo, Zoho and Yandex with an app-specific password, and any other mailbox that speaks IMAP and SMTP on the standard ports. The client sees them all through the same connection: your agent calls inbox_list first to discover every connected mailbox and its id, so there are no UUIDs to paste anywhere.

Can Zed send email without me seeing it?

Only if you let it. Sending is gated on the send:email scope, so a key or a token without that scope cannot send at all. On top of that, an inbox owner can require human approval in the dashboard, which holds every send, reply, forward, draft send and scheduled send until a person releases it.

Is my email stored on your servers?

No. Every message is fetched live from your provider for the request that asked for it and handed straight to your client. Only the encrypted OAuth token or app password is kept, so future calls can authenticate. Deleting the inbox in the dashboard, or revoking access at your provider, ends the connection at once.

Give Zed a real inbox

One context server, one sign-in. One inbox free forever, no card required.