nfodor avatar

EmailMCP

nfodor/emailmcp

This gives Claude direct access to email through a freemium model. You get 23 read-only tools for free to check inbox contents, parse messages, and monitor threads. The 28 paid tools at $9.99/month unlock sending capabilities, which is where the real automation happens. Tokens provision automatically, so there's no manual API key dance. It's delivered over streamable HTTP, making it straightforward to integrate if you're building agents that need to triage support queues, respond to routine inquiries, or trigger workflows based on incoming messages. The split between free read and paid write is clean enough that you can prototype the logic before committing to the subscription.

tools
56
transport
HTTP
last updated
May 2, 2026

Install

From registry metadata
$ npx add-mcp https://mcp.setip.io/mcp --name emailmcp

Run in your terminal. add-mcp asks which agents to add it to (Claude Code, Codex, Cursor and more). Add -g to install it for every project.

Review the command, arguments and environment values before installing. MCP servers run with your local permissions.

Other ways

Claude Code

$ claude mcp add --transport http emailmcp https://mcp.setip.io/mcp

Run in your terminal. Add --scope user to make it available in every project.

Tools

Verified live · 56 tools

Verified live against the running server on Nov 6, 2026.

send_emailSend an email with text or HTML content10 params

Send an email with text or HTML content

Parameters* required
attachmentsarray
Array of file attachments
bccarray
Array of BCC recipient email addresses
bulk_modestring
Required when sending to multiple recipients. "individual": sends a separate email to each recipient (safest). "bcc": puts first recipient in TO:, rest in BCC. "to": puts all in TO: (exposes addres...one of individual · bcc · to
ccarray
Array of CC recipient email addresses
fromstring
Personal account address to send from. If set and matching account has personal SMTP/IMAP credentials (via set_personal_email_credentials), sends via that account and IMAP-APPENDs a copy to its Sen...
htmlstring
HTML content of the email
providerstring
Send via a specific provider instead of the default (e.g. smtp, mailgun, sendgrid, ses, gmail, resend). Requires that provider's credentials in env.
subject*string
Email subject line
text*string
Plain text content of the email
to*array
Array of recipient email addresses
send_template_emailSend an email using a predefined template6 params

Send an email using a predefined template

Parameters* required
bulk_modestring
Required when sending to multiple recipients. "individual": sends a separate email to each recipient (safest). "bcc": puts first recipient in TO:, rest in BCC. "to": puts all in TO: (exposes addres...one of individual · bcc · to
providerstring
Send via a specific provider instead of the default (e.g. smtp, mailgun, sendgrid, ses, gmail, resend)
subjectstring
Email subject (can override template subject)
template*string
Template name or path
to*array
Array of recipient email addresses
variablesobject
Template variables to replace
validate_emailValidate email addresses and check deliverability3 params

Validate email addresses and check deliverability

Parameters* required
check_mxboolean
Check MX records for domaindefault: true
check_smtpboolean
Perform SMTP validationdefault: false
emails*array
Array of email addresses to validate
get_email_usageGet email usage statistics — delivery rate, bounce rate, per-domain breakdown, top bounce reasons. Reads from persistent stats.3 params

Get email usage statistics — delivery rate, bounce rate, per-domain breakdown, top bounce reasons. Reads from persistent stats.

Parameters* required
accountstring
Filter stats by account address
domainstring
Filter stats by domain
periodstring
Time period for usage statisticsone of hour · day · week · monthdefault: day
verify_email_setupVerify IP whitelisting and email provider configuration4 params

Verify IP whitelisting and email provider configuration

Parameters* required
domainstring
Domain to check for DNS records (required if include_dns is true)
include_dnsboolean
Include DNS record verificationdefault: false
provider*string
Email provider to verify, or "all" for all configured providersone of sendgrid · mailgun · ses · resend · all
test_emailstring
Optional test email address to verify delivery
list_email_accountsList all configured IMAP email accounts. Shows default and named accounts (work, personal, etc.).

List all configured IMAP email accounts. Shows default and named accounts (work, personal, etc.).

No parameters. Call it with no arguments.

read_inboxRead emails from an inbox via IMAP with filtering options. If IMAP is configured in .env, no credentials needed. Use "account" to pick a named account (work, personal, etc.).4 params

Read emails from an inbox via IMAP with filtering options. If IMAP is configured in .env, no credentials needed. Use "account" to pick a named account (work, personal, etc.).

Parameters* required
accountstring
Named account to read from (e.g. "work", "personal"). Omit for default account.
filterobject
imap_configobject
Optional if IMAP is configured in .env (IMAP_HOST, IMAP_EMAIL, IMAP_PASSWORD)
optionsobject
get_mailbox_statusGet status information for an email mailbox. If IMAP is configured in .env, no credentials needed. Use "account" to pick a named account.3 params

Get status information for an email mailbox. If IMAP is configured in .env, no credentials needed. Use "account" to pick a named account.

Parameters* required
accountstring
Named account (e.g. "work", "personal"). Omit for default.
imap_configobject
mailboxstring
Mailbox to checkdefault: INBOX
list_mailboxesList all available mailboxes for an email account. If IMAP is configured in .env, no credentials needed. Use "account" to pick a named account.2 params

List all available mailboxes for an email account. If IMAP is configured in .env, no credentials needed. Use "account" to pick a named account.

Parameters* required
accountstring
Named account (e.g. "work", "personal"). Omit for default.
imap_configobject
start_smtp_receiverStart the SMTP server to receive forwarded corporate emails4 params

Start the SMTP server to receive forwarded corporate emails

Parameters* required
allowedForwardersarray
IP addresses allowed to forward emails (empty = allow all)
enableThreadingboolean
Enable conversation threadingdefault: true
portnumber
Port to listen on (default: 2525)default: 2525
receivingDomainsarray
Domains to accept emails for (empty = accept all)
stop_smtp_receiverStop the SMTP forward receiver server

Stop the SMTP forward receiver server

No parameters. Call it with no arguments.

get_smtp_receiver_statusGet the current status of the SMTP forward receiver

Get the current status of the SMTP forward receiver

No parameters. Call it with no arguments.

get_forwarded_emailsRetrieve forwarded emails with optional filtering4 params

Retrieve forwarded emails with optional filtering

Parameters* required
limitnumber
Maximum number of emails to returndefault: 50
originalSenderstring
Filter by original sender email address
sincestring
Filter emails since this date (ISO string)
threadIdstring
Filter by conversation thread ID
get_conversation_threadsGet conversation threads with forwarded emails4 params

Get conversation threads with forwarded emails

Parameters* required
limitnumber
Maximum number of threads to returndefault: 20
participantstring
Filter threads by participant email address
sincestring
Filter threads active since this date (ISO string)
subjectstring
Filter threads by subject content
get_conversation_contextGet full conversation context for a specific thread2 params

Get full conversation context for a specific thread

Parameters* required
maxEmailsnumber
Maximum number of emails to include in contextdefault: 10
threadId*string
Thread ID to get conversation for
get_threads_for_senderGet all conversation threads involving a specific sender1 params

Get all conversation threads involving a specific sender

Parameters* required
senderAddress*string
Email address of the sender
check_email_configCheck if email providers are configured, guide setup if needed

Check if email providers are configured, guide setup if needed

No parameters. Call it with no arguments.

configure_mailgunConfigure Mailgun email provider with step-by-step guidance3 params

Configure Mailgun email provider with step-by-step guidance

Parameters* required
api_key*string
Mailgun API Key (starts with "key-")
domain*string
Mailgun domain (e.g., mg.yourdomain.com)
from_email*string
From email address (e.g., noreply@yourdomain.com)
test_email_configTest email configuration by sending a test email1 params

Test email configuration by sending a test email

Parameters* required
test_emailstring
Email address to send test email to (optional, defaults to from_email)
create_mailboxCreate a new local mailbox for receiving email (autonomous mode). Each address gets its own inbox accessible via MCP tools.2 params

Create a new local mailbox for receiving email (autonomous mode). Each address gets its own inbox accessible via MCP tools.

Parameters* required
address*string
Email address for the mailbox (e.g. sales@company.com)
display_namestring
Display name for the mailbox
delete_mailboxDelete a local mailbox and all its stored emails (autonomous mode)1 params

Delete a local mailbox and all its stored emails (autonomous mode)

Parameters* required
address*string
Email address of the mailbox to delete
list_local_mailboxesList all local mailboxes on this server (autonomous mode)

List all local mailboxes on this server (autonomous mode)

No parameters. Call it with no arguments.

request_email_ipRequest a dedicated WireGuard IP for email sending. Submits to the provisioning queue.2 params

Request a dedicated WireGuard IP for email sending. Submits to the provisioning queue.

Parameters* required
account_idstring
Optional account identifier
email_domain*string
Your email domain (e.g. company.com)
check_ip_statusCheck the status of a pending WireGuard IP provisioning request1 params

Check the status of a pending WireGuard IP provisioning request

Parameters* required
request_idstring
Request ID from request_email_ip (omit to check saved request)
get_dns_recordsGenerate all required DNS records (A, MX, SPF, DKIM, DMARC) for autonomous email. Outputs copyable records for your DNS provider.5 params

Generate all required DNS records (A, MX, SPF, DKIM, DMARC) for autonomous email. Outputs copyable records for your DNS provider.

Parameters* required
dkim_selectorstring
DKIM selector (default: emailmcp)
dmarc_policystring
DMARC policy (default: reject)one of none · quarantine · reject
domain*string
Your email domain (e.g. company.com)
ipv4*string
Your dedicated IPv4 address (from WireGuard provisioning)
mail_hostnamestring
Mail server hostname (default: mail.domain)
verify_autonomous_setupVerify that autonomous email is properly configured: DNS records, DKIM, SMTP send/receive1 params

Verify that autonomous email is properly configured: DNS records, DKIM, SMTP send/receive

Parameters* required
domain*string
Your email domain to verify
setup_autonomous_securityAuto-configure DKIM, SPF, and DMARC for autonomous email. Generates DKIM keys, creates DNS records, and outputs everything needed.4 params

Auto-configure DKIM, SPF, and DMARC for autonomous email. Generates DKIM keys, creates DNS records, and outputs everything needed.

Parameters* required
dkim_selectorstring
DKIM selector (default: emailmcp)
dmarc_policystring
DMARC policy (default: reject)one of none · quarantine · reject
domain*string
Your email domain
ipv4*string
Your dedicated IPv4 address
create_email_ruleCreate a rule that triggers actions when incoming emails match conditions. Actions: forward, auto_reply, webhook, flag, move, mcp_tool, log, reject.6 params

Create a rule that triggers actions when incoming emails match conditions. Actions: forward, auto_reply, webhook, flag, move, mcp_tool, log, reject.

Parameters* required
actions*array
Actions to execute when rule matches
descriptionstring
What this rule does
match*object
Match conditions (ALL must match). Use from, domain, subject, subject_regex, body_contains, has_attachments, to, header.
name*string
Rule name (unique)
prioritynumber
Priority (lower = evaluated first, default 100)
stopboolean
Stop processing further rules after this one matches (default: false)
list_email_rulesList all email rules with their match conditions, actions, and hit counts

List all email rules with their match conditions, actions, and hit counts

No parameters. Call it with no arguments.

delete_email_ruleDelete an email rule by ID1 params

Delete an email rule by ID

Parameters* required
rule_id*string
Rule ID to delete
update_email_ruleUpdate an existing email rule (enable/disable, change match/actions/priority)6 params

Update an existing email rule (enable/disable, change match/actions/priority)

Parameters* required
actionsarray
New actions
enabledboolean
Enable or disable the rule
matchobject
New match conditions
prioritynumber
New priority
rule_id*string
Rule ID to update
stopboolean
Stop after match
start_idle_watchStart real-time IMAP IDLE watching on email accounts. Get push notifications when new emails arrive. Works with Gmail, iCloud, Office365, etc.1 params

Start real-time IMAP IDLE watching on email accounts. Get push notifications when new emails arrive. Works with Gmail, iCloud, Office365, etc.

Parameters* required
accountstring
Account name to watch (e.g. "work", "personal"). Omit to watch all configured accounts.
stop_idle_watchStop IMAP IDLE watching on an account (or all accounts)1 params

Stop IMAP IDLE watching on an account (or all accounts)

Parameters* required
accountstring
Account to stop watching. Omit to stop all.
get_idle_statusGet status of IMAP IDLE watchers — which accounts are being watched, connection status, new email counts

Get status of IMAP IDLE watchers — which accounts are being watched, connection status, new email counts

No parameters. Call it with no arguments.

provision_startPhase 1: Create a cloud VPS with dedicated IP. Generates WireGuard config. Returns the IP and instructions to connect. Supports DigitalOcean, Vultr, Hetzner, OVH.4 params

Phase 1: Create a cloud VPS with dedicated IP. Generates WireGuard config. Returns the IP and instructions to connect. Supports DigitalOcean, Vultr, Hetzner, OVH.

Parameters* required
cloud_api_key*string
Cloud provider API key
cloud_provider*string
Cloud providerone of digitalocean · vultr · hetzner · ovh
regionstring
Cloud region (e.g. nyc1, ewr, nbg1, GRA11). Omit for default.
service_domain*string
Domain you own for the email service (e.g. emailrelay.xyz). NS will point here.
provision_resumeResume provisioning from where you left off. Automatically detects the current phase and advances: WireGuard connection → DNS setup → TLS → verification. Run this after each user action (connecting WireGuard, adding DNS records).

Resume provisioning from where you left off. Automatically detects the current phase and advances: WireGuard connection → DNS setup → TLS → verification. Run this after each user action (connecting WireGuard, adding DNS records).

No parameters. Call it with no arguments.

provision_statusShow current provisioning state — which phases are complete, what to do next

Show current provisioning state — which phases are complete, what to do next

No parameters. Call it with no arguments.

list_cloud_providersList supported cloud providers with pricing, regions, and PTR support info

List supported cloud providers with pricing, regions, and PTR support info

No parameters. Call it with no arguments.

start_health_monitorStart monitoring the provisioned email server — checks tunnel, SMTP, DNS, and IP reputation every 60 seconds. Auto-restarts on failure.

Start monitoring the provisioned email server — checks tunnel, SMTP, DNS, and IP reputation every 60 seconds. Auto-restarts on failure.

No parameters. Call it with no arguments.

get_health_statusGet current health status of the email server — tunnel, SMTP, DNS, IP blocklist checks

Get current health status of the email server — tunnel, SMTP, DNS, IP blocklist checks

No parameters. Call it with no arguments.

add_sending_domainAdd a customer sending domain. Generates DKIM keys and returns the 4 DNS records the customer needs to add. Works like SendGrid domain authentication — self-hosted.1 params

Add a customer sending domain. Generates DKIM keys and returns the 4 DNS records the customer needs to add. Works like SendGrid domain authentication — self-hosted.

Parameters* required
domain*string
Customer domain (e.g. company.com)
list_sending_domainsList all configured sending domains with their verification status

List all configured sending domains with their verification status

No parameters. Call it with no arguments.

remove_sending_domainRemove a sending domain and its DKIM keys1 params

Remove a sending domain and its DKIM keys

Parameters* required
domain*string
Customer domain to remove
get_domain_dns_recordsGet the DNS records a customer needs to add for a sending domain1 params

Get the DNS records a customer needs to add for a sending domain

Parameters* required
domain*string
Customer domain
regenerate_zone_fileRegenerate the complete DNS zone file for the service domain including all customer subdomains. Use after adding/removing domains.

Regenerate the complete DNS zone file for the service domain including all customer subdomains. Use after adding/removing domains.

No parameters. Call it with no arguments.

create_email_accountCreate an email account with SMTP credentials. Returns SMTP password once — save it. The account can then send/receive via this server.3 params

Create an email account with SMTP credentials. Returns SMTP password once — save it. The account can then send/receive via this server.

Parameters* required
address*string
Email address (e.g. sales@company.com)
display_namestring
Display name for the account
domainstring
Sending domain (auto-derived from address if omitted)
delete_email_accountDelete an email account and revoke its SMTP credentials1 params

Delete an email account and revoke its SMTP credentials

Parameters* required
address*string
Email address of the account to delete
list_email_accounts_managedList all email accounts with SMTP credentials (optionally filtered by domain)1 params

List all email accounts with SMTP credentials (optionally filtered by domain)

Parameters* required
domainstring
Filter by domain
reset_account_passwordReset the SMTP password for an email account. Returns new password once.1 params

Reset the SMTP password for an email account. Returns new password once.

Parameters* required
address*string
Email address of the account
start_domain_verificationBegin a domain-verification window: temporarily set the target domain's MX to verify.setip.io, start (or reuse) the EmailMCP SMTP receiver on :25, and forward any inbound mail for *@domain to forward_to so a human can grab a verification code from the provider (Apple/Google/et...4 params

Begin a domain-verification window: temporarily set the target domain's MX to verify.setip.io, start (or reuse) the EmailMCP SMTP receiver on :25, and forward any inbound mail for *@domain to forward_to so a human can grab a verification code from the provider (Apple/Google/et...

Parameters* required
domain*string
Domain whose MX is being temporarily redirected (must be a POC we own in setipio-api)
forward_to*string
Address where verification mails are relayed in real time
real_mx_targetstring
Optional. If provided, on teardown the MX is set to this target (e.g. apple.com) instead of restoring the pre-window snapshot.
ttl_minutesnumber
Auto-teardown after this many minutes (default 60)
stop_domain_verificationTear down an active domain-verification window: restore MX (snapshot or supplied real_mx_target), remove the per-domain forwarder. Stops the receiver if no other windows remain.2 params

Tear down an active domain-verification window: restore MX (snapshot or supplied real_mx_target), remove the per-domain forwarder. Stops the receiver if no other windows remain.

Parameters* required
domain*string
Domain to tear down
real_mx_targetstring
Optional final MX target (e.g. apple.com). Overrides the snapshot restore.
get_domain_verification_statusShow active verification windows, the receiver state, and TTLs.

Show active verification windows, the receiver state, and TTLs.

No parameters. Call it with no arguments.

get_domain_verification_emailsList mails received in the verification window for a given domain (e.g. to find Apple's verification code without checking the forward_to mailbox).1 params

List mails received in the verification window for a given domain (e.g. to find Apple's verification code without checking the forward_to mailbox).

Parameters* required
domain*string
Domain to filter on
set_personal_email_credentialsAttach a personal account's own SMTP + IMAP credentials (iCloud, Gmail app password, Fastmail, Office365, etc.) to an existing account. Once set, send_email with from=<address> sends via that SMTP and IMAP-APPENDs a copy to its Sent folder. Passwords are AES-256-GCM encrypted...10 params

Attach a personal account's own SMTP + IMAP credentials (iCloud, Gmail app password, Fastmail, Office365, etc.) to an existing account. Once set, send_email with from=<address> sends via that SMTP and IMAP-APPENDs a copy to its Sent folder. Passwords are AES-256-GCM encrypted...

Parameters* required
address*string
Address of the existing account (must already be created via create_email_account)
imap_host*string
e.g. imap.mail.me.com, imap.gmail.com, imap.fastmail.com
imap_password*string
IMAP password (often same as SMTP)
imap_portnumber
Default 993
imap_user*string
IMAP username — usually the full email address
sent_folderstring
Override Sent folder name. Auto-discovered via SPECIAL-USE if omitted.
smtp_host*string
e.g. smtp.mail.me.com (iCloud), smtp.gmail.com, smtp.fastmail.com
smtp_password*string
SMTP password or app-specific password
smtp_portnumber
Default 587
smtp_user*string
SMTP username — usually the full email address
get_suppression_listView all addresses on the bounce suppression list — these addresses will be rejected on send

View all addresses on the bounce suppression list — these addresses will be rejected on send

No parameters. Call it with no arguments.

remove_from_suppressionRemove an address from the bounce suppression list (manual override to allow sending again)1 params

Remove an address from the bounce suppression list (manual override to allow sending again)

Parameters* required
address*string
Email address to unblock

Sponsors

Readme

Details

Repository
github.com/nfodor/emailmcp
Categories
AI & LLM Tools, Communication & Messaging
Transport
HTTP
Registry
MCP registry, active
Tools verified
Nov 6, 2026

Related AI & LLM Tools MCP servers

View all
1noriget avatarAgentCronnoriget/agentcronSchedule tasks for later from your AI agent: reminders, delayed webhooks, recurring jobs.0stars
2noriget avatarAgentPingnoriget/agentpingLet your AI agent notify you by email, Slack, Discord, or webhook. One tool: send_notification.0stars
3nousulabs-debug avatarPohjola Apinousulabs-debug/pohjola-apiAgent-native API for Finnish public company data via YTJ. Pay-per-call $0.01 USDC over x402.0stars
4noves-inc avatarCanton Mcpnoves-inc/canton-mcpQuery Canton Network balances, rewards, transactions, prices, and identity from any AI agent.0stars
5o-mega-enterprise avatarSuprsonico-mega-enterprise/suprsonic-mcpOne API key, dozens of capabilities for your AI agent. Zero provider auth.0stars
6ojaskord avatarDocument Integrity Validatorojaskord/document-integrity-validator-mcpAI reasoning checks any document against known international standards before your agent acts on it.0stars