GitHub - Softeria/ms-365-mcp-server: Microsoft 365 MCP Server (original) (raw)
ms-365-mcp-server
Microsoft 365 MCP Server
A Model Context Protocol (MCP) server for interacting with Microsoft 365 services through the Graph API.
Prerequisites
- Node.js >= 14
Features
- 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
Quick Start Example
Test login in Claude Desktop:
Examples
Integration
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 Code CLI
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.
Authentication
⚠️ 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:
npx @softeria/ms-365-mcp-server --login
Follow the URL and code prompt in the terminal.
Tokens are cached securely in your OS credential store (fallback to file).
CLI Options
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
Server Options
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
--http [port] Use Streamable HTTP transport instead of stdio (optionally specify port, default: 3000)
Starts Express.js server with MCP endpoint at /mcp
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)
Support
If you're having problems or need help:
- Create an issue
- Start a discussion
- Email: eirikb@eirikb.no
- Discord: https://discord.gg/WvGVNScrAZ or @eirikb
License
MIT © 2025 Softeria