zerodrop-mcp

Email verification for AI agents — an MCP server that gives Claude, Cursor, Claude Code, and any MCP client disposable email inboxes with auto-extracted OTPs and magic links.
Your agent signs up for a service. The service sends a verification code. Without an inbox it can read, the agent is stuck. With zerodrop-mcp:
Agent: generate_inbox()
→ swift-x7k29ab@zerodrop-sandbox.online
Agent: [fills the signup form with that address]
Agent: wait_for_email(inbox, require_otp: true)
→ { "otp": "847291", "subject": "Verify your email", ... }
Agent: [enters 847291 — flow complete]
No Docker. No SMTP. No API key. No signup. Free tier works out of the box.
Install
Claude Code
claude mcp add zerodrop -- npx -y zerodrop-mcp
Claude Desktop
Add to claude_desktop_config.json:
{
"mcpServers": {
"zerodrop": {
"command": "npx",
"args": ["-y", "zerodrop-mcp"]
}
}
}
Cursor
Add to .cursor/mcp.json (project) or ~/.cursor/mcp.json (global):
{
"mcpServers": {
"zerodrop": {
"command": "npx",
"args": ["-y", "zerodrop-mcp"]
}
}
}
generate_inbox
Creates a disposable email address. Local and instant — no network request.
| Param | Type | Description |
|---|
prefix | string, optional | Prefix for the inbox name, e.g. your app name |
Returns the inbox address and a live watch URL.
wait_for_email
Blocks until a matching email arrives, then returns it with the OTP and magic link already extracted — the agent never parses HTML or regexes a body.
| Param | Type | Description |
|---|
inbox | string | Address from generate_inbox |
timeout_seconds | number, optional | Default 30, max 120 |
from_contains | string, optional | Filter by sender |
subject_contains | string, optional | Filter by subject |
require_otp | boolean, optional | Only match emails with an OTP |
require_magic_link | boolean, optional | Only match emails with a magic link |
Returns:
{
"from": "noreply@yourapp.com",
"subject": "Your verification code",
"received_at": "2026-07-18T12:34:56Z",
"otp": "847291",
"magic_link": null,
"body_preview": "Your code is: 847291..."
}
check_inbox
Non-blocking snapshot of the inbox — recent emails with extracted fields, or an empty list.
What agents use this for
- Testing auth flows end to end — signup → OTP → verified, driven entirely by the agent
- QA automation — Claude Code writing and running Playwright tests that need real inboxes
- Autonomous workflows — any agent task that hits an email-verification wall
- Development — "sign up for my own app and tell me if the verification email works"
How it works
Emails sent to a generated inbox are caught at Cloudflare's edge by ZeroDrop's open-source worker. OTPs and magic links are extracted at the edge before your agent reads them. Inboxes auto-delete after 30 minutes on the free tier.
Configuration
Environment variables (set in your MCP client config):
| Variable | Default | Description |
|---|
ZERODROP_API_KEY | — | Workspace key. Omit for free sandbox mode. |
ZERODROP_BASE_URL | https://zerodrop.dev | Self-hosted instance URL |
{
"mcpServers": {
"zerodrop": {
"command": "npx",
"args": ["-y", "zerodrop-mcp"],
"env": { "ZERODROP_API_KEY": "your-key" }
}
}
}
Writing tests instead?
If you're generating test code rather than driving flows live, use the SDKs directly:
npm · PyPI · Go · RubyGems · Packagist · JitPack · GitHub Action
AI coding assistant context: docs.zerodrop.dev/ai-coding
Security
- The server makes requests only to
ZERODROP_BASE_URL (zerodrop.dev by default) — nothing else
- Inbox generation is fully local
- Two runtime dependencies: the official MCP SDK and zod
- Report issues: founder@zerodrop.dev
License
MIT — zerodrop.dev