Skip to main content
Glama
MCP Aruba Email & Calendar Server

MCP Aruba Email & Calendar Server

by eteocuenca

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
IMAP_HOSTYesIMAP server hostname, e.g. imaps.aruba.it
IMAP_PORTYesIMAP server port, e.g. 993
SMTP_HOSTYesSMTP server hostname, e.g. smtps.aruba.it
SMTP_PORTYesSMTP server port, e.g. 465
CALDAV_URLYesCalDAV calendar URL, e.g. https://syncdav.aruba.it/calendars/your_email@aruba.it/
IMAP_PASSWORDYesIMAP password for your Aruba email account
IMAP_USERNAMEYesIMAP username, typically your Aruba email address
CALDAV_PASSWORDYesCalDAV password for your Aruba calendar account
CALDAV_USERNAMEYesCalDAV username, typically your Aruba email address

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

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
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)

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")

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)

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")

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.

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)

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.

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" )

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" )

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)

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"
)
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()

list_email_signaturesA

List all saved email signatures.

Returns: Dictionary of all signatures

Example: list_email_signatures()

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" )

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 )

accept_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ò!" )

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" )

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" )

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")

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.5/5.0

Scored across 19 tools

Disambiguation4/5

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.

Naming Consistency4/5

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.

Tool Count4/5

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.

Completeness4/5

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

ActivityMaintained
ResponsivenessNo recent community issues