Turn on developer mode, create a connector pointing at one URL, and ChatGPT can read, search, send, reply, forward, schedule and organize your real mail.
In ChatGPT, turn on developer mode under Settings, Apps and Connectors, Advanced settings. Create a connector, paste https://mcpemails.com/api/mcp as the connector URL, choose OAuth, and authorize with mcpemails. Full MCP support is a beta limited to ChatGPT Business and Enterprise or Edu workspaces.
ChatGPT 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 ChatGPT.
| 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.
Open Settings, Apps and Connectors, Advanced settings, and turn on Developer mode.
Back in Apps and Connectors, click Create. Enter a name and paste https://mcpemails.com/api/mcp as the Connector URL.
Pick OAuth, click Create, then authorize with mcpemails and approve the scopes you want the connector to hold.
Official ChatGPT documentation for remote MCP servers: https://help.openai.com/en/articles/12584461
Wondering which mailbox to connect first? See the provider compatibility matrix
Developer mode with arbitrary MCP connectors is limited to ChatGPT Business and Enterprise or Edu workspaces. On a personal Plus account the Create button for a custom connector is either absent or refuses the server, and no change on our side unlocks it. If that is where you are, the same inbox and the same URL work today in Claude, Cursor, VS Code or the CLI clients, so nothing is wasted while you wait.
The connector form asks how to authenticate. This server refuses anonymous calls: an unauthenticated request gets a 401 carrying an OAuth discovery pointer, which is what a compliant client follows to start the flow. Choosing no authentication produces a connector that fails on its first tool call rather than at setup, which is the confusing way round.
The consent screen lets you hand ChatGPT read:email and search:email alone. That is enough for triage, summarising and finding things, and it removes every irreversible action from the table while you decide how much further you want to go.
Through a custom MCP connector, yes. ChatGPT cannot reach a mailbox on its own; pointing a connector at mcpemails gives it tools for reading, searching, sending, replying, forwarding, organizing and scheduling mail, limited to the scopes you approve during setup.
Developer mode and custom MCP connectors are a beta restricted to ChatGPT Business and Enterprise or Edu workspaces. A personal account cannot add one, whatever the server. This is an OpenAI product decision and nothing on our side changes it.
No. Pick OAuth when creating the connector and ChatGPT registers itself and completes an authorization code plus PKCE flow. API keys are for clients that cannot do that, and for scripts.
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 connector, every mailbox you have connected. One inbox free forever.