strato-mail-mcp
Enables Claude to read, send, and manage emails via IMAP/SMTP for Strato mail accounts, including folder navigation, attachment handling, and draft management.
README
Strato Mail MCP Server v2
Volledige mail client voor Claude via IMAP + SMTP ā perfect voor Portainer hosting.
šÆ Features
ā IMAP Functionaliteit:
- Alle mails lezen (onderwerp, body, HTML, headers)
- Zoeken met geavanceerde IMAP filters
- Folder management (switch, list)
- Email flags (read/unread, starred, draft)
- Attachment handling
- Bulk operations
ā SMTP Functionaliteit:
- Mails verzenden
- CC/BCC support
- HTML + plain text
ā Extra:
- Mailbox statistics
- Draft management
- Portainer-ready Docker setup
- Attachment persistence
- Health checks
š Quick Start (Docker in Portainer)
1. In Portainer: Stacks ā Add Stack
Name: strato-mail-mcp
Paste this:
version: '3.8'
services:
strato-mail-mcp:
build:
context: https://github.com/yourusername/strato-mail-mcp.git
dockerfile: Dockerfile
container_name: strato-mail-mcp
image: strato-mail-mcp:latest
restart: unless-stopped
environment:
IMAP_HOST: imap.strato.com
IMAP_PORT: 993
IMAP_USER: ${IMAP_USER}
IMAP_PASSWORD: ${IMAP_PASSWORD}
SMTP_HOST: smtp.strato.com
SMTP_PORT: 465
ATTACHMENT_DIR: /app/attachments
NODE_ENV: production
volumes:
- strato-attachments:/app/attachments
deploy:
resources:
limits:
cpus: '0.5'
memory: 256M
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
volumes:
strato-attachments:
driver: local
2. Set Environment Variables
In Portainer Stack UI, add before deploying:
IMAP_USER=jouw-email@example.com
IMAP_PASSWORD=jouw-strato-password
3. Deploy
Click "Deploy the stack" ā Wait ~30 seconds
4. Verify
In Portainer ā Containers ā strato-mail-mcp
- Should show
Running - Logs should show:
[strato-mail-mcp] ā Server started - Ready for Claude
š Integratie met Claude
Option A: Lokaal (Windows/Mac/Linux)
Ga naar Claude Settings ā Developer ā MCP Settings:
{
"mcpServers": {
"strato-mail": {
"command": "node",
"args": ["/path/to/strato-mail-mcp/server.js"],
"env": {
"IMAP_USER": "jouw-email@example.com",
"IMAP_PASSWORD": "jouw-password"
}
}
}
}
Herstart Claude ā strato-mail is nu beschikbaar
Option B: Remote Docker (SSH naar Portainer host)
{
"mcpServers": {
"strato-mail": {
"command": "docker",
"args": ["exec", "-i", "strato-mail-mcp", "node", "/app/server.js"],
"env": {
"IMAP_USER": "jouw-email@example.com",
"IMAP_PASSWORD": "jouw-password"
}
}
}
}
š§ Beschikbare Tools
Read & Search
get_folders()
ā List alle mail folders (INBOX, Sent, Drafts, etc.)
search_emails(query, limit, folder)
ā Search met IMAP syntax:
- ALL
- UNSEEN
- SEEN
- FROM "user@example.com"
- SUBJECT "keyword"
- SINCE 15-Mar-2024
- FLAGGED
- DRAFT
Voorbeelden: "UNSEEN FROM triple-audio", "ALL", "FLAGGED"
read_email(uid)
ā Lees volledige email (with attachments)
get_recent(count, folder)
ā Haal X recente mails (default 20)
get_mailbox_status()
ā Get folder statistieken (total, unread, recent)
Send & Draft
send_email(to, subject, text/html, cc, bcc)
ā Verstuur email direct
save_draft(to, subject, text/html)
ā Opslaan als concept
Manage
mark_read(uids)
ā Mark emails as read
mark_unread(uids)
ā Mark emails as unread
mark_flagged(uids)
ā Star/flag emails
unmark_flagged(uids)
ā Remove star
switch_folder(folder)
ā Switch to different folder
move_email(uids, folder)
ā Move emails to folder
delete_email(uids)
ā Delete emails
Files
get_attachment(uid, filename)
ā Get attachment path (for Claude to access)
š§ Configuration Details
Strato Settings
IMAP:
- Host:
imap.strato.com(SSL/TLS) - Port:
993 - User: je Strato email
- Pass: je Strato password
SMTP:
- Host:
smtp.strato.com(SSL/TLS) - Port:
465 - User: je Strato email
- Pass: je Strato password
Docker Volumes
strato-attachmentsā Attachments opgeslagen in/app/attachments- Persisten over container restarts
Resource Limits
- CPU: max
0.5cores - Memory: max
256MB - Reserved:
0.25CPU,128MBRAM
š Troubleshooting
"IMAP connection failed"
Check in Portainer logs:
Containers ā strato-mail-mcp ā Logs
Waarschijnlijke oorzaken:
- IMAP_USER/PASSWORD incorrect
- Strato account IMAP disabled
- Network firewall port 993 blocked
"SMTP auth failed"
Check:
- IMAP_PASSWORD is correct (same for SMTP at Strato)
- Strato account allows SMTP
- Port 465 not blocked
Attachments not saving
Check volume is mounted:
docker inspect strato-mail-mcp | grep -A 5 Mounts
Should show: /app/attachments ā strato-attachments
Slow searches
IMAP is inherent slow for large mailboxes.
Use more specific queries:
- "UNSEEN" instead of "ALL"
- "FROM example.com" to narrow down
- Limit parameter
š Monitoring
In Portainer
- Containers ā
strato-mail-mcp - Stats tab ā CPU/Memory usage
- Logs ā Real-time activity
Docker CLI
# Follow logs
docker logs -f strato-mail-mcp
# Container stats
docker stats strato-mail-mcp
# Shell access (debug)
docker exec -it strato-mail-mcp sh
š Security
ā ļø Credentials Storage:
.envcontains password (NEVER commit to git!)- In Portainer: credentials stored in container variables (encrypted)
- In Docker: use
.envfile OR Portainer UI (don't hardcode) - Recommended: Use Portainer "Secrets" for production
Access Control:
- Container runs as non-root user
- TLS/SSL for IMAP (993) and SMTP (465)
- Local filesystem attachments only
š Advanced
Custom Folders
Strato default folders: INBOX, Sent, Drafts, Trash, Junk
If you have custom folders, use full path:
switch_folder("folder/subfolder")
Email Size Limits
Strato typically allows:
- Single mail: up to 50MB (with attachments)
- Mailbox: depends on plan
Large attachments are downloaded to container volume automatically.
Rate Limiting
IMAP servers have implicit rate limits. If you get "too many connections":
- Reduce concurrent searches
- Add delays between operations
- Use specific queries instead of broad searches
š API Examples (in Claude)
Search unread emails
"Search my unread emails from Triple Audio"
ā Claude calls: search_emails(query="UNSEEN FROM triple-audio")
Read recent mails
"Show me my last 5 emails"
ā Claude calls: get_recent(count=5)
Send email
"Send email to marco@triple-audio.nl with subject 'Themis Update'"
ā Claude calls: send_email(to="marco@...", subject="Themis Update", text="...", html="...")
Manage folders
"Move all Themis emails to a folder"
ā Claude calls: search_emails(query='SUBJECT "Themis"') ā move_email(uids=[...], folder="Themis")
š Stopping / Updating
In Portainer
- Stacks ā
strato-mail-mcp - Stop: click Stop
- Update: remove stack, re-deploy with new code
- Logs: check health status
Docker CLI
# Stop
docker-compose down
# Restart
docker-compose up -d
# View logs
docker logs strato-mail-mcp
š Support
If issues:
- Check logs:
docker logs strato-mail-mcp - Verify Strato credentials work in email client
- Check IMAP/SMTP ports (993, 465) are accessible
- Ensure
.envis correctly set
Version: 2.0.0
Status: ā
Production-ready for Portainer
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.