Outlook Mcp

Production-grade MCP server for personal Outlook (Outlook.com / Hotmail / Live). 62 typed Graph tools across mail, calendar, contacts, to-do, drafts, attachm...

Michael Palermiti

@mpalermiti

What This Skill Does

MCP server providing 62 Microsoft Graph API tools for personal Outlook accounts (Outlook.com, Hotmail, Live). Covers mail, calendar, contacts, tasks, drafts, attachments, folders, threading, batch operations, and delta sync with granular permissions and OS-keyring auth.

Replaces building custom Graph API integrations for each Outlook feature by exposing all major personal Outlook operations through a single MCP server with agent-optimized tooling.

When to Use It

  • List inbox messages filtered by folder, sender, or date range
  • Search personal Outlook mail using KQL queries
  • Read up to 20 messages in a single batch round-trip
  • Send or reply to emails with HTML content and attachments
  • List and create calendar events with timezone support
  • Sync inbox changes incrementally for recurring agent tasks

Install

$ openclaw skills install @mpalermiti/outlook-mcp

outlook-mcp

MCP server for Microsoft Outlook personal accounts (Outlook.com, Hotmail, Live). Provides AI agents with full access to mail, calendar, contacts, and tasks via Microsoft Graph API.

Independent open-source project. Not affiliated with Microsoft.

Agent-friendly

Pass concise=True to read tools (outlook_list_inbox, outlook_read_message, outlook_search_mail, outlook_list_events, outlook_list_thread) to drop large body fields — ~10× fewer tokens for triage scans. Graph errors are wrapped into structured {code, message, action} responses with recovery hints (re-auth on 401, ROADMAP pointer on 403/ErrorAccessDenied, re-list on 404, back-off on 429, retry on 503). v1.9.1 docstring audit: every @mcp.tool() docstring rewritten to a consistent shape with contrastive pointers for ambiguous pairs and concrete syntax examples, designed to reduce wrong-tool selection by LLMs.

Important

  • Personal Microsoft accounts only (@outlook.com, @hotmail.com, @live.com). Work/school accounts (Entra ID) are not supported in v1.
  • Requires Azure AD app registration — free, takes ~5 minutes, but you need a free Azure account first. See README.
  • Auth is CLI-based — run outlook-mcp auth on the host before the agent can use it. No interactive auth through MCP tools.

Setup

  1. Create a free Azure account at azure.microsoft.com/free (sign up with your @outlook.com address)
  2. Register an Azure AD app (see README for step-by-step)
  3. Configure: Create ~/.outlook-mcp/config.json:
    {
      "client_id": "YOUR-APP-CLIENT-ID",
      "tenant_id": "consumers",
      "timezone": "America/Los_Angeles",
      "read_only": true
    }
    
  4. Register with OpenClaw (writes to mcp.servers in ~/.openclaw/openclaw.json):
    openclaw mcp set outlook '{"command":"uv","args":["--directory","/path/to/outlook-mcp","run","outlook-mcp"]}'
    openclaw mcp list   # verify
    
  5. Authenticate on the host:
    cd /path/to/outlook-mcp && uv run outlook-mcp auth
    
  6. Restart the gateway: openclaw gateway restart

Tools (62)

Auth

  • outlook_auth_status — Check authentication status and read-only mode

Mail — Read

  • outlook_list_inbox — List messages with filters (folder, unread, sender, date)
  • outlook_read_message — Get full message by ID
  • outlook_read_messages — Bulk read up to 20 messages by ID in one $batch round-trip (use NOT N read_message calls)
  • outlook_search_mail — Search mail using KQL query
  • outlook_list_folders — List all mail folders
  • outlook_list_inbox_delta — List only inbox changes since last call (massive token savings for recurring agent jobs)

Mail — Write

  • outlook_send_message — Send email with recipients, CC, BCC, HTML, importance
  • outlook_reply — Reply or reply-all to a message
  • outlook_forward — Forward a message

Mail — Triage

  • outlook_move_message — Move to a folder
  • outlook_delete_message — Delete (soft by default, permanent optional)
  • outlook_flag_message — Set follow-up flag
  • outlook_categorize_message — Set categories
  • outlook_mark_read — Mark read or unread
  • outlook_reclassify_message — Move between Focused Inbox and Other
  • outlook_list_inbox_overrides — List Focused Inbox per-sender override rules
  • outlook_set_inbox_override — Upsert a per-sender override (focused/other)
  • outlook_delete_inbox_override — Delete an override by ID

Calendar

  • outlook_list_events — List events in date range (expands recurring)
  • outlook_get_event — Get event details
  • outlook_list_events_delta — List only event changes since last call within a window (massive token savings for recurring agent jobs)
  • outlook_create_event — Create event with attendees, recurrence, online meeting
  • outlook_update_event — Update event fields
  • outlook_delete_event — Delete event
  • outlook_rsvp — Accept, decline, or tentatively accept

Contacts

  • outlook_list_contacts — List with cursor pagination
  • outlook_search_contacts — Search by name or email
  • outlook_get_contact — Get full details
  • outlook_create_contact — Create
  • outlook_update_contact — Update
  • outlook_delete_contact — Delete
  • outlook_list_contacts_delta — List only contact changes since last call (massive token savings for recurring agent jobs)

Digest

  • outlook_changes_since — One structured "since last call" digest across mail, events, and contacts. Composes the three delta tools into counts + urgent-flagged mail + top-5 senders + new/cancelled events; auto-recovers from stale tokens. Designed for recurring agent loops (morning brief, hourly inbox sweep).

To Do

  • outlook_list_task_lists — List To Do lists
  • outlook_list_tasks — List tasks with status filter and pagination
  • outlook_create_task — Create with due date, importance, recurrence
  • outlook_update_task — Update
  • outlook_complete_task — Mark completed
  • outlook_delete_task — Delete

Drafts

  • outlook_list_drafts — List with pagination
  • outlook_create_draft — Create for later review
  • outlook_update_draft — Update
  • outlook_send_draft — Send
  • outlook_delete_draft — Delete

Attachments

  • outlook_list_attachments — List on a message
  • outlook_download_attachment — Download and save decoded bytes to a file
  • outlook_send_with_attachments — Send with files (auto upload session for >3MB)
  • outlook_attach_to_draft — Add attachments to an existing draft (auto upload session for >3MB)
  • outlook_remove_draft_attachment — Remove a single attachment from a draft

Folder Management

  • outlook_create_folder — Create (top-level or nested)
  • outlook_rename_folder — Rename
  • outlook_delete_folder — Delete (refuses well-known folders)

Threading and Batch

  • outlook_list_thread — Get all messages in a conversation
  • outlook_copy_message — Copy to another folder
  • outlook_batch_triage — Batch move/flag/categorize/mark_read (max 20)

User and Admin

  • outlook_whoami — Current user profile
  • outlook_list_calendars — Available calendars
  • outlook_list_categories — Category definitions with colors
  • outlook_get_mail_tips — Pre-send check (OOF, delivery restrictions)
  • outlook_list_accounts — Configured accounts
  • outlook_switch_account — Switch active account

Privacy

  • Zero telemetry, zero local caching
  • Only connects to login.microsoftonline.com and graph.microsoft.com
  • Tokens stored in OS keyring (macOS Keychain, Windows Credential Store)
  • BYOID: you register your own Azure AD app — no shared client ID

Notes

  • IDs are opaque Graph strings — get them from list/search tools, never guess
  • Dates are ISO 8601, UTC in responses, config timezone for input interpretation
  • Mail search uses KQL syntax
  • Start with read_only: true, flip when comfortable
  • Granular permissions: For finer control, set allow_categories in config (e.g., ["calendar_write"] to allow only calendar writes). See README for the 7 categories and example policies.
  • Toolset selection: Set OUTLOOK_MCP_TOOLSETS (e.g. mail,calendar,digest,delta) to load only the tool groups you use and cut per-turn context; unset loads all 62. Tools carry read-only / destructive annotations so clients can auto-approve reads.

Top skills in this category

百度网盘

@wscats

百度网盘(Baidu Drive, pan.baidu.com)文件管理 — 上传、下载、转存、分享、搜索、移动、复制、重命名、创建文件夹、删除(高风险,需用户确认)。 同时支持 Agent 记忆备份/恢复(kimiclaw/maxclaw/qclaw/openclaw)。 TRIGGER: 用户消息明确提及"百...

1922k

wechat-mp-writer-skill-mxx

@hahacatlsq

微信公众号文章全流程写作助手。支持热点选题、文章撰写、AI去味润色(去除机器感)、配图建议、一键发布到公众号草稿箱。适用于技术博主、自媒体创作者、企业公众号运营等场景。当用户需要写公众号文章、润色内容、寻找配图或发布到微信时使用此skill。

376.1k

Weiyun Skills

@wscats

微云网盘 MCP 接口完整技能。包含 weiyun.list、weiyun.list_by_category、weiyun.download、weiyun.delete、weiyun.upload、weiyun.gen_share_link、weiyun.rename_file、weiyun.rename_dir...

921k

Agent Commerce Engine

@nowloady

A production-ready universal engine for Agentic Commerce. This tool enables autonomous agents to interact with any compatible headless e-commerce backend thr...

95.0k

Blog Writer

@tomstools11

This skill should be used when writing blog posts, articles, or long-form content in the writer's distinctive writing style. It produces authentic, opinionated content that matches the writer's voice—direct, conversational, and grounded in personal experience. The skill handles the complete workflow from research review through Notion publication. Use this skill for drafting blog posts, thought leadership pieces, or any writing meant to reflect the writer's perspective on AI, productivity, sales, marketing, or technology topics.

66.9k