# Microsoft 365 Calendar

Brings the Outlook calendar from Microsoft 365 into your coding agent: read events, create and edit meetings, find free slots. Handy when you plan the day from the chat window.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 13
- Author: mindstone
- License: not stated · policy=link-only · description only; the file stays with the author
- Source: https://github.com/mindstone/mcp-servers/tree/HEAD/connectors/microsoft-calendar
- Updated: 2026-10-22
- HTML: https://affpapa.org/en/nevibecode/mcp/microsoft-365-calendar

## What it does

The server talks to Microsoft Graph and exposes 10 tools covering events, calendars, free/busy and meeting-time suggestions. Ask what is on today, book or cancel a meeting, reply to an invite, or check when you and a colleague are both open.

It does not run the OAuth flow itself. A host application signs in to Microsoft and writes token files to `${MS_CONFIG_DIR}/credentials/${sanitised-email}.token.json` along with an `${MS_CONFIG_DIR}/accounts.json` index; the server only reads them. You need Node.js 20+ and npm, plus `MS_CLIENT_ID` (the Microsoft Entra app client ID) and `MS_CONFIG_DIR`. Leave `MS_CLIENT_ID` empty and sign-in never completes.

Calendar shares its OAuth surface with the sibling `@mindstone/mcp-server-microsoft-mail` server, so one sign-in covers mail and calendar together. Graph request timeouts are set with `MICROSOFT_REQUEST_TIMEOUT_MS`, up to `300000` ms. On cloud surfaces `MICROSOFT_DISABLE_REFRESH=1` makes tools fail closed with a structured `auth_required` response, letting the host drive reauth.

## Requirements
- Needs: Node.js (commands run via npx)
- Environment variables: `MS_CLIENT_ID`, `MS_CONFIG_DIR`, `MS_ACCOUNT_EMAIL`, `MS_MCP_PACKAGE_ID`, `MICROSOFT_REQUEST_TIMEOUT_MS` — keys and tokens: ask the human for the values, never commit them or put them in shared files.

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add --env MS_CLIENT_ID=<MS_CLIENT_ID> --env MS_CONFIG_DIR=<MS_CONFIG_DIR> --env MS_ACCOUNT_EMAIL=<MS_ACCOUNT_EMAIL> --env MS_MCP_PACKAGE_ID=<MS_MCP_PACKAGE_ID> --env MICROSOFT_REQUEST_TIMEOUT_MS=<MICROSOFT_REQUEST_TIMEOUT_MS> --transport stdio microsoft-calendar -- npx -y @mindstone/mcp-server-microsoft-calendar
```
Replace <…> with your own values

### Codex

**Platform CLI**
```bash
codex mcp add microsoft-calendar --env MS_CLIENT_ID=<MS_CLIENT_ID> --env MS_CONFIG_DIR=<MS_CONFIG_DIR> --env MS_ACCOUNT_EMAIL=<MS_ACCOUNT_EMAIL> --env MS_MCP_PACKAGE_ID=<MS_MCP_PACKAGE_ID> --env MICROSOFT_REQUEST_TIMEOUT_MS=<MICROSOFT_REQUEST_TIMEOUT_MS> -- npx -y @mindstone/mcp-server-microsoft-calendar
```
Replace <…> with your own values

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "microsoft-calendar": {
            "command": "npx",
            "args": [
                "-y",
                "@mindstone/mcp-server-microsoft-calendar"
            ],
            "env": {
                "MS_CLIENT_ID": "<MS_CLIENT_ID>",
                "MS_CONFIG_DIR": "<MS_CONFIG_DIR>",
                "MS_ACCOUNT_EMAIL": "<MS_ACCOUNT_EMAIL>",
                "MS_MCP_PACKAGE_ID": "<MS_MCP_PACKAGE_ID>",
                "MICROSOFT_REQUEST_TIMEOUT_MS": "<MICROSOFT_REQUEST_TIMEOUT_MS>"
            }
        }
    }
}
```
Replace <…> with your own values

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "microsoft-calendar": {
            "type": "stdio",
            "command": "npx",
            "args": [
                "-y",
                "@mindstone/mcp-server-microsoft-calendar"
            ],
            "env": {
                "MS_CLIENT_ID": "<MS_CLIENT_ID>",
                "MS_CONFIG_DIR": "<MS_CONFIG_DIR>",
                "MS_ACCOUNT_EMAIL": "<MS_ACCOUNT_EMAIL>",
                "MS_MCP_PACKAGE_ID": "<MS_MCP_PACKAGE_ID>",
                "MICROSOFT_REQUEST_TIMEOUT_MS": "<MICROSOFT_REQUEST_TIMEOUT_MS>"
            }
        }
    }
}
```
Replace <…> with your own values

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add -e MS_CLIENT_ID=<MS_CLIENT_ID> -e MS_CONFIG_DIR=<MS_CONFIG_DIR> -e MS_ACCOUNT_EMAIL=<MS_ACCOUNT_EMAIL> -e MS_MCP_PACKAGE_ID=<MS_MCP_PACKAGE_ID> -e MICROSOFT_REQUEST_TIMEOUT_MS=<MICROSOFT_REQUEST_TIMEOUT_MS> microsoft-calendar npx -y @mindstone/mcp-server-microsoft-calendar
```
Replace <…> with your own values

## When to use it
- check what is booked for today and tomorrow
- create a meeting with attendees and a set length
- find a slot where two people are both free
- accept or decline a meeting invite
- check availability before booking a call

## Example prompts
- What's on my calendar this afternoon?
- Find a 30-minute slot tomorrow when Alice and I are both free
- Create a meeting with the team at 10am and invite everyone

## Similar
- [Microsoft 365 MCP Server](https://affpapa.org/en/nevibecode/mcp/microsoft-365-mcp-server.md) — MCP server · ★ 1085
- [outlook-calendar](https://affpapa.org/en/nevibecode/plugins/outlook-calendar.md) — plugin · ★ 7604
- [Microsoft 365 Admin](https://affpapa.org/en/nevibecode/mcp/microsoft-365-admin.md) — MCP server · ★ 17
- [outlook-calendar-automation](https://affpapa.org/en/nevibecode/skills/outlook-calendar-automation.md) — skill · 962 installs
- [Outlook Assistant](https://affpapa.org/en/nevibecode/mcp/outlook-assistant.md) — MCP server · ★ 39
- [calendar-automation](https://affpapa.org/en/nevibecode/skills/calendar-automation.md) — skill · 6100 installs

From the same set: [mindstone/mcp-servers](https://affpapa.org/en/nevibecode/by/mindstone/mcp-servers.md) — 24 cards

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
