/ Directory / Playground / Microsoft 365 MCP
● Community Softeria ⚡ Instant

Microsoft 365 MCP

by Softeria · Softeria/ms-365-mcp-server

Microsoft 365 surface as MCP — Outlook, Calendar, OneDrive, Teams chat, Excel — auth via Microsoft Graph.

ms-365-mcp covers the core M365 productivity surface. Useful when your work life lives in Outlook/Teams and you want Claude to draft, triage, and schedule across them.

Why use it

Key features

Live Demo

What it looks like in practice

ready

Install

Pick your client

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "ms-365-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "ms-365-mcp-server"
      ]
    }
  }
}

Open Claude Desktop → Settings → Developer → Edit Config. Restart after saving.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "ms-365-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "ms-365-mcp-server"
      ]
    }
  }
}

Cursor uses the same mcpServers schema as Claude Desktop. Project config wins over global.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "ms-365-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "ms-365-mcp-server"
      ]
    }
  }
}

Click the MCP Servers icon in the Cline sidebar, then "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "ms-365-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "ms-365-mcp-server"
      ]
    }
  }
}

Same shape as Claude Desktop. Restart Windsurf to pick up changes.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "ms-365-mcp",
      "command": "npx",
      "args": [
        "-y",
        "ms-365-mcp-server"
      ]
    }
  ]
}

Continue uses an array of server objects rather than a map.

~/.config/zed/settings.json
{
  "context_servers": {
    "ms-365-mcp": {
      "command": {
        "path": "npx",
        "args": [
          "-y",
          "ms-365-mcp-server"
        ]
      }
    }
  }
}

Add to context_servers. Zed hot-reloads on save.

claude mcp add ms-365-mcp -- npx -y ms-365-mcp-server

One-liner. Verify with claude mcp list. Remove with claude mcp remove.

Use Cases

Real-world ways to use Microsoft 365 MCP

Triage your Outlook inbox

👤 Developers ⏱ ~15 min intermediate

When to use: You start the day buried; want a quick brief + drafts.

Flow
  1. List unread
    list_messages unread=true✓ Copied
    → Top messages
  2. Cluster
    Group by sender/thread; mark importance.✓ Copied
    → Priority lanes
  3. Draft
    Compose draft replies for top 5.✓ Copied
    → Drafts saved

Outcome: Inbox triaged with drafts ready to send.

Combinations

Pair with other MCPs for X10 leverage

ms-365-mcp + github

Pull PR titles into a weekly Outlook digest

Combine ms-365-mcp with github: Pull PR titles into a weekly Outlook digest✓ Copied

Tools

What this MCP exposes

ToolInputsWhen to callCost
list_messages (see docs) List Outlook messages 1 call
send_message (see docs) Send mail 1 call
create_event (see docs) Calendar event 1 call
list_files (see docs) OneDrive files 1 call
excel_range (see docs) Read/write Excel cells 1 call

Cost & Limits

What this costs to run

API quota
Graph throttling (varies)
Tokens per call
Messages mid-size
Monetary
Free; M365 plan applies
Tip
Scope OAuth tightly — Graph permission lists are scary

Security

Permissions, secrets, blast radius

Minimum scopes: Mail.Read Calendars.ReadWrite Files.Read
Credential storage: OAuth token in OS keychain
Data egress: graph.microsoft.com
Never grant: Mail.ReadWrite.All across tenant

Troubleshooting

Common errors and fixes

403

Admin consent missing on a scope

Throttled

Graph rate limits per tenant; back off

Alternatives

Microsoft 365 MCP vs others

AlternativeWhen to use it insteadTradeoff
Per-product MCPYou only need one (e.g. Outlook)More configs

More

Resources

📖 Read the official README on GitHub

🐙 Browse open issues

🔍 Browse all 400+ MCP servers and Skills