outlook-triage-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| OUTLOOK_MCP_CACHE_DIR | No | Token cache location. | ~/.local/share/outlook-triage-mcp |
| OUTLOOK_MCP_CLIENT_ID | No | Azure AD app registration. The default is Microsoft's own Graph CLI public client. | 14d82eec-… |
| OUTLOOK_MCP_TENANT_ID | No | Restrict sign-in to a specific tenant. | common |
| OUTLOOK_MCP_USER_EMAIL | Yes | Your address; used to pick the cached account and to classify self-sent mail. | |
| OUTLOOK_MCP_VIP_SENDERS | No | Comma-separated overrides for VIP senders. | |
| OUTLOOK_MCP_ENABLE_WRITE | No | Set to '1' to enable ensure_inbox_rule (requests write scopes on next sign-in). | 0 |
| OUTLOOK_MCP_CLASSIFY_FILE | No | JSON file overriding heuristic keyword lists. | |
| OUTLOOK_MCP_ACTION_KEYWORDS | No | Comma-separated overrides for action keywords. | |
| OUTLOOK_MCP_URGENT_KEYWORDS | No | Comma-separated overrides for urgent keywords. | |
| OUTLOOK_MCP_NEWSLETTER_SENDERS | No | Comma-separated overrides for newsletter sender patterns. | |
| OUTLOOK_MCP_NEWSLETTER_KEYWORDS | No | Comma-separated overrides for newsletter keywords. | |
| OUTLOOK_MCP_MAX_ATTACHMENT_BYTES | No | Attachments larger than this are listed, not parsed. | 5242880 |
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": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| auth_statusA | Check Microsoft 365 auth state; start device-code sign-in if needed. When sign-in is required, returns a verification URL and a user code — relay both to the user, then call this tool again to confirm completion. |
| search_messagesA | Search or list mail messages. Read-only. Args: query: Free-text search (Graph $search / KQL, e.g. 'invoice', 'from:alice subject:report'). Empty = list newest first. folder: Well-known folder (inbox, archive, drafts, sentitems, deleteditems, junkemail, outbox) or a custom folder display name. top: Max messages to return (1-100). since: Only messages received after this point. ISO 8601 ('2026-07-01T00:00:00Z') or relative ('24h', '7d'). |
| get_messageA | Fetch one message: full plain-text body plus metadata. Read-only. Args: message_id: Graph message id (from search_messages or daily_briefing). include_attachments: Also download attachments and extract text locally from PDF / DOCX / XLSX (other types are listed only). |
| daily_briefingA | Classified digest of recent inbox mail. Read-only, no LLM calls. Groups messages from the last N hours into: urgent, action_needed, fyi, newsletter — using deterministic keyword heuristics (configurable via OUTLOOK_MCP_* env vars or a JSON rules file). Returns Markdown. |
| list_inbox_rulesA | List all inbox message rules (name, state, conditions, actions). Read-only. |
| ensure_inbox_ruleA | Idempotently provision one inbox rule. THE ONLY WRITE TOOL. Creates (or converges) a rule: messages whose sender matches
Disabled unless the server runs with OUTLOOK_MCP_ENABLE_WRITE=1 (which also requires re-consenting to write scopes on next sign-in). Args: name: Rule display name — the idempotency key. from_contains: Substring matched against the sender address/name. move_to_folder: Target folder display name. |
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 clear and distinct purpose: auth_status for authentication, daily_briefing for digest, ensure_inbox_rule for rule creation, get_message for fetching a single message, list_inbox_rules for listing rules, and search_messages for searching. No two tools overlap in functionality.
While most names follow a verb_noun pattern (e.g., ensure_inbox_rule, get_message), some deviate: daily_briefing is a noun phrase, and auth_status is noun_noun. This inconsistency, though not severe, prevents a higher score.
Six tools is an appropriate scope for an Outlook triage server, covering authentication, inbox digest, rule management, message retrieval, rule listing, and message search. None seem redundant or missing for the stated purpose.
The server covers reading (search, get, digest) and rule creation, but lacks message actions (delete, move, mark as read) and rule deletion. This is a notable gap for a triage tool, as users cannot act on individual messages beyond reading.