Microsoft 365 MCP Server
A Model Context Protocol (MCP) server for interacting with Microsoft 365 services through the Graph API.
- Node.js >= 14
- Authentication via Microsoft Authentication Library (MSAL)
- Excel file operations
- Calendar event management
- Mail operations
- OneDrive file management
- OneNote notebooks and pages
- To Do tasks and task lists
- Planner plans and tasks
- Outlook contacts
Test login in Claude Desktop:
To add this MCP server to Claude Desktop:
Edit the config file under Settings > Developer:
{
"mcpServers": {
"ms365": {
"command": "npx",
"args": [
"-y",
"@softeria/ms-365-mcp-server"
]
}
}
}
claude mcp add ms365 -- npx -y @softeria/ms-365-mcp-server
For other interfaces that support MCPs, please refer to their respective documentation for the correct integration method.
⚠️ You must authenticate before using tools.
- MCP client login:
- Call the
login
tool (auto-checks existing token) - If needed, get URL+code, visit in browser
- Use
verify-login
tool to confirm
- Call the
- Optional CLI login:
Follow the URL and code prompt in the terminal.
npx @softeria/ms-365-mcp-server --login
Tokens are cached securely in your OS credential store (fallback to file).
The following options can be used when running ms-365-mcp-server directly from the command line:
--login Login using device code flow
--logout Log out and clear saved credentials
--verify-login Verify login without starting the server
When running as an MCP server, the following options can be used:
-v Enable verbose logging
--read-only Start server in read-only mode, disabling write operations
Environment variables:
READ_ONLY=true|1
: Alternative to --read-only flagLOG_LEVEL
: Set logging level (default: 'info')SILENT=true
: Disable console outputMS365_MCP_CLIENT_ID
: Custom Azure app client ID (defaults to built-in app)MS365_MCP_TENANT_ID
: Custom tenant ID (defaults to 'common' for multi-tenant)
If you're having problems or need help:
- Create an issue
- Start a discussion
- Email: [email protected]
- Discord: https://discord.gg/WvGVNScrAZ or @eirikb
MIT © 2025 Softeria