outlook-mcp-limited
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| HOST | No | Where http mode listens. | 0.0.0.0 |
| PORT | No | Where http mode listens. Setting `PORT` (as hosts do) selects http mode automatically. | 3000 |
| MCP_AUTH_TOKEN | No | Shared secret clients must send as `Authorization: Bearer …`. At least 32 characters. Required in http mode. | |
| OUTLOOK_MCP_MODE | No | Set to `http` to force hosted mode without a `PORT`. | |
| OUTLOOK_MCP_TENANT | No | Authority tenant. `consumers` = personal Microsoft accounts only, which is what this fork is for and which blocks an accidental work-account login. `common` also accepts work accounts. | consumers |
| OUTLOOK_MCP_CACHE_DIR | No | Token cache location. | ~/.outlook-mcp/ |
| OUTLOOK_MCP_CLIENT_ID | No | Application (client) ID of your Entra app registration. Not a secret, but keep it out of git. | |
| MCP_RATE_LIMIT_PER_MIN | No | Accepted requests per minute in http mode. | 60 |
| OUTLOOK_MCP_ALLOWED_DIR | No | Where `save_attachment` may write files. | ~/Downloads/outlook-mcp/ |
| OUTLOOK_MCP_TOKEN_CACHE | No | Base64 of the local token cache, from `npm run export-token`. Contains the refresh token: secret. Required in http mode. | |
| OUTLOOK_MCP_MAX_ATTACHMENT_MB | No | Hard cap before `save_attachment` aborts. | 50 |
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 | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_emailsA | List emails from a mail folder with optional filters (sender substring, date range, unread-only). Returns a compact JSON array of message summaries. Use read_email with a returned id to fetch full content. |
| read_emailA | Fetch the full content of one email message by id, plus a list of its attachments (metadata only — use save_attachment to write an attachment to disk). Returns JSON with body as plain text. |
| search_emailsA | Full-text search across the user's ENTIRE mailbox (all folders, all years). Supports KQL-like operators: 'from:acme.com', 'subject:contract', 'hasAttachment:true', 'body:Pantheon', plus quoted phrases and AND/OR. Works on both personal (hotmail.com / outlook.com) and work/school accounts — the tool picks the correct backend automatically. IMPORTANT: results are ranked by relevance, NOT sorted by date. Date filters like 'received:this-week' are honored on AAD (work/school) but are IGNORED by the personal-account search backend, which returns matches from any time period. If you need strict date filtering, use list_emails (folder-scoped) with |
| list_foldersA | List mail folders. With no parentFolderId, returns top-level folders. With parentFolderId set, returns immediate child folders (one level deep). Use the returned 'id' as a folder reference for list_emails. For Outlook's standard folders you can also pass their well-known names directly (inbox, drafts, sentitems, deleteditems, junkemail, archive, outbox, conversationhistory) without calling this tool first. |
| save_attachmentA | Download one attachment from a message and save it to the local filesystem. Writes are confined to the server's allowed directory (default ~/Downloads/outlook-mcp/). Existing files are never overwritten — the tool appends ' (2)', ' (3)', … to the filename. Returns the absolute path of the saved file. |
| create_draftA | Create a draft email in the user's Drafts folder — NEVER sends. If replyToMessageId is set, the draft is created as a threaded reply; if |
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 6 tools
Each tool has a clearly distinct purpose: reading, listing, searching, folder browsing, downloading attachments, and drafting. Descriptions explicitly clarify boundaries, such as search_emails vs list_emails for date filtering, and save_attachment being separated from read_email's metadata-only attachment list.
All tools follow a consistent verb_noun snake_case pattern: read_email, list_emails, search_emails, list_folders, save_attachment, create_draft. No deviations or mixed conventions.
Six tools provide a focused, well-scoped set for a read-oriented email MCP server. Each tool earns its place, and the count is appropriate given the deliberate limitation of not sending emails.
The surface covers reading, listing, searching, folder navigation, attachment saving, and draft creation, but lacks delete, move, mark-as-read, or reply-draft updates. These are reasonable omissions for a limited server, but agents may hit dead ends for basic mailbox management.