A side-by-side look at the Mail7 Email Validation and Email Spam Tester MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Mail7 Email Validation for communication work as a local process; choose Email Spam Tester for communication over a hosted endpoint. You can also run both side by side in one mcpServers block.
MAIL7_API_KEY, MAIL7_BASE_URL.validate_email, validate_emails, check_domain.get_test_address, wait_for_report, get_report.Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | Communication | Communication |
| Quality signal | 56/100 · Good | 82/100 · Excellent |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Remote HTTP/SSE |
| Auth | Not declared | No auth required |
| Pricing | Not declared | Free |
| Required env vars | MAIL7_API_KEYMAIL7_BASE_URL | None listed |
| Verified owner | Community listing | Verified |
| GitHub stars | 0 | 2 |
| Directory activity | 2 views 0 installs 0 upvotes | 6 views 0 installs 2 upvotes |
| Tools | 4 | 4 |
| Full listing | View Mail7 Email Validation | View Email Spam Tester |
validate_emailCheck whether a single email address is deliverable: syntax, domain MX records, disposable-domain database and a live SMTP mailbox probe. Status is one of "Valid", "Not Valid", "Unknown". Unknown means the mailbox could NOT be checked (catch-all domain, greylisting, blocked SMTP port) - it is NOT a bad address. Never delete, reject or report Unknown addresses as invalid; present them separately and let the user decide. Use validate_emails instead when you have more than one address.validate_emailsCheck up to 50 email addresses in one call and get a per-address verdict plus a summary. Status is one of "Valid", "Not Valid", "Unknown". Unknown means the mailbox could NOT be checked (catch-all domain, greylisting, blocked SMTP port) - it is NOT a bad address. Never delete, reject or report Unknown addresses as invalid; present them separately and let the user decide. Requires MAIL7_API_KEY (anonymous callers get a 25-address free sample only). Each address takes a few seconds of real SMTP work, so this call is slow by nature: for a longer list, split it and call this tool repeatedly with the next 50 addresses. Never run two calls in parallel - the API serialises one bulk job per client and the second call fails.check_domainAudit a domain's email setup in one call: MX records, SPF, DKIM, DMARC, MTA-STS, TLS-RPT, DNSSEC and BIMI, graded A-F with a fix for every problem found. Use this to answer "can this domain send and receive mail" or "why do our messages land in spam". Takes a domain (example.com), not an email address. The default answer summarises every section; pass `section` to get the full records and findings of one of them.check_spfFetch and analyse the SPF record of a domain: the raw record, its mechanisms, lookup count and common misconfigurations. Use check_domain instead when the question is about overall deliverability rather than SPF specifically.get_test_addressReserve a single-use address to send a draft email to, for a full check.
Returns the address and the URL its report will appear at. The address
accepts exactly one message and expires after an hour. The email has to be
sent by the person, from the platform or mailbox they really send from:
half the checks read what that platform adds. The report covers 42 checks
(SPF, DKIM, DMARC, reverse DNS, TLS, blocklists, content, links, the
Gmail and Yahoo bulk-sender rules) and a plan of what to fix.
lang is decided now because the message arrives minutes later over SMTP,
which carries no hint of who is waiting for it. What wait_for_report
returns quotes check lines in English whatever it is set to; the person
following report_url sees their own language.
wait_for_reportWait until the message arrives and has been analysed, then summarise it.
Call it after the email has been sent to the address from
get_test_address. Blocks rather than returning "not ready yet": an agent
told to poll writes a sleep loop and usually gives up before the analysis
finishes. Provider placement keeps filling in for up to 30 minutes after
the report; get_report reads the latest.
get_reportRead a report by its slug without waiting, with provider placement so far.
The report stays at its link for good and anyone with the link can read
it: the checks, the score, the fix plan, and the subject and sender of
the email.
get_message_sourceThe message exactly as it was received: headers, both bodies, source.
Useful when a finding points at a header and the agent needs to see what it
actually sent rather than what it believes it sent. The message is kept
for an hour after it arrives and then deleted; within that hour anyone
with the slug can read it. After that only the report remains.
Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
{
"mcpServers": {
"mail7-email-validation": {
"command": "npx",
"args": [
"-y",
"mail7-mcp"
],
"env": {
"MAIL7_API_KEY": "YOUR_MAIL7_API_KEY_HERE",
"MAIL7_BASE_URL": "YOUR_MAIL7_BASE_URL_HERE"
}
}
}
}
{
"mcpServers": {
"email-spam-tester": {
"url": "https://email-spam-tester.com/mcp"
}
}
}