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.
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.
Everything on this page is a way of getting this URL into Zed.
| Field | Value |
|---|---|
| MCP server URL | https://mcpemails.com/api/mcp |
| Transport | Streamable HTTP (MCP 2025-06-18) |
| Authentication | OAuth 2.1, authorization code with PKCE. No API key. |
Four steps. The first two are the same for every client, the rest are specific to this one.
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.
In the Agent Panel settings click Add Custom Server, or edit settings.json directly.
Add the entry below under context_servers.
Zed prompts the OAuth flow when no Authorization header is set. Sign in with mcpemails and approve the scopes you want Zed to hold.
{
"context_servers": {
"mcpemails": {
"url": "https://mcpemails.com/api/mcp"
}
}
}Official Zed documentation for remote MCP servers: https://zed.dev/docs/ai/mcp
Wondering which mailbox to connect first? See the provider compatibility matrix
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.
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.
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.
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.
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.
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.
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.
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.
One context server, one sign-in. One inbox free forever, no card required.