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-mcpm365-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.comandgraph.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=truefor 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/(orM365_MCP_AUTH_DIR), protected with directory mode0700and file mode0600where 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
Gog
@steipeteGoogle Workspace CLI for Gmail, Calendar, Drive, Contacts, Sheets, and Docs.
API Gateway
@byungkyuCall third-party APIs through the Maton gateway, which injects the credential for an app the user has already connected. Use this skill when the user names a connected app and a concrete action in it - read a mailbox, query a CRM, file an issue, update a spreadsheet, run a query through a connected
Notion
@steipeteNotion API for creating and managing pages, databases, and blocks.
Mcporter
@steipeteUse the mcporter CLI to list, configure, auth, and call MCP servers/tools directly (HTTP or stdio), including ad-hoc servers, config edits, and CLI/type generation.
Caldav Calendar
@asleep123Sync and query CalDAV calendars (iCloud, Google, Fastmail, Nextcloud, etc.) using vdirsyncer + khal. Works on Linux.