mailbox-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mailbox-mcpwait for the password reset email"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mailbox
A local development mail sink: run one SMTP server plus an HTTP API for your whole machine and point every project at it. Emails never leave your device — instead they land in an inspectable inbox with a web UI, a CLI, and an MCP server for AI agents.
One shared instance eliminates per-project port collisions: start it once, connect many.
Install
pnpm add -D @sdk-e/mailbox # or npm i -D / yarn add -DOr run ad hoc:
npx @sdk-e/mailboxRelated MCP server: qmailing MCP server
Quick start
mailbox # SMTP on :11025, inbox UI on http://localhost:11090Send mail to smtp://127.0.0.1:11025 from any app (nodemailer, Resend dev mode, etc.), then:
open http://localhost:11090 # or: mailbox-cli openBins
Bin | Purpose |
| Run the sink (SMTP + HTTP + inbox UI) |
|
|
| MCP server ( |
CLI examples
mailbox-cli list
mailbox-cli read 3
mailbox-cli wait "verification code" --timeout 10 # blocks until a new matching message arrives
mailbox-cli clearwait only matches messages that arrive after it starts — start it before triggering the send.
Library use
import { startMailbox } from "@sdk-e/mailbox";
const mailbox = await startMailbox({ smtpPort: 0, httpPort: 0 }); // 0 = ephemeral
console.log(mailbox.smtpPort, mailbox.url);
await mailbox.close();Ideal for integration tests that need an isolated throwaway inbox.
HTTP API (stable wire protocol)
Route | Method | Response |
| GET |
|
| GET | array of |
| GET | message above plus |
| DELETE |
|
| GET | inbox UI |
Configuration
Environment variables (a .env.local, then .env, in the working directory are loaded if present):
Variable | Default | Purpose |
|
| SMTP listen port |
|
| HTTP API/UI port |
| derived from port | Base URL used by CLI/MCP to reach the sink |
|
| Bind interface (loopback by default) |
Point your app's mailer at smtp://127.0.0.1:$MAIL_SMTP_PORT locally; in production keep using your real provider. The server refuses to start when NODE_ENV=production.
Why high ports?
1025/1080 (classic MailHog-style defaults) collide frequently. mailbox defaults to 11025/11090 so several SDK-E projects can share a single instance without stepping on each other or on other local tooling.
Development
Requires Node >= 20 and pnpm >= 11.
pnpm install
pnpm verify # format, lint, typecheck, test, buildSee CONTRIBUTING.md.
License
This server cannot be deployed
Maintenance
Related MCP Connectors
Give an AI agent its own email address: send, reply, read, and wait for mail.
Email infrastructure for AI agents — send, receive, search, and reply to email over MCP.
Disposable inboxes for AI agents: create, wait for delivery, and extract email content or links.
Email inboxes for AI agents: send, receive, reply, search, and manage threaded email over MCP.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceEnables LLMs to read, send, and manage emails via POP3 and SMTP with TLS support.5-
- AlicenseAqualityDmaintenanceEnables AI agents to manage email mailboxes, send and receive emails, and handle webhooks via qmailing.1270 npm1MIT
- FlicenseBqualityDmaintenanceEnables AI agents to send and receive emails via POP3 and SMTP, with tools for polling, reading, deleting, and sending emails.51-
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to interact with email accounts via IMAP and SMTP, supporting mailbox listing, email search, retrieval, sending, and management.MIT