Migadu MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MIGADU_EMAIL | Yes | Your Migadu account email address. | |
| MIGADU_DOMAIN | No | Optional default domain to use when not explicitly provided in tool calls. | |
| MIGADU_API_KEY | Yes | Your Migadu API key (obtained from Admin → My Account → API Keys). |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_domainsA | List all domains for the authenticated account. |
| get_domainB | Get full details for a specific domain. |
| get_domain_recordsA | Get the DNS records (MX, SPF, DKIM, DMARC, verification) required for domain setup. |
| get_domain_diagnosticsA | Run DNS validation diagnostics on a domain. Use after configuring records externally. |
| get_domain_usageB | Get message and storage usage metrics for a domain. |
| create_domainA | Create domain(s). Migadu recommends hosted_dns=False (use external DNS). List of dicts with: name, hosted_dns (optional, default false), create_default_addresses (optional, default true). |
| update_domainA | Update domain field(s). List of dicts with: name (required), description (optional), tags (optional). |
| activate_domainA | Activate domain(s) once DNS records are configured. Fails with 422 if DNS validation fails. List of dicts with: name. |
| list_mailboxesC | List email mailboxes for a domain. |
| get_mailboxA | Get full mailbox details by email or local part. |
| create_mailboxA | Create mailbox(es). List of dicts with: target, name, password or password_recovery_email, is_internal (optional), forwarding_to (optional). |
| update_mailboxA | Update mailbox settings. List of dicts with: target (required) and any of: name, may_send, may_receive, may_access_imap, may_access_pop3, may_access_managesieve, spam_action, spam_aggressiveness, sender_denylist, sender_allowlist, recipient_denylist. |
| delete_mailboxA | Delete mailbox(es). DESTRUCTIVE. List of dicts with: target. |
| reset_mailbox_passwordC | Reset mailbox password(s). List of dicts with: target, new_password. |
| set_autoresponderB | Configure autoresponder(s). List of dicts with: target, active, subject (optional), body (optional), expires_on (optional, YYYY-MM-DD). |
| list_identitiesB | List identities (send-as addresses) for a mailbox. |
| get_identityC | Get full details for a specific identity. |
| create_identityC | Create identit(ies). List of dicts with: target, mailbox, name, password, domain (optional). |
| update_identityA | Update identity settings. List of dicts with: target, mailbox (required) and any of: domain, name, may_send, may_receive, may_access_imap, may_access_pop3, may_access_managesieve, footer_active, footer_plain_body, footer_html_body. |
| delete_identityB | Delete identit(ies). DESTRUCTIVE. List of dicts with: target, mailbox, domain (optional). |
| list_aliasesB | List aliases for a domain. |
| get_aliasB | Get alias details by local part. |
| create_aliasA | Create alias(es). List of dicts with: target, destinations (list or CSV), domain (optional), is_internal (optional). |
| update_aliasB | Update alias destinations. List of dicts with: target, destinations (list or CSV), domain (optional). |
| delete_aliasA | Delete alias(es). DESTRUCTIVE. List of dicts with: target, domain (optional). |
| list_rewritesC | List rewrite rules for a domain. |
| get_rewriteB | Get rewrite rule details by slug/name. |
| create_rewriteB | Create rewrite rule(s). List of dicts with: name, local_part_rule (pattern), destinations, domain (optional), order_num (optional). |
| update_rewriteB | Update rewrite rule(s). List of dicts with: name (required), and any of: new_name, local_part_rule, destinations, order_num, domain. |
| delete_rewriteA | Delete rewrite rule(s). DESTRUCTIVE. List of dicts with: name, domain (optional). |
| list_forwardingsA | List external forwardings configured on a mailbox. |
| get_forwardingA | Get details for a specific forwarding (confirmation status, expiry, active state). |
| create_forwardingB | Create forwarding(s). Forwardings require external-user confirmation. List of dicts with: mailbox, address, domain (optional), expires_on (optional, YYYY-MM-DD), remove_upon_expiry (optional). |
| update_forwardingA | Update forwarding(s). List of dicts with: mailbox, address (required), and any of: is_active, expires_on, remove_upon_expiry, domain. |
| delete_forwardingA | Delete forwarding(s). DESTRUCTIVE. List of dicts with: mailbox, address, domain (optional). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| mailbox_creation_wizard | Generate a step-by-step plan for creating mailboxes based on requirements. |
| bulk_operation_planner | Plan a bulk operation across multiple resources. |
| domain_onboarding | Walk through onboarding a new Migadu domain end-to-end. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| All Domains | All domains for the authenticated account |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Michaelzag/migadu-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server