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-mcp send a message to dev-agent about the API endpoint changes"
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-mcp
MCP server for inter-agent mailbox communication. Structured API over the existing <repo>/.claude/{inbox,outbox}/*.md file convention used by Grygoriy's Claude-Code orchestration setup.
Status: Phase 1 in development.
Full spec: see SPEC.md.
Quick start
npm install
npm run build
npm start # runs the MCP server over stdioRegister in ~/.claude.json under mcpServers:
{
"mcpServers": {
"mailbox": {
"command": "node",
"args": ["C:\\Users\\Gree\\workspace\\tools\\mailbox-mcp\\dist\\index.js"]
}
}
}Restart Claude Code. Verify via /mcp — should list mailbox as connected.
Related MCP server: claude-presence
Tool surface (Phase 1)
mail_send(to, topic, body, [status, refs, reply_to, labels])— drop a mail into target agent's inboxmail_list(agent, folder, [status, since, labels, limit])— list mailsmail_get(id, agent, folder)— read full mailmail_reply(in_reply_to, body, [topic, to, parent_status, initial_status, ...])— reply + auto-flip parent. Topic defaults to the parent's — same conversation continues; pass an explicit topic only to fork the subject.mail_status(id, agent, folder, status)— flip status, audit-loggedmail_thread(root_id)— full thread tree
See SPEC.md for details.
Phase 2 (planned)
GitLab pipeline / MR watchers + templates + scheduled / conditional send. Separate background daemon.
Layout
src/
├── index.ts # MCP server entrypoint
├── types.ts # Mail types
├── config.ts # Agent enum + paths
├── tools/ # One file per tool
└── storage/ # File I/O, frontmatter, naming, auditNotes
mail_reply topic behavior — the reply's topic defaults to the parent's topic (same conversation continues). Pass an explicit topic only when the reply forks the subject. Previously the schema required topic; if a caller omitted it, the JS coerced undefined → the literal string "undefined" past the regex-only validator, producing filenames like 2026-07-07-1111-undefined.md and frontmatter with no topic: key — which mail_list then silently skipped as malformed. assertValidTopic now hard-rejects non-string / empty.
License
MIT — see LICENSE.
Available Tools
7 toolsmail_getA
Fetch a single mail by id from a given agent's folder. Returns full metadata + markdown body + absolute path.
Inputs: id (required), agent (required), folder (required).
mail_listA
List mails in a target agent's inbox or outbox. Filters: status, since (ISO date), labels (any-match), limit (default 100). Sorted newest-first.
Inputs: agent (required), folder (required), limit, since, +2 more.
mail_migrateA
Backfill id: frontmatter into hand-written legacy briefs in a given folder. Scans .md files, generates an id from filename timestamp + nanoid suffix for any file missing one, rewrites atomically. Use dry_run: true first to preview.
Inputs: agent (required), folder (required), dry_run.
mail_replyA
Reply to a mail. Finds parent in the CALLER's own inbox or outbox (use mail_send if you need to reply across agents), sends the reply with to = parent.from by default, and auto-flips the parent's status to 'done'. One tool call instead of three.
Inputs: body (required), in_reply_to (required), to, ref, +5 more.
mail_sendA
Send a brief/message to another agent's inbox. Writes a YAML-frontmatter markdown file to /.claude/inbox/-.md atomically. Caller identity comes from MAILBOX_MCP_AGENT_ID env var (default 'workspace'). Use this instead of writing files manually — it enforces naming, frontmatter, and audit.
Inputs: to (required), body (required), topic (required), ref, +4 more.
mail_statusB
Change a mail's status. Validates the state-machine transition (open ↔ holding → done/superseded; done and superseded are terminal). Atomic write + audit entry.
Inputs: id (required), agent (required), folder (required), status (required).
mail_threadA
Walk the reply_to graph rooted at the given mail. Returns root + descendants in breadth-first order with depth annotation. Scans all known agents' folders — expensive but complete.
Inputs: root_id (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 7 tools
Each tool has a clearly distinct purpose: retrieving specific mails, listing mails, migrating legacy files, replying to mails, sending new mails, changing status, and traversing threads. No two tools overlap in functionality.
All tool names follow the consistent pattern 'mail_<verb>' with lowercase snake_case verbs (get, list, migrate, reply, send, status, thread). The naming is perfectly uniform.
7 tools is well-scoped for a mailbox server. The set covers the essential operations without being excessive. Each tool serves a distinct and necessary function.
The tool surface covers core mailbox operations: fetching, listing, sending, replying, status management, and thread traversal. Minor gaps exist (e.g., no direct deletion), but status updates (done/superseded) effectively serve as archival, so the surface is mostly complete.
Related MCP Connectors
Shared memory and mail for your AI agents. Verified with Claude Code; other MCP clients in testing.
MCP server for MailTempo's public free temporary email inboxes.
Your IMAP mailbox as an MCP server: read, search and (if you allow it) organize mail. Open source.
Your mailbox for MCP clients: search, read, draft, send, rules and notes. Sending is off by default.
Related MCP Servers
- AlicenseAqualityCmaintenanceMCP server that gives Claude and other MCP hosts full access to Mail.app on macOS — search, read, send, reply, flag, move, and more across all accounts configured in Mail.app.2470 npm1MIT
- AlicenseNot gradedqualityCmaintenanceMinimal MCP server for inter-session coordination between parallel Claude Code instances, providing presence registry, advisory resource locks, and a broadcast inbox.8 npm12MIT
- FlicenseNot gradedqualityCmaintenanceLocal IMAP/SMTP MCP server that lets Claude read, search, draft, send, flag, and move mail across multiple IMAP mailboxes. Credentials stay on your machine.-
- AlicenseNot gradedqualityDmaintenanceFile-based MCP server for AI coding agents to coordinate via inbox messaging and human escalation.MIT