Check emails for typos, disposable domains and dead domains. Runs locally, no API key.
Lets Claude, Cursor and other MCP clients check email addresses before you send to them or save them. It finds:
jane@gmial.com → did you mean jane@gmail.com?Runs on your machine. No API key, no account, no sign-up. The only network calls are DNS lookups over HTTPS (Cloudflare 1.1.1.1). It uses the same checks as the free checker at bouncelens.com.
It never connects to the recipient's mail server, so it can't confirm that a mailbox exists. The best result is
unconfirmed(format and domain OK). To check a whole CSV in your browser, use bouncelens.com.
Requires Node.js 18 or newer. Also listed on Smithery.
Claude Code
claude mcp add bouncelens -- npx -y github:bouncelens/mcp-email-check
Claude Desktop, Cursor, Windsurf and other clients. Add this to the client's MCP config (claude_desktop_config.json, .cursor/mcp.json, …):
{
"mcpServers": {
"bouncelens": {
"command": "npx",
"args": ["-y", "github:bouncelens/mcp-email-check"]
}
}
}
From a clone
git clone https://github.com/bouncelens/mcp-email-check.git
cd mcp-email-check && npm install
# then use: "command": "node", "args": ["/path/to/mcp-email-check/index.js"]
| Tool | Input | Returns |
|---|---|---|
check_email | email (string) | One result |
check_emails | emails (array, max 500) | summary with counts + one result per address, in input order |
Each result (real output for a mistyped Outlook address):
{
"input": "jane@outlok.com",
"email": "jane@outlok.com",
"status": "risky",
"reasons": ["No MX record; mail would go to the website server", "Looks like a typo of outlook.com"],
"flags": { "disposable": false, "role": false, "free": false, "duplicate": false, "gateway": false },
"did_you_mean": "jane@outlook.com",
"provider": null,
"mx": null
}
| status | Meaning |
|---|---|
invalid | Will bounce: bad syntax, domain doesn't exist, no mail server, or null MX |
risky | Disposable domain, likely typo, no MX record (mail would go to the web server), or the DNS lookup failed |
unconfirmed | Format and domain OK. The mailbox itself isn't checked |
Addresses never leave your machine. Only the domain part is sent to Cloudflare's DNS-over-HTTPS resolver (1.1.1.1) to look up its MX/A records.
npm install
npm test # offline: DNS answers are faked
lib/engine.js and data/disposable.json are generated from the BounceLens main codebase, so change them there.
MIT. Disposable-domain list: disposable-email-domains (CC0).
This listing does not have a supported local package template. Use the maintainer’s documentation for its hosted endpoint, authentication, and client-specific setup. No install command has been inferred.
https://github.com/bouncelens/mcp-email-check/releases/download/v1.0.0/bouncelens-email-check-1.0.0.mcpbotherBounceLens Email Check works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.
~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.~/.cursor/mcp.jsonRestart Cursor for changes to take effect..vscode/mcp.jsonReload VS Code window for changes to take effect.~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect..mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.