# Microsoft 365

> Outlook mail and calendar, Teams, OneDrive and Excel through one Graph API server.

[Canonical HTML page](https://top-mcps.com/mcp/microsoft-365) · [server.json](https://top-mcps.com/mcp/microsoft-365.json) · [methodology](https://top-mcps.com/about/methodology)

## Install

### Claude Desktop — `claude_desktop_config.json`

Paste under mcpServers. Fully quit and reopen Claude after editing.

```json
{
  "mcpServers": {
    "microsoft-365": {
      "command": "npx",
      "args": [
        "-y",
        "@softeria/ms-365-mcp-server"
      ]
    }
  }
}
```

### Claude Code — `CLI or .mcp.json`

Run from your repo. Commit .mcp.json to share with your team.

```shell
claude mcp add microsoft-365 -- npx -y @softeria/ms-365-mcp-server
```

### Cursor — `.cursor/mcp.json`

Global path: ~/.cursor/mcp.json. Reload window after editing.

```json
{
  "mcpServers": {
    "microsoft-365": {
      "command": "npx",
      "args": [
        "-y",
        "@softeria/ms-365-mcp-server"
      ]
    }
  }
}
```

### VS Code — `.vscode/mcp.json`

VS Code uses the "servers" key (not "mcpServers").

```jsonc
{
  "servers": {
    "microsoft-365": {
      "command": "npx",
      "args": [
        "-y",
        "@softeria/ms-365-mcp-server"
      ]
    }
  }
}
```

### Windsurf — `~/.codeium/windsurf/mcp_config.json`

Open via Cascade → hammer icon → Configure.

```json
{
  "mcpServers": {
    "microsoft-365": {
      "command": "npx",
      "args": [
        "-y",
        "@softeria/ms-365-mcp-server"
      ]
    }
  }
}
```

### Cline — `cline_mcp_settings.json`

Open via the Cline sidebar → MCP Servers → Edit.

```json
{
  "mcpServers": {
    "microsoft-365": {
      "command": "npx",
      "args": [
        "-y",
        "@softeria/ms-365-mcp-server"
      ]
    }
  }
}
```

### Continue — `~/.continue/config.json`

Continue uses modelContextProtocolServers with a transport block.

```json
{
  "experimental": {
    "modelContextProtocolServers": [
      {
        "transport": {
          "type": "stdio",
          "command": "npx",
          "args": [
            "-y",
            "@softeria/ms-365-mcp-server"
          ]
        }
      }
    ]
  }
}
```

### Codex CLI — `~/.codex/config.toml`

Codex uses TOML. Each server is a [mcp_servers.<name>] subtable.

```shell
# ~/.codex/config.toml
[mcp_servers.microsoft-365]
command = "npx"
args = [
  "-y",
  "@softeria/ms-365-mcp-server",
]
```

### Zed — `~/.config/zed/settings.json`

Zed calls them "context_servers". Settings live-reload on save.

```jsonc
{
  "context_servers": {
    "microsoft-365": {
      "command": {
        "path": "npx",
        "args": [
          "-y",
          "@softeria/ms-365-mcp-server"
        ]
      }
    }
  }
}
```

### ChatGPT — `ChatGPT → Apps directory`

Microsoft 365 doesn't ship a hosted HTTPS endpoint today. ChatGPT supports remote MCP servers only — to use this server in ChatGPT you'll need to deploy it to a public HTTPS URL first (e.g. via Cloudflare Workers or Vercel) or wait for an official remote build.

```none

```

## At a glance

- **Maintainer:** Softeria
- **Transport:** stdio, Streamable HTTP
- **Auth model:** OAuth 2.1
- **Required secrets:** None
- **Supported clients:** Claude, Claude Code, Cursor, VS Code, Any MCP-compatible client
- **License:** MIT
- **Language:** TypeScript
- **Last verified:** 2026-08-23
- **GitHub stars:** 931 (fetched 2026-08-31T11:43:44.049Z)
- **Score:** 78/100 (rubric 2026-04 — see https://top-mcps.com/about/methodology)
- **Source:** https://github.com/Softeria/ms-365-mcp-server

## Tools & permissions

| Tool | Description | Args | Side effects |
|------|-------------|------|--------------|
| `list-mail-messages` | List messages in the signed-in mailbox. | `—` | read |
| `send-mail` | Send an email from the signed-in account. | `—` | write |
| `list-calendar-events` | List events on the signed-in calendar. | `—` | read |
| `create-calendar-event` | Create a calendar event, including online-meeting options. | `—` | write |
| `list-drives` | List OneDrive drives available to the account. | `—` | read |
| `upload-file-content` | Upload file content to OneDrive. | `—` | write |
| `search-query` | Run a Microsoft Search query across mail, files, and sites. | `—` | read |
| `list-chats` | List Teams chats (org mode). | `—` | read |
| `send-chat-message` | Send a message into a Teams chat (org mode). | `—` | write |

## Security & scope

- **Access scope:** read-write
- **Sandbox:** OAuth 2.1 against Microsoft Graph with dynamically computed scopes: the server requests only the permissions implied by the tools that are enabled. --read-only strips write tools, --enabled-tools narrows the surface by regex, and --allowed-scopes adds a hard scope boundary that hides any tool whose Graph permissions are not allowlisted — an empty allowlist fails startup rather than silently widening.
- **Gotchas:**
  - The default personal-mode surface includes send-mail and calendar writes; retrieval-only deployments should run --read-only.
  - Org mode requests broad SharePoint scopes (Sites.Read.All and up) unless you configure Sites.Selected, which limits access to explicitly granted site collections.

## Quick answer

**What it does.** Authenticates against Microsoft Graph with MSAL, then exposes Microsoft 365 operations as MCP tools: read and send Outlook mail, read and create calendar events, list and post Teams messages, browse OneDrive, and read or update Excel workbooks.

**Best for:**
- Outlook inbox triage from an agent
- Free-busy lookup across Microsoft 365 calendars
- Reading Teams threads for context
- OneDrive and Excel file access

**Not for:**
- Google Workspace stacks
- Unattended send without a human-in-the-loop step
- Tenants where admin consent for Graph scopes is not available

## Description

A widely-installed MCP server for Microsoft 365 via the Graph API. Covers Outlook mail and calendar, Teams messages, OneDrive files, Excel workbooks, OneNote, To Do and contacts behind MSAL device-code auth, with a read-only mode and tool filtering to keep the surface small.

## Why it matters

Microsoft 365 is where most business email and calendars actually live, and Outlook is only in this directory as a ChatGPT-native app. This is the server that gives Claude, Cursor, and VS Code the same reach outside ChatGPT, without wiring Graph by hand.

## Key features

- Outlook mail and calendar via Microsoft Graph
- Teams, OneDrive, Excel, OneNote, To Do and contacts
- MSAL device-code authentication
- Read-only mode for safe first runs
- Tool filtering and presets to shrink the tool surface
- Global and 21Vianet (China) cloud endpoints

## FAQ

### Is this Microsoft official?

No — it is an independent MIT-licensed server by Softeria that talks to the official Microsoft Graph API. Microsoft ships Outlook as a ChatGPT app; this is the option that works in Claude, Cursor, and VS Code.

### How does login work?

MSAL device-code flow: the server prints a code, you authorize once in a browser, and the token is cached locally. No client secret sits in your MCP config.

### Can I stop it from sending mail?

Yes. Start it in read-only mode, and use tool filtering to expose only the operations you want. Add send scopes later, once you trust the workflow.

## Changelog

- **2026-07-26** — v0.133.2 released
- **2026-07-26** — v0.134.0 released
- **2026-07-25** — v0.133.1 released
