Skip to main content
Glama
jopmiddelkamp

outlook-mcp-limited

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
HOSTNoWhere http mode listens.0.0.0.0
PORTNoWhere http mode listens. Setting `PORT` (as hosts do) selects http mode automatically.3000
MCP_AUTH_TOKENNoShared secret clients must send as `Authorization: Bearer …`. At least 32 characters. Required in http mode.
OUTLOOK_MCP_MODENoSet to `http` to force hosted mode without a `PORT`.
OUTLOOK_MCP_TENANTNoAuthority 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_DIRNoToken cache location.~/.outlook-mcp/
OUTLOOK_MCP_CLIENT_IDNoApplication (client) ID of your Entra app registration. Not a secret, but keep it out of git.
MCP_RATE_LIMIT_PER_MINNoAccepted requests per minute in http mode.60
OUTLOOK_MCP_ALLOWED_DIRNoWhere `save_attachment` may write files.~/Downloads/outlook-mcp/
OUTLOOK_MCP_TOKEN_CACHENoBase64 of the local token cache, from `npm run export-token`. Contains the refresh token: secret. Required in http mode.
OUTLOOK_MCP_MAX_ATTACHMENT_MBNoHard 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

CapabilityDetails
tools
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
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 since/until instead. Returns a compact JSON array of hits with message IDs usable by read_email.

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 body is provided it replaces Graph's quoted original so the caller fully controls the outgoing text. Otherwise a new standalone draft is created. The user must review and send manually in Outlook; this server has no ability to send.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4.4/5.0

Scored across 6 tools

Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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.

Maintenance

ActivityMaintained
ResponsivenessNo issues