Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
MCP_HOSTNoMCP host (if transport is not stdio)
MCP_PORTNoMCP port (if transport is not stdio)
MCP_TRANSPORTNoMCP transportstdio
EXCHANGE_OWA_URLNoOWA hosthttps://owa.example.com
EXCHANGE_PASSWORDYesPassword (required)
EXCHANGE_USERNAMEYesNTLM account, e.g. DOMAIN\user (required)
MCP_ENABLED_TOOLSNoAllowlist of visible tools (comma-separated, empty string disables all)
EXCHANGE_LOG_LEVELNoLog level (to stderr)INFO
EXCHANGE_TIME_ZONENoWindows time zone for TimeZoneContextRussian Standard Time
EXCHANGE_VERIFY_SSLNoSet to 'true' for strict TLS verificationfalse
EXCHANGE_COOKIE_FILENoSession cookie cache file (written by server)~/.config/owa-mail-mcp/cookies
EXCHANGE_ATTACHMENT_DIRNoDirectory where attachments are saved/tmp/attachments

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": true
}
logging
{}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
extensions
{
  "io.modelcontextprotocol/ui": {}
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
check_authA

Is the OWA session live? A health check for this MCP connection.

Makes one light authenticated call to the mailbox — not just a cookie-file check — so the answer covers both the credentials and whether the OWA host is reachable, independent of any particular tool.

get_foldersA

List mail/calendar folders with their ids, item counts and unread counts.

Use it to turn a custom folder name into the FolderId find_emails and move_email accept. total is the server's own count of folders in view, so it is trustworthy.

find_emailsA

List emails in a folder, or search the whole mailbox by text.

Newest first. Bodies are not included — a row carries a short preview at most; full body, attachment ids and links come from get_email.

A listing answers with total/has_more and both continuations, next_offset and next_cursor — take either for the next page. A search has neither a total (the server reports 0 whatever it found) nor a cursor.

get_emailA

Full email: body, all recipients, and attachment ids for get_attachment.

get_threadA

Every email in a conversation, newest first — the whole back-and-forth.

The only way to read a thread in full: search returns just the messages that matched, get_email returns one. Bodies are not included — follow up with get_email on the messages you need.

has_more only says the thread hit limit: this action has no offset and no cursor, so raise limit to see the rest.

send_emailA

Send an email, or save it to Drafts. Sending is immediate — no confirmation step.

reply_emailA

Reply to an email, quoting the original. Sends immediately.

forward_emailA

Forward an email with its attachments. Sends immediately.

delete_emailA

Delete an email — to Deleted Items by default.

get_calendar_eventsA

Calendar events in a time window, recurrences expanded.

is_recurring on a row means it is one occurrence of a series: changing, cancelling or declining that row needs an explicit apply_to in the write tools.

There is no paging and nothing to page — the whole window is read every call, so total is exact. Narrow the answer by moving start/end.

get_eventA

Full calendar event: body, attendees with response status, attachment ids.

get_calendarsA

List the calendars in your sidebar — yours and colleagues' — and who you can read.

A colleague's calendar being listed does NOT mean it is readable: the entry looks identical either way, and only a read attempt tells them apart — hence check_access. When someone's calendar is closed, their schedule WITH MEETING SUBJECTS is usually still available via get_user_availability.

get_user_availabilityA

Read someone's schedule: their busy blocks, WITH MEETING SUBJECTS.

Works for a colleague who has not shared their calendar folder, where get_calendar_events(person=…) needs exactly that sharing and otherwise fails with "Доступ запрещён". Subjects appear when their sharing level exposes details; otherwise subject is null and the busy intervals remain.

For "when can we all meet?" use find_meeting_time.

find_meeting_timeA

Concrete meeting slots where everyone is free, in working hours.

Feed a chosen slot straight into create_event. Slots are computed from each attendee's actual busy blocks (absolute times), not from the merged free/busy string — that string comes back shifted by the mailbox time zone on this server and would place meetings on top of existing ones.

create_eventA

Create a calendar event, one-off or recurring, and invite attendees.

With no attendees this is a private appointment and nothing is sent.

update_eventA

Change an existing event and notify attendees. Only the fields you pass change.

For a RECURRING event apply_to is required, and nothing is changed until you supply it.

cancel_eventA

Cancel an event YOU organize and notify the attendees.

The notice reaches them and cannot be recalled. Only the organizer can cancel: asked to cancel someone else's event this refuses rather than quietly deleting your copy — to take it off your own calendar, decline it with respond_to_event.

For a RECURRING event apply_to is required; nothing is cancelled until you supply it.

respond_to_eventA

Accept, decline or tentatively accept an event invitation.

For a RECURRING event apply_to is required, and it matters: declining the series tells the organizer you are out of every future meeting, and a sent decline cannot be recalled. Nothing is sent until you supply it.

get_attachmentA

Download an attachment to disk and return its path.

Works for both mail and calendar attachments.

find_peopleA

Look someone up in the corporate address book.

A single match comes back with the full card — job title, department, office, phones. Several come back as a compact list, each with the exact SMTP address send_email and create_event want. has_more only means the page came back full: the directory reports no honest total.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

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/mainpart/owa-mail-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server