MiniMail MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| IMAP_PORT | No | The IMAP server port (e.g., 993 for SSL, 1143 for local testing). | |
| IMAP_USER | No | The IMAP username or email address for checking emails. | |
| SMTP_PORT | No | The SMTP server port (e.g., 587 for TLS, 1025 for local testing). | |
| SMTP_USER | No | The SMTP username or email address for authentication. | |
| PYTHONPATH | No | The path to the source directory, required if running the server module directly. | |
| IMAP_SERVER | No | The IMAP server address for checking emails (e.g., imap.gmail.com). | |
| SMTP_SERVER | No | The SMTP server address for standard email providers (e.g., smtp.gmail.com or 127.0.0.1). | |
| IMAP_PASSWORD | No | The IMAP password or App Password for the email account. | |
| SMTP_PASSWORD | No | The SMTP password or App Password for the email account. | |
| MAILGUN_DOMAIN | No | The domain configured in Mailgun. | |
| RESEND_API_KEY | No | API key for Resend transactional email service. | |
| MAILGUN_API_KEY | No | API key for Mailgun transactional email service. | |
| MAILHOG_ENABLED | No | Set to 'true' to enable MailHog local testing service. | |
| MAILHOG_HTTP_URL | No | The HTTP URL for the MailHog web interface. | http://localhost:8025 |
| SENDGRID_API_KEY | No | API key for SendGrid transactional email service. | |
| MAILHOG_SMTP_HOST | No | The SMTP host for MailHog. | localhost |
| MAILHOG_SMTP_PORT | No | The SMTP port for MailHog. | 1025 |
| RESEND_FROM_EMAIL | No | The verified 'from' email address to use with Resend. | |
| SLACK_WEBHOOK_URL | No | The incoming webhook URL for Slack integration. | |
| MAILGUN_FROM_EMAIL | No | The verified 'from' email address to use with Mailgun. | |
| SENDGRID_FROM_EMAIL | No | The verified 'from' email address to use with SendGrid. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| send_emailA | Send an email via specified email service. Sends an email using the specified email service. Supports SMTP, API-based services, local testing services, and webhook integrations. Automatically detects service capabilities and uses the appropriate sending method. Args: to: Recipient email address(es). Can be: - Single address: "user@example.com" - Comma-separated: "user1@example.com, user2@example.com" - List: ["user1@example.com", "user2@example.com"] subject: Email subject line. Required. body: Plain text email body. Required. This serves as the fallback for email clients that don't support HTML. service: Email service to use. Options: - "default": Default SMTP/IMAP service (from env vars) - "sendgrid": SendGrid transactional email - "mailgun": Mailgun transactional email - "resend": Resend transactional email - "mailhog": Local MailHog testing service - "slack": Send to Slack webhook - "discord": Send to Discord webhook - Custom service names configured via EMAIL_SERVICES html: Optional HTML email body. If provided, the email will be sent as multipart/alternative with both text and HTML versions. Example: "TitleContent" cc: Optional CC (carbon copy) recipients. Same format as 'to'. bcc: Optional BCC (blind carbon copy) recipients. Same format as 'to'. Returns: Dictionary with service-specific results: { "success": bool, # True if email sent successfully "status": str, # "sent" on success "service": str, # Service used "to": str, # Recipient address(es) "subject": str, # Email subject "error": str # Error message if success is False } Examples: # Send via default SMTP service send_email( to="user@example.com", subject="Hello", body="This is a test email" ) Notes: - Service availability depends on configuration - API services may have different rate limits and features - Local testing services don't send real emails - Webhook services convert emails to chat messages |
| check_inboxA | Check inbox via specified email service. Retrieves emails from the specified service and folder. Supports IMAP-based services, local testing services with web APIs, and service-specific inbox checking. Args: service: Email service to check. Options: - "default": Default IMAP service (from env vars) - "mailhog": Local MailHog testing service - "mailpit": Local Mailpit testing service - Custom service names that support inbox checking folder: Mail folder name to check. Default: "INBOX". Common folders: - "INBOX": Main inbox folder - "Sent": Sent items folder - "Drafts": Draft messages folder - "Trash": Deleted messages folder Folder names are case-sensitive and provider-specific. limit: Maximum number of emails to return. Default: 10. unread_only: If True, only returns unread emails. Default: False. from_contains: Optional case-insensitive substring filter on From (IMAP scans recent mail). subject_contains: Optional case-insensitive substring filter on Subject. Returns: Dictionary with service-specific results: { "success": bool, # True if inbox check succeeded "emails": [ # List of email dictionaries { "id": str, # Message ID "subject": str, # Email subject "from": str, # Sender address "date": str, # Email date "read": bool # Read status } ], "count": int, # Number of emails returned "service": str, # Service used "folder": str, # Folder checked "error": str # Error message if success is False } Examples: # Check default IMAP inbox check_inbox() # Returns: {"success": True, "emails": [...], "count": 10, "service": "default"} Notes: - Not all services support inbox checking (API/webhook services typically don't) - Local testing services provide web UIs for viewing emails - IMAP services support standard folder names - Results are sorted with most recent first |
| mailing_lists_catalogA | MAILING_LISTS_CATALOG — List named mailing-list presets from EMAIL_MCP_MAILING_LISTS (JSON). Configure labels/folders once (e.g. Gmail filter → IMAP folder), then use mailing_list_latest(id). Returns: success, entries[] with id, service, folder, limit, unread_only, from_contains, subject_contains; or error if unset/invalid JSON. |
| mailing_list_latestA | MAILING_LIST_LATEST — Fetch newest messages for a preset id (see mailing_lists_catalog). Loads folder/service/filters from EMAIL_MCP_MAILING_LISTS. Typical use: newsletter drops in a dedicated IMAP folder (Alpha Signal, etc.). Optional limit/unread_only override entry defaults. Args: list_id: Preset id from catalog (e.g. alphasignal). limit: Override max messages (default: from preset, usually 5). unread_only: Override UNSEEN-only (default: from preset, usually True for newest drop). Returns: Same shape as check_inbox plus list_id and preset fields. |
| email_statusA | Get email service status and test connectivity. Tests connectivity for specified service or all configured services. Verifies that credentials are correct and services are reachable. Args: service: Specific service to test, or None for all services. Returns: Dictionary with service status information: { "server": str, # Server name "version": str, # Server version "services": { # Service-specific status "service_name": { "configured": bool, "connected": bool, "error": str, # Error message if connection failed "type": str # Service type (smtp, api, local, webhook) } }, "total_services": int, "configured_services": int, "connected_services": int } Examples: # Check all services email_status() # Returns status for all configured services Notes: - Tests actual connectivity, not just configuration presence - Connection tests are quick (timeout after 5-10 seconds) - API keys and passwords are not exposed in results |
| configure_serviceA | Configure a new email service dynamically. Adds a new email service configuration at runtime. The service will be available for sending emails and inbox checking immediately. Args: name: Unique name for the service (e.g., "my-sendgrid", "dev-mailhog") type: Service type - "smtp", "api", "local", or "webhook" config: Service-specific configuration dictionary enabled: Whether the service should be enabled (default: True) Returns: Dictionary with configuration result: { "success": bool, "service": str, # Service name "type": str, # Service type "message": str # Success/error message } Examples: # Configure SendGrid API service configure_service( name="my-sendgrid", type="api", config={ "api_key": "your-sendgrid-key", "api_url": "https://api.sendgrid.com/v3/mail/send", "from_email": "noreply@yourdomain.com", "service_type": "sendgrid" } ) Notes: - Service names must be unique - Configuration is stored in memory (not persisted) - Use list_services() to see available services |
| list_servicesA | List all configured email services. Returns information about all available email services, their types, and configuration status. Returns: Dictionary with service information: { "services": { "service_name": { "type": str, # Service type "enabled": bool, # Whether service is enabled "configured": bool, # Whether properly configured "description": str # Human-readable description } }, "count": int, # Total number of services "enabled_count": int, # Number of enabled services "types": [str] # List of available service types } Examples: # List all services list_services() # Returns: { # "services": { # "default": {"type": "smtp", "enabled": true, "configured": true, "description": "Default SMTP/IMAP service"}, # "sendgrid": {"type": "api", "enabled": true, "configured": true, "description": "SendGrid transactional email"} # }, # "count": 2, # "enabled_count": 2, # "types": ["smtp", "api", "local", "webhook"] # } Notes: - Shows both automatically configured and manually added services - Configuration status indicates if required credentials are available - Use email_status() to test actual connectivity |
| email_helpA | Get help and usage information for email MCP tools and services. Returns comprehensive help information including available tools, supported services, usage examples, configuration requirements, and common use cases. Returns: Dictionary with service and tool information: { "server": str, # Server name "version": str, # Server version "description": str, # Server description "supported_services": { # Available service types "smtp": str, # Description of SMTP services "api": str, # Description of API services "local": str, # Description of local services "webhook": str # Description of webhook services }, "tools": [...], # List of available tools "examples": [...], # Usage examples "notes": [...] # Important notes and tips } Examples: # Get comprehensive help email_help() # Returns full documentation for all services and tools Notes: - Use list_services() to see currently configured services - Use email_status() to test service connectivity - Use configure_service() to add new services dynamically |
| suggest_email_subjectA | Suggest 1–3 concise email subject lines for the given body (uses MCP sampling when available). |
| email_agentic_assistB | Plan a short multi-step email workflow using sampling (agentic assist). Uses the host LLM via sampling when available; optional Anthropic fallback if configured. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| email_compose_request | Generates a user message asking to compose an email. |
| email_help_request | Generates a request for Email-MCP help on a specific topic. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| email-mcp/SKILL.md | Multi-service email MCP - SMTP, APIs, MailHog, webhooks; FastMCP 3.1 tools, prompts, sampling. |
| email-mcp/_manifest | File listing for email-mcp |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/sandraschi/email-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server