@dockndevai/mcp-outlook
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| OUTLOOK_AUTH | No | Authentication mode. When not set, the mode is chosen automatically: interactive if only OUTLOOK_CLIENT_ID is set, client-credentials if OUTLOOK_CLIENT_SECRET is set, token if OUTLOOK_TOKEN is set. | |
| OUTLOOK_MODE | No | Access mode: read-only (default), read-write, or admin. Controls which tools are registered. | read-only |
| OUTLOOK_USER | No | The mailbox to act on when using client-credentials authentication (app-only), since an app token has no signed-in user. | |
| OUTLOOK_TOKEN | No | A pre-obtained Microsoft Graph bearer token for token-based authentication. Its presence selects token mode. | |
| OUTLOOK_DRY_RUN | No | Set to 'true' to validate and log writes without executing them. Defaults to 'false'. | false |
| OUTLOOK_AUDIT_LOG | No | Set to 'false' to disable JSON audit logging to stderr. Defaults to 'true'. | true |
| OUTLOOK_CLIENT_ID | No | The Application (client) ID from your Entra (Azure AD) app registration. Required for interactive and client-credentials authentication. | |
| OUTLOOK_TENANT_ID | No | The tenant ID (e.g., 'common' for Microsoft accounts) required for client-credentials authentication; also often set to 'common' in interactive mode. | |
| OUTLOOK_ALLOW_SEND | No | Set to 'true' to allow sending, replying, and forwarding messages (requires read-write mode). Defaults to 'false'. | false |
| OUTLOOK_ALLOW_DELETE | No | Set to 'true' to allow deleting messages (requires admin mode). Defaults to 'false'. | false |
| OUTLOOK_CLIENT_SECRET | No | Client secret for app-only (client-credentials) authentication. Its presence selects client-credentials mode. | |
| OUTLOOK_FOLDER_ALLOWLIST | No | Comma-separated list of folders that may be written to or moved into. | |
| OUTLOOK_PROTECTED_FOLDERS | No | Comma-separated list of folders (e.g., 'sentitems', 'archive') that may be read but never modified. |
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
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| whoamiA | Return the signed-in mailbox's identity (display name, user principal name, id). Use this to confirm which mailbox the server is operating on before reading or writing. |
| list_foldersA | List the mailbox's top-level mail folders with their ids, display names, and unread/total counts. Use a folder id or well-known name (inbox, sentitems, drafts, archive) with list_messages. |
| list_messagesA | List messages, most recent first. Optionally scope to a folder and/or only unread messages. Returns compact summaries (id, subject, from, received, isRead, hasAttachments, preview). Fetch full bodies with get_message. |
| search_messagesA | Full-text search across the mailbox (subject, body, sender, recipients) using Microsoft Graph $search. Example queries: "invoice", "from:alice@contoso.com", "subject:release". Returns compact summaries. |
| get_messageA | Fetch a single message by id with its full body, recipients (to/cc/bcc), importance, and conversation id. Get ids from list_messages or search_messages. |
| list_attachmentsA | List a message's attachments as metadata only (id, name, contentType, size, isInline). Attachment bytes are intentionally not returned. |
| list_contactsA | List the mailbox's personal contacts (display name, email addresses, company). |
| list_drive_itemsA | List the files and folders in a OneDrive folder. Give a |
| get_drive_itemA | Fetch metadata for a single OneDrive file or folder by |
| search_drive_filesA | Search across OneDrive for files and folders matching a query (name/content). |
| download_drive_fileA | Download a OneDrive file's contents as text (capped at ~1 MB). Best for text/markdown/JSON/CSV; binary files come back as best-effort UTF-8, so prefer webUrl for those. Give |
| list_calendarsA | List the calendars in the mailbox (id, name, owner, whether you can edit). Needs the Calendars scope. |
| list_eventsA | List events, newest window first. Give |
| get_eventA | Fetch one event by id, with its full body, attendees, recurrence and online-meeting details. |
| get_free_busyA | Check availability (free/busy) for one or more people over a time window — useful before proposing a meeting time. Returns each address's availability view for the window. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 15 tools
Each tool targets a distinct resource+action pair across four clearly separated domains (mail, calendar, contacts, drive). The list/get/search distinctions are explicitly spelled out in the descriptions (e.g. search_messages is full-text $search vs list_messages for recent items), leaving little room for misselection.
Nearly all tools follow a clean snake_case verb_noun convention (list_messages, get_event, download_drive_file, search_drive_files). The only deviations are the bare `whoami` and the noun-phrase `get_free_busy`, which are minor and still readable.
15 tools is at the top of the well-scoped range and is justified by spanning four domains, with roughly 3-4 focused tools per domain. No tool feels redundant or padded.
The surface is almost entirely read-only: no send/reply/move/delete for mail, no create/update/cancel or RSVP for calendar events, no write access for contacts, and no upload for drive. The `whoami` description references 'reading or writing', implying write intent that the tool set does not deliver, so common agent workflows will dead-end.