MCP Aruba Email & Calendar Server
Allows optional automatic upload of signature/profile photos to Imgur when configuring a customized email signature.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP Aruba Email & Calendar Server search my inbox for unread emails from this week"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Aruba Email & Calendar Server
Italiano | English
Server MCP (Model Context Protocol) per accedere a email e calendario Aruba tramite IMAP/SMTP/CalDAV. Integra facilmente email e calendario Aruba con assistenti AI come Claude!
📦 Come Installare
Opzione 1: Estensione VS Code (Più Semplice) ⭐
Per usare con GitHub Copilot in VS Code:
Installa l'estensione dal VS Code Marketplace
Configura le credenziali con
⌘+Shift+P→ "Aruba Email: Configure Credentials"Usa direttamente in Copilot Chat!
📖 Guida completa estensione VS Code
Opzione 2: Da Smithery (Registro MCP) 🔍
Per usare con @mcp aruba in VS Code o altri client MCP:
Il server è disponibile su Smithery
In VS Code Copilot Chat, digita
@mcp arubae segui le istruzioniOppure installa da CLI:
smithery install io.github.jackfioru92/aruba-email
Opzione 3: Installazione Manuale (Per Claude Desktop)
Per usare con Claude Desktop:
Related MCP server: Mailbridge MCP
Funzionalità
📧 Elenca email - Naviga nella casella con filtri per mittente
🔍 Cerca email - Ricerca per oggetto/corpo con filtri data
📖 Leggi email - Ottieni il contenuto completo (HTML convertito in testo pulito)
✉️ Invia email - Invia email via SMTP con firma personalizzata
✍️ Firma email - Crea firme professionali con foto e colori brand
📎 Allegati - Lista e scarica allegati email (PDF, immagini, documenti)
💾 Esporta .eml - Esporta email in formato RFC822 per backup
Calendario
📅 Crea eventi - Crea eventi calendario con partecipanti
📋 Elenca eventi - Visualizza eventi futuri
✅ Accetta inviti - Accetta inviti calendario
❌ Declina inviti - Declina inviti calendario
❓ Forse - Rispondi "forse" agli inviti calendario
🗑️ Elimina eventi - Rimuovi eventi dal calendario
Generale
🔒 Sicuro - Usa IMAP/SMTP/CalDAV su SSL/TLS
⚡ Veloce - Gestione efficiente delle connessioni con context manager
🤖 Pronto per AI - Funziona perfettamente con Claude Desktop e altri client MCP
Configurazione (Solo per Installazione Manuale)
Copia
.env.examplein.env:
cp .env.example .envModifica
.envcon le tue credenziali Aruba:
# Configurazione Email
IMAP_HOST=imaps.aruba.it
IMAP_PORT=993
IMAP_USERNAME=tua_email@aruba.it
IMAP_PASSWORD=tua_password
SMTP_HOST=smtps.aruba.it
SMTP_PORT=465
# Configurazione Calendario
CALDAV_URL=https://syncdav.aruba.it/calendars/tua_email@aruba.it/
CALDAV_USERNAME=tua_email@aruba.it
CALDAV_PASSWORD=tua_password(Opzionale) Configura la tua firma email personalizzata:
Metodo 1: Script Interattivo (Consigliato)
# Esegui lo script interattivo python setup_signature.pyLo script ti guiderà nella creazione di una firma professionale con:
📝 Informazioni personali (nome, ruolo, azienda, contatti)
🎨 Scelta dello stile (professional, minimal, colorful)
🌈 Personalizzazione colori
📸 Upload automatico foto su Imgur (opzionale)
Metodo 2: Tramite Claude (Ancora più semplice!)
Dopo aver configurato Claude Desktop, chiedi direttamente: "Crea una firma email per me con nome Mario Rossi, ruolo Software Developer, azienda TechCorp e colore #0066cc" "Configura la mia firma con questa foto: /path/to/photo.jpg" "Imposta una firma minimal con solo nome e email"Claude userà automaticamente i tool MCP per creare la tua firma!
La firma verrà inclusa automaticamente in tutte le email inviate.
Nota: Le credenziali sono memorizzate localmente e non lasciano mai il tuo computer. Il server MCP viene eseguito localmente e si connette direttamente ai server Aruba.
Utilizzo
🚀 Inizio Rapido: Visualizza le Ultime Email
Il modo più veloce per iniziare:
# Installa dipendenze
pip install -e .
# Configura credenziali (copia e modifica .env.example)
cp .env.example .env
# Modifica .env con le tue credenziali Aruba
# Mostra le ultime email
python cli.py emails 5
# Oppure usa lo script demo
python demo_list_emails.pyVuoi usare Claude? Dopo la configurazione, chiedi semplicemente:
Mostrami le ultime 5 email
Dammi le email più recenti
Quali email ho ricevuto oggi?📖 Guida completa: Vedi GUIDA_UTILIZZO_EMAIL.md per tutti i metodi disponibili.
Esegui il server direttamente
python -m mcp_aruba.serverConfigura con Claude Desktop
Vedi CLAUDE_SETUP.md per istruzioni dettagliate.
Configurazione rapida per ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"aruba-email-calendar": {
"command": "python",
"args": ["-m", "mcp_aruba.server"],
"env": {
"IMAP_HOST": "imaps.aruba.it",
"IMAP_PORT": "993",
"IMAP_USERNAME": "tua_email@aruba.it",
"IMAP_PASSWORD": "tua_password",
"SMTP_HOST": "smtps.aruba.it",
"SMTP_PORT": "465",
"CALDAV_URL": "https://syncdav.aruba.it/calendars/tua_email@aruba.it/",
"CALDAV_USERNAME": "tua_email@aruba.it",
"CALDAV_PASSWORD": "tua_password"
}
}
}
}Configura con VS Code Copilot
Vedi VSCODE_SETUP.md per istruzioni dettagliate sull'uso di questo server con l'estensione Copilot MCP di VS Code.
Usa la CLI rapida
# Attiva ambiente virtuale
source .venv/bin/activate
# Mostra ultime 5 email
python cli.py emails
# Mostra ultime 10 email
python cli.py emails 10
# Mostra eventi prossimi 7 giorni
python cli.py calendar
# Mostra eventi prossimi 14 giorni
python cli.py calendar 14Strumenti Disponibili
Strumenti Email
list_emails
Elenca email recenti con filtri opzionali.
Parametri:
folder(str, default: "INBOX") - Cartella email da leggeresender_filter(str, opzionale) - Filtra per email mittentelimit(int, default: 10, max: 50) - Numero di email da restituire
Esempi:
Mostra le ultime 5 email da john@example.com
Elenca email recenti nella mia inbox
Dammi le 10 email più recenti dal mio caporead_email
Leggi il contenuto completo di un'email specifica.
Parametri:
email_id(str) - ID email da list_emailsfolder(str, default: "INBOX") - Cartella email
Esempi:
Leggi l'email 123
Mostrami il contenuto completo dell'email 456search_emails
Cerca email per oggetto o contenuto corpo.
Parametri:
query(str) - Query di ricercafolder(str, default: "INBOX") - Cartella dove cercarefrom_date(str, opzionale) - Solo email da questa data (formato: DD-MMM-YYYY)limit(int, default: 10, max: 50) - Numero massimo di risultati
Esempi:
Cerca email che parlano di "API" dalla settimana scorsa
Trova tutte le email su "fattura" da dicembresend_email
Invia un'email via SMTP.
Parametri:
to(str) - Indirizzo email destinatariosubject(str) - Oggetto emailbody(str) - Corpo email (testo semplice)cc(str, opzionale) - Indirizzi email in CC, separati da virgolafrom_name(str, default: "Giacomo Fiorucci") - Nome visualizzato mittenteuse_signature(bool, default: True) - Include la firma email se configurataverify_recipient(bool, default: True) - Verifica che l'email destinatario esista
Esempi:
Invia un'email a colleague@example.com ringraziando per l'aggiornamento
Rispondi a john@example.com con lo stato del progetto
Invia un'email a client@example.com con CC a manager@company.comNota sulla firma: Se hai configurato una firma usando setup_signature.py, verrà automaticamente inclusa nelle email. Puoi disabilitarla temporaneamente con use_signature=False.
set_email_signature
Configura una firma email personalizzata.
Parametri:
name(str) - Nome completoemail(str) - Indirizzo emailrole(str, opzionale) - Ruolo/posizionecompany(str, opzionale) - Nome aziendaphone(str, opzionale) - Numero di telefonowebsite(str, opzionale) - Sito webphoto_input(str, opzionale) - Percorso file foto o URL (upload automatico su Imgur)style(str, default: "professional") - Stile: professional, minimal, colorfulcolor(str, default: "#0066cc") - Colore principale (formato esadecimale)signature_name(str, default: "default") - Nome identificativo firma
Esempi:
Crea una firma con il mio nome, ruolo e foto del profilo
Configura una firma professionale con logo aziendaleget_email_signature
Ottieni la firma email corrente.
Parametri:
signature_name(str, default: "default") - Nome firma da recuperare
list_email_signatures
Elenca tutte le firme email salvate.
Strumenti Calendario
create_calendar_event
Crea un nuovo evento calendario.
Parametri:
summary(str) - Titolo eventostart(str) - Data/ora inizio in formato ISO (YYYY-MM-DDTHH:MM:SS)end(str) - Data/ora fine in formato ISOdescription(str, opzionale) - Descrizione eventolocation(str, opzionale) - Luogo eventoattendees(str, opzionale) - Lista email partecipanti separati da virgola
Esempi:
Crea un meeting chiamato "Riunione Team" domani alle 15 per 1 ora
Programma un "Project Review" il 10 dicembre alle 14 con john@example.comlist_calendar_events
Elenca eventi calendario in un intervallo di date.
Parametri:
start_date(str, opzionale) - Data inizio in formato ISO (default: oggi)end_date(str, opzionale) - Data fine in formato ISO (default: 30 giorni da ora)limit(int, default: 50) - Eventi massimi da restituire
Esempi:
Mostrami il mio calendario per questa settimana
Quali eventi ho a dicembre?
Elenca tutti i miei meeting per i prossimi 7 giorniaccept_calendar_event
Accetta un invito calendario.
Parametri:
event_uid(str) - UID dell'eventocomment(str, opzionale) - Commento opzionale
Esempi:
Accetta l'invito al meeting "Team Standup"
Accetta l'evento abc123@aruba.it con commento "Non vedo l'ora!"decline_calendar_event
Declina un invito calendario.
Parametri:
event_uid(str) - UID dell'eventocomment(str, opzionale) - Commento opzionale
Esempi:
Declina l'evento abc123@aruba.it
Declina il meeting con commento "Mi dispiace, ho un conflitto"tentative_calendar_event
Rispondi "forse" a un invito calendario.
Parametri:
event_uid(str) - UID dell'eventocomment(str, opzionale) - Commento opzionale
Esempi:
Rispondi forse all'evento abc123@aruba.it
Segna come "forse" il meeting di domani
Forse partecipo al meeting di domanidelete_calendar_event
Elimina un evento calendario.
Parametri:
event_uid(str) - UID dell'evento da eliminare
Esempi:
Elimina l'evento abc123@aruba.it
Cancella il mio meeting delle 14Casi d'Uso
📬 Comunicazione Team
Mostrami le ultime email dai membri del mio team
Elenca email non lette da project@company.com🔍 Tracking Progetti
Cerca email che menzionano "modifiche API" dall'ultima settimana
Trova tutte le email su "fattura" dal 1° dicembre📊 Riepilogo Email Giornaliero
Riassumi tutte le email che ho ricevuto oggi
Mostrami le email importanti di stamattina✉️ Risposte Rapide
Invia un'email a colleague@example.com ringraziandoli per l'aggiornamento
Rispondi a john@example.com con lo stato del progetto📅 Gestione Calendario
Quali meeting ho questa settimana?
Crea una riunione team per domani alle 15
Accetta l'invito calendario per la review di venerdì
Declina il meeting di lunedì, sono in vacanza
Mostrami il mio programma per la prossima settimana🤖 Gestione Email & Calendario con AI
Con Claude Desktop o VS Code Copilot, puoi:
Chiedere a Claude di riassumere più email
Creare risposte basate sul contenuto email
Estrarre task da thread email
Organizzare e categorizzare email automaticamente
Programmare meeting basati su conversazioni email
Gestire conflitti calendario e trovare fasce orarie disponibili
Stack Tecnologico
Python 3.10+ - Python moderno
MCP SDK 1.2.0+ - Model Context Protocol per integrazione AI
imaplib - Client IMAP libreria standard (supporto SSL/TLS)
smtplib - Client SMTP libreria standard (supporto SSL/TLS)
email - Parsing email e gestione MIME
caldav - Protocollo CalDAV per accesso calendario
icalendar - Parsing e generazione formato iCalendar
python-dotenv - Gestione variabili ambiente
Sicurezza & Privacy
🔒 Esecuzione locale - Il server gira sul tuo computer, le credenziali non lasciano mai la tua macchina
🛡️ Crittografia SSL/TLS - Tutte le connessioni usano protocolli sicuri (IMAPS porta 993, SMTPS porta 465, HTTPS per CalDAV)
🔐 Variabili ambiente - Credenziali salvate nel file
.env(gitignored di default)📝 Troncamento corpo - Corpo email limitato a 5000 caratteri per prevenire overflow del contesto
✅ Nessun servizio esterno - Connessione diretta solo ai server Aruba
Best Practice Sicurezza
Non committare mai il file
.envnel controllo versioneUsa password forti e uniche per il tuo account email
Considera l'abilitazione 2FA sul tuo account Aruba
Ruota regolarmente le tue credenziali
Rivedi i log del server MCP per attività sospette
Performance
⚡ Connection pooling via context manager
📊 Limiti risultati configurabili per prevenire problemi di memoria
🚀 Connessioni on-demand (nessun processo in background)
💾 Footprint di memoria minimo
Sviluppo
Eseguire i Test
# Attiva ambiente virtuale
source .venv/bin/activate
# Esegui test connessione email
python test_connection.py
# Esegui test connessione calendario
python test_calendar.py
# Test creazione evento
python test_create_event.py
# Test invio invito calendario
python send_invite.pyQualità Codice
# Formatta codice
black src/
# Type checking
mypy src/
# Linting
pylint src/Abilitare Sincronizzazione CalDAV
Per usare le funzionalità calendario, devi abilitare la sincronizzazione CalDAV in Aruba Webmail:
Vai su https://webmail.aruba.it
Naviga alla sezione Calendario
Clicca su "Sincronizza calendario"
Scegli "Calendari" → "Procedi"
Seleziona "Lettura e modifica" (CalDAV) → "Procedi"
Seleziona i calendari da sincronizzare → "Procedi"
Una volta abilitato, potrai gestire completamente i tuoi calendari tramite il server MCP!
Risoluzione Problemi
Calendario non disponibile
Se vedi "No calendar available", devi abilitare la sincronizzazione CalDAV (vedi sezione sopra).
Errori connessione
Verifica che le credenziali in
.envsiano corretteControlla che le porte 993 (IMAP), 465 (SMTP), 443 (CalDAV) non siano bloccate
Verifica le impostazioni firewall
Prova a eseguire gli script di test
Email o eventi non visualizzati
Verifica di avere i permessi corretti sull'account
Controlla i filtri applicati (sender_filter, date filters)
Aumenta il limite di risultati
FAQ
Q: È sicuro memorizzare le mie credenziali nel file .env?
A: Sì, finché il file .env non viene committato nel controllo versione. È già incluso in .gitignore. Le credenziali rimangono sul tuo computer locale.
Q: Posso usare questo con altri provider email?
A: Il server è ottimizzato per Aruba, ma puoi adattarlo per altri provider che supportano IMAP/SMTP/CalDAV modificando le configurazioni.
Q: Quanto costano i server MCP?
A: I server MCP sono gratuiti! Questo è software open-source. Hai solo bisogno di un abbonamento Claude o GitHub Copilot per usarlo con quegli AI.
Q: I miei dati vengono inviati a terze parti?
A: No! Il server gira localmente e si connette direttamente ai server Aruba. Nessun dato passa attraverso servizi terzi.
Q: Posso contribuire al progetto?
A: Assolutamente! Vedi CONTRIBUTING.md per linee guida.
Contribuire
I contributi sono benvenuti! Per favore:
Fai un fork del repository
Crea un feature branch (
git checkout -b feature/funzionalita-fantastica)Committa le modifiche (
git commit -m 'Aggiungi funzionalità fantastica')Pusha al branch (
git push origin feature/funzionalita-fantastica)Apri una Pull Request
Vedi CONTRIBUTING.md per dettagli completi.
Roadmap
Supporto IMAP IDLE per notifiche real-time
Gestione allegati email
Composizione email HTML
Suite test pytest
Supporto account multipli
Eventi calendario ricorrenti
Notifiche calendario
Integrazione con altri calendari (Google Calendar, Outlook)
Documentazione
README.md - Documentazione principale (Italiano)
README_EN.md - Documentation in English
GUIDA_UTILIZZO_EMAIL.md - Guida completa: Come vedere le ultime email 📧
EXAMPLES.md - Esempi d'uso
CLAUDE_SETUP.md - Setup Claude Desktop
VSCODE_SETUP.md - Setup VS Code Copilot MCP
docs/VSCODE_EXTENSION.md - Estensione VS Code Marketplace
docs/MCP_REGISTRY.md - Pubblicazione MCP Registry
SIGNATURE_EXAMPLES.md - Esempi firme email
CONTRIBUTING.md - Guida contribuzioni
LICENSE - Licenza MIT
Installazione Rapida
Da PyPI
pip install mcp-arubaDa VS Code Marketplace
Cerca "MCP Aruba Email" nel marketplace VS Code o installa direttamente:
code --install-extension jackfioru92.mcp-aruba-emailDa MCP Registry
Il server è disponibile su MCP Registry
Supporto
Se incontri problemi:
Controlla la sezione Risoluzione Problemi
Esegui gli script di test per verificare la connessione
Controlla i log per messaggi d'errore
Apri un issue su GitHub
Licenza
Questo progetto è rilasciato sotto licenza MIT. Vedi il file LICENSE per dettagli.
Autore
Giacomo Fiorucci - giacomo.fiorucci@emotion-team.com
Ringraziamenti
Model Context Protocol per il framework MCP
Anthropic per Claude Desktop
GitHub per Copilot
Aruba per i servizi email e calendario affidabili
⭐ Se questo progetto ti è utile, considera di dargli una stella su GitHub!
Available Tools
19 toolsaccept_calendar_eventB
Accept a calendar event invitation.
Args: event_uid: UID of the event to accept comment: Optional comment for the acceptance
Returns: Response status
Example: accept_calendar_event( event_uid="abc123@aruba.it", comment="Ci sarò!" )
Inputs: event_uid (required), comment. Returns: object
check_bounced_emailsB
Check for bounced or failed email delivery notifications.
This tool searches for delivery failure notifications (bounce-backs) that indicate emails could not be delivered. Common reasons include:
Recipient mailbox does not exist
Recipient mailbox is full
Message rejected by recipient server
Args: folder: Mail folder to check (default: INBOX) limit: Maximum number of bounce notifications to check (default: 20)
Returns: List of bounce notifications with failed recipient and reason
Example: check_bounced_emails(limit=10)
Inputs: limit, folder. Returns: result
create_calendar_eventB
Create a new calendar event.
Args: summary: Event title start: Start datetime in ISO format (e.g., "2025-12-05T10:00:00") end: End datetime in ISO format (e.g., "2025-12-05T11:00:00") description: Event description (optional) location: Event location (optional) attendees: Comma-separated list of attendee email addresses (optional)
Returns: Created event details including UID
Example: create_calendar_event( summary="Team Meeting", start="2025-12-05T10:00:00", end="2025-12-05T11:00:00", description="Discussione sui nuovi progetti", location="Sala Riunioni A", attendees="christopher.caponi@emotion-team.com,marco.rossi@example.com" )
Inputs: end (required), start (required), summary (required), location, +2 more. Returns: object
decline_calendar_eventA
Decline a calendar event invitation.
Args: event_uid: UID of the event to decline comment: Optional comment for the decline
Returns: Response status
Example: decline_calendar_event( event_uid="abc123@aruba.it", comment="Purtroppo non posso partecipare" )
Inputs: event_uid (required), comment. Returns: object
delete_calendar_eventC
Delete a calendar event.
Args: event_uid: UID of the event to delete
Returns: Deletion status
Example: delete_calendar_event(event_uid="abc123@aruba.it")
Inputs: event_uid (required). Returns: object
download_attachmentA
Download a specific attachment from an email.
Args: email_id: Email ID attachment_index: Index of attachment (from get_email_attachments, starting at 0) folder: Mail folder (default: INBOX)
Returns: Dictionary with filename, content_type, size, and data_base64 (base64 encoded content)
Example: download_attachment(email_id="123", attachment_index=0)
Note: The attachment content is returned as base64 encoded string in 'data_base64' field. You can decode it and save to file.
Inputs: email_id (required), attachment_index (required), folder. Returns: object
get_email_attachmentsA
Get list of attachments for a specific email.
Args: email_id: Email ID (from list_emails or search_emails) folder: Mail folder (default: INBOX)
Returns: List of attachments with index, filename, content_type, and size
Example: get_email_attachments(email_id="123")
Inputs: email_id (required), folder. Returns: result
get_email_signatureA
Get a saved email signature.
Args: signature_name: Name of signature to retrieve (default: "default")
Returns: Signature content or error
Example: get_email_signature()
Inputs: signature_name. Returns: object
get_raw_emailB
Get raw email content in RFC822 format for .eml export.
Args: email_id: Email ID folder: Mail folder (default: INBOX)
Returns: Dictionary with raw_content (RFC822 format string)
Example: get_raw_email(email_id="123")
Note: Save the raw_content to a .eml file to export the email.
Inputs: email_id (required), folder. Returns: object
list_calendar_eventsB
List calendar events within a date range.
Args: start_date: Start date in ISO format (default: today) end_date: End date in ISO format (default: 30 days from now) limit: Maximum number of events to return (default: 50)
Returns: List of calendar events
Example: list_calendar_events( start_date="2025-12-01T00:00:00", end_date="2025-12-31T23:59:59", limit=20 )
Inputs: limit, end_date, start_date. Returns: result
list_emailsA
List emails from the specified folder.
Args: folder: Mail folder to list from (default: INBOX) sender_filter: Optional filter by sender email address (e.g., "denisa@c-tic.it") limit: Maximum number of emails to return (default: 10, max: 50)
Returns: List of email summaries with id, from, to, subject, date, and body preview
Example: list_emails(sender_filter="denisa@c-tic.it", limit=5)
Inputs: limit, folder, sender_filter. Returns: result
list_email_signaturesA
List all saved email signatures.
Returns: Dictionary of all signatures
Example: list_email_signatures()
Inputs: no named parameters. Returns: object
read_emailA
Read the full content of a specific email.
Args: email_id: Email ID to read (from list_emails) folder: Mail folder (default: INBOX)
Returns: Full email content with from, to, subject, date, and body
Example: read_email(email_id="123")
Inputs: email_id (required), folder. Returns: object
reply_emailA
Reply to an existing email, preserving the thread.
Fetches the original email, extracts threading headers (Message-ID, References), and sends a reply that appears in the same conversation thread in the recipient's mail client.
Args: email_id: Email ID to reply to (from list_emails) body: Reply body (plain text) cc: Optional CC email addresses (comma-separated) folder: Mail folder where the original email lives (default: INBOX) attachments: Optional comma-separated file paths to attach (e.g., "/path/to/file.pdf,/path/to/image.png")
Returns: Send status with details
Example: reply_email( email_id="123", body="Thank you for your email, here is the updated proposal.", attachments="/path/to/proposal.pdf" )
Inputs: body (required), email_id (required), cc, folder, +1 more. Returns: object
save_attachmentA
Download an email attachment and save it directly to disk.
This is the PREFERRED tool for attachments — saves the file and returns the local path so the user can open it immediately. No base64 decoding needed.
Args: email_id: Email ID attachment_index: Index of attachment (from get_email_attachments, starting at 0) folder: Mail folder (default: INBOX) save_dir: Directory to save into (default: user's Downloads folder)
Returns: Dictionary with filename, saved_path, content_type, and size
Example: save_attachment(email_id="123", attachment_index=0)
Inputs: email_id (required), attachment_index (required), folder, save_dir. Returns: object
search_emailsA
Search emails by subject or body content.
Args: query: Search query string (searches in subject and body) folder: Mail folder to search in (default: INBOX) from_date: Only emails from this date onwards (format: DD-MMM-YYYY, e.g., "01-Dec-2024") limit: Maximum number of results (default: 10, max: 50)
Returns: List of matching emails
Example: search_emails(query="API", from_date="01-Dec-2024", limit=5)
Inputs: query (required), limit, folder, from_date. Returns: result
send_emailA
Send a NEW email via SMTP (not a reply).
For replying to an existing email thread, use reply_email() instead.
Args: to: Recipient email address subject: Email subject body: Email body (plain text) cc: Optional CC email addresses (comma-separated) from_name: Sender display name (default: "" — uses email address only) attachments: Optional comma-separated file paths to attach (e.g., "/path/to/file.pdf,/path/to/image.png")
Returns: Send status with details
Example: send_email( to="christopher.caponi@emotion-team.com", subject="Ciao Christopher!", body="Come stai? Ti scrivo per...", attachments="/path/to/documento.pdf" )
Inputs: to (required), body (required), subject (required), cc, +2 more. Returns: object
set_email_signatureA
Create and save a professional email signature with optional photo and colors.
The signature will be automatically appended to all sent emails. If photo_url or color are provided, an HTML signature will be created.
Args: name: Full name (e.g., "Giacomo Fiorucci") email: Email address role: Job title/role (optional, e.g., "Software Developer") company: Company name (optional, e.g., "Emotion Team") phone: Phone number (optional, e.g., "+39 123 456 7890") photo_url: URL or local file path to profile photo (optional, auto-uploads if local file) color: Hex color code for accents (optional, e.g., "#0066cc", "#FF5722") style: Signature style - "professional", "minimal", "colorful" (default: "professional") signature_name: Name to save signature as (default: "default")
Returns: Confirmation with signature preview
Examples: # Simple text signature set_email_signature( name="Giacomo Fiorucci", email="giacomo.fiorucci@emotion-team.com", role="Software Developer", company="Emotion Team" )
# HTML signature with photo and custom color
set_email_signature(
name="Giacomo Fiorucci",
email="giacomo.fiorucci@emotion-team.com",
role="Software Developer",
company="Emotion Team",
phone="+39 123 456 7890",
photo_url="https://example.com/photo.jpg",
color="#0066cc",
style="professional"
)
Inputs: name (required), email (required), role, color, +5 more. Returns: object
tentative_calendar_eventB
Mark a calendar event as tentative (maybe attending).
Args: event_uid: UID of the event comment: Optional comment
Returns: Response status
Example: tentative_calendar_event( event_uid="abc123@aruba.it", comment="Forse riesco a partecipare" )
Inputs: event_uid (required), comment. Returns: object
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 19 tools
Most tools target clearly distinct resources and actions (list/read/search email, create/list/respond/delete event). The one real overlap is download_attachment vs save_attachment, which both fetch an attachment's bytes; the description mitigates this by declaring save_attachment preferred, but an agent could still hesitate. read_email vs get_raw_email is also a mild boundary case.
Nearly all tools follow a snake_case verb_noun pattern (accept_calendar_event, list_emails, set_email_signature). Verb choices vary slightly (read_email vs get_email_attachments vs list_email_signatures), but the convention remains readable and predictable.
19 tools is at the upper edge of the ideal range but each maps to a real operation across two domains (email and calendar). The three signature tools (set/get/list) are the least essential and inflate the count slightly.
Email coverage is strong (send, reply, list, read, search, attachments, raw export, bounces, signatures) and calendar covers create/list and all RSVP actions plus delete. Gaps remain: no update_calendar_event, no way to list mail folders (leaving the folder parameter a dead end), and no delete/move/forward for email.
Maintenance
Related MCP Connectors
Email inboxes and calendars for AI agents: send, receive, search, draft and schedule.
Email inboxes and calendars for AI agents: send, receive, search, draft and schedule.
Email, calendar and contacts for AI agents: Gmail, Microsoft 365 and IMAP accounts behind one API.
Email for AI agents: read, search and send from your Gmail, Outlook, Yahoo, iCloud or IMAP inbox.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables AI assistants to read, search, compose, and send emails by connecting to any IMAP/SMTP provider. It supports comprehensive mailbox management, including draft handling and message deletion, directly through natural language.10239 npm11MIT
- AlicenseNot gradedqualityDmaintenanceConnects AI assistants to email accounts via IMAP/SMTP, enabling reading, searching, sending, and organizing emails with features like smart drafts, scheduling, and attachment handling.108 npm2MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to interact with email accounts via IMAP and SMTP, supporting mailbox listing, email search, retrieval, sending, and management.MIT
- AlicenseBqualityDmaintenanceEnables AI assistants to send, read, and manage emails via SMTP and IMAP, with support for attachments, threads, and mailbox organization.1681 npm1MIT