m365-mcp

Production-grade Microsoft 365 MCP server with delegated OAuth, multi-account support, pagination, rate limiting, and 44 tools covering email, calendar, contacts, OneDrive, Teams, …

Alex Kay

@sam2kb

What This Skill Does

MCP server that exposes 43 Microsoft 365 tools (email, calendar, contacts, OneDrive, Teams, tasks, users) via delegated OAuth with multi-account support, pagination, and rate limiting.

Replaces building custom Microsoft Graph integrations for each service by providing a single, production-ready MCP server with 43 tools and delegated OAuth.

When to Use It

  • Read and send Outlook emails from an AI assistant
  • Create calendar events with Teams meeting links
  • Search OneDrive for files matching a query
  • List and send messages in Microsoft Teams chats
  • Manage tasks across multiple Microsoft To Do lists
  • Look up user profiles and manager information in your organization

Install

$ openclaw skills install @sam2kb/m365-mcp

m365-mcp

Production-grade Microsoft 365 MCP server combining the best of office365-connector (delegated OAuth, multi-account) and mcp-microsoft365 (MCP protocol, full scope), with production-ready features: pagination, rate limiting, retry logic, and full TypeScript.

Requirements

  • Node.js 18+
  • Azure Entra ID App Registration with delegated Microsoft Graph permissions
  • Device code OAuth (no client-credentials, no tenant-wide access)

Capabilities

Email (9 tools)

  • List, read, send, reply, search, move, delete, mark read/unread, list folders

Calendar (7 tools)

  • List events, today view, week view, create (with Teams meeting), update, delete, free/busy

Contacts (12 tools)

  • Rich contact CRUD, exact category assignment and any/all filtering, category enumeration, folder-scoped contacts, contact-folder CRUD, and relevance-ranked People API recipient search across mailbox and optional directory sources. People results support fuzzy search, identity-type filters, relevance scores, and optional profile details. Private Outlook Contact Lists and their membership are not exposed by Microsoft Graph.

OneDrive (5 tools)

  • List files, search, read content, metadata, create folders

Teams (3 tools)

  • List chats, read messages, send messages

Tasks (5 tools)

  • List lists, list tasks, create, update, delete

Users (3 tools)

  • List org users, profile lookup, manager lookup

Security and consent

  • The server contacts only Microsoft's OAuth and Graph services: login.microsoftonline.com and graph.microsoft.com.
  • Device-code OAuth grants delegated access as the signed-in user. Read tools can expose private mail, files, calendars, contacts, Teams chats, tasks, and user data.
  • Send, reply, move, create, update, and delete tools change real Microsoft 365 data. Configure the MCP client to require explicit user approval for those tools.
  • Tools publish standard MCP read-only, destructive, idempotent, and open-world annotations so compatible clients can apply confirmation policies.
  • Set M365_MCP_READ_ONLY=true for an enforced least-privilege mode. It requests read-only OAuth scopes, omits mutating tools from discovery, and rejects direct calls to them.
  • Refresh and access tokens are stored as plaintext JSON under ~/.m365-mcp/auth/ (or M365_MCP_AUTH_DIR), protected with directory mode 0700 and file mode 0600 where supported. Protect that directory and revoke the app's Microsoft account consent if a token or device is compromised.

Setup

ClawHub installs the prebuilt npm package automatically. For a manual install:

npm install --global @sam2kb/m365-mcp

# Add account
m365-mcp-auth add work <tenantId> <clientId> you@company.com

# Authenticate
m365-mcp-auth login --account=work

Then configure m365-mcp as a stdio MCP server in your client.

See the project README for the full Azure setup guide.

Top skills in this category