Microsoft 365 Calendar — Claude Code MCP server: events and meetings
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.
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-calendarWhat Microsoft 365 Calendar 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.
What it helps with
- 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 for the agent
- 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
How to install Microsoft 365 Calendar
Platform CLI
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-calendarReplace <…> with your own values
Platform CLI
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-calendarReplace <…> with your own values
Config file
{
"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
Config file
{
"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
Platform CLI
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-calendarReplace <…> with your own values
Step by step, with commands for each platform: How to add an MCP server to Claude Code, Codex, Cursor, VS Code, Gemini CLI and more
Questions about Microsoft 365 Calendar
How do I install Microsoft 365 Calendar in Claude Code?
Run `claude mcp add mcp-server-microsoft-calendar -e MS_CLIENT_ID=<MS_CLIENT_ID> -e MS_CONFIG_DIR=<MS_CONFIG_DIR> -- npx -y @mindstone/mcp-server-microsoft-calendar`. Replace the placeholders with your client ID and config directory path.
What does Microsoft 365 Calendar do?
It gives an agent access to the Outlook calendar through Microsoft Graph: list and read events, create, update, cancel, respond to invites, check free/busy and suggest meeting times.
Why doesn't the server start the Microsoft sign-in itself?
The host application owns the OAuth flow and stores tokens under ${MS_CONFIG_DIR}; the server reads them. Without a host that has already authenticated, the tools have nothing to work with.