mailbox-mcp

mailbox-mcp

Enables AI agents to interact with emails captured by a local SMTP mail sink, supporting listing, reading, clearing, and waiting for messages.

Category
Visit Server

README

mailbox

CI npm license

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 -D

Or run ad hoc:

npx @sdk-e/mailbox

Quick start

mailbox            # SMTP on :11025, inbox UI on http://localhost:11090

Send mail to smtp://127.0.0.1:11025 from any app (nodemailer, Resend dev mode, etc.), then:

open http://localhost:11090   # or: mailbox-cli open

Bins

Bin Purpose
mailbox Run the sink (SMTP + HTTP + inbox UI)
mailbox-cli list, read <id>, wait [match] [--timeout s], clear, health, open
mailbox-mcp MCP server (list_emails, read_email, clear_emails, wait_for_email)

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 clear

wait 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
/api/health GET { ok, smtpPort, httpUrl, messageCount }
/api/email GET array of { id, receivedAt, from, to, subject, text, html }
/api/email/:id GET message above plus raw source; 404 {"error": …} if missing
/api/email/all DELETE { ok: true, messageCount: 0 }
/ GET inbox UI

Configuration

Environment variables (a .env.local, then .env, in the working directory are loaded if present):

Variable Default Purpose
MAIL_SMTP_PORT 11025 SMTP listen port
MAIL_HTTP_PORT 11090 HTTP API/UI port
MAIL_HTTP_URL derived from port Base URL used by CLI/MCP to reach the sink
MAILBOX_HOST 127.0.0.1 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, build

See CONTRIBUTING.md.

License

MIT

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured