A community-driven registry for Claude, Cursor, Windsurf, Cline & more. Not affiliated with Anthropic.
Are you the author? Sign in to claim
MCP server for Claude to access Outlook data via Microsoft Graph API
A comprehensive MCP (Model Context Protocol) server that connects Claude with Microsoft 365 services through the Microsoft Graph API and Power Automate API.
├── index.js # Main entry point
├── config.js # Configuration settings
├── auth/ # Authentication modules
│ ├── index.js # Authentication exports
│ ├── token-manager.js # Token storage and refresh (Graph + Flow)
│ └── tools.js # Auth-related tools
├── calendar/ # Calendar functionality
│ ├── index.js # Calendar exports
│ ├── list.js # List events
│ ├── create.js # Create event
│ ├── delete.js # Delete event
│ ├── cancel.js # Cancel event
│ ├── accept.js # Accept event
│ └── decline.js # Decline event
├── email/ # Email functionality
│ ├── index.js # Email exports
│ ├── list.js # List emails
│ ├── search.js # Search emails
│ ├── read.js # Read email
│ ├── send.js # Send email
│ └── mark-as-read.js # Mark email read/unread
├── folder/ # Folder functionality
│ ├── index.js # Folder exports
│ ├── list.js # List folders
│ ├── create.js # Create folder
│ └── move.js # Move emails
├── rules/ # Email rules functionality
│ ├── index.js # Rules exports
│ ├── list.js # List rules
│ └── create.js # Create rule
├── onedrive/ # OneDrive functionality
│ ├── index.js # OneDrive exports
│ ├── list.js # List files/folders
│ ├── search.js # Search files
│ ├── download.js # Get download URL
│ ├── upload.js # Simple upload (<4MB)
│ ├── upload-large.js # Chunked upload (>4MB)
│ ├── share.js # Create sharing link
│ └── folder.js # Create/delete folders
├── power-automate/ # Power Automate functionality
│ ├── index.js # Power Automate exports
│ ├── flow-api.js # Flow API client
│ ├── list-environments.js # List environments
│ ├── list-flows.js # List flows
│ ├── run-flow.js # Trigger flow
│ ├── list-runs.js # Run history
│ └── toggle-flow.js # Enable/disable flow
└── utils/ # Utility functions
├── graph-api.js # Microsoft Graph API helper
├── odata-helpers.js # OData query building
└── mock-data.js # Test mode data
| Tool | Description |
|---|---|
list-emails | List recent emails from inbox |
search-emails | Search emails with filters |
read-email | Read email content |
send-email | Send a new email |
mark-as-read | Mark email as read/unread |
list-events | List calendar events |
create-event | Create calendar event |
accept-event | Accept event invitation |
decline-event | Decline event invitation |
delete-event | Delete calendar event |
list-folders | List mail folders |
create-folder | Create mail folder |
move-emails | Move emails between folders |
list-rules | List inbox rules |
create-rule | Create inbox rule |
| Tool | Description |
|---|---|
onedrive-list | List files in a path |
onedrive-search | Search files by query |
onedrive-download | Get download URL |
onedrive-upload | Upload small file (<4MB) |
onedrive-upload-large | Chunked upload (>4MB) |
onedrive-share | Create sharing link |
onedrive-create-folder | Create folder |
onedrive-delete | Delete file or folder |
| Tool | Description |
|---|---|
flow-list-environments | List Power Platform environments |
flow-list | List flows in environment |
flow-run | Trigger a manual flow |
flow-list-runs | Get flow run history |
flow-toggle | Enable/disable a flow |
npm install.env.example to .env and add your Azure credentialsnpm run auth-servernpm install
http://localhost:3333/auth/callback.env fileoffline_accessUser.ReadMail.Read, Mail.ReadWrite, Mail.SendCalendars.Read, Calendars.ReadWriteFiles.Read, Files.ReadWriteFor Power Automate (optional):
cp .env.example .env
Edit .env:
# Get these values from Azure Portal > App Registrations > Your App
MS_CLIENT_ID=your-application-client-id-here
MS_CLIENT_SECRET=your-client-secret-VALUE-here
MS_TENANT_ID=your-tenant-id-here
USE_TEST_MODE=false
Important Notes:
MS_CLIENT_ID and MS_CLIENT_SECRET in the .env fileMS_TENANT_ID for single-tenant apps to avoid /common endpoint errorsOUTLOOK_CLIENT_ID and OUTLOOK_CLIENT_SECRETAdd to your Claude Desktop config:
{
"mcpServers": {
"m365-assistant": {
"command": "node",
"args": ["/path/to/outlook-mcp/index.js"],
"env": {
"USE_TEST_MODE": "false",
"OUTLOOK_CLIENT_ID": "your-client-id",
"OUTLOOK_CLIENT_SECRET": "your-client-secret"
}
}
}
}
npm run auth-serverauthenticate tool in Claude~/.outlook-mcp-tokens.jsonPower Automate requires a separate token with the Flow API scope. Configure additional Azure AD permissions for https://service.flow.microsoft.com//.default scope.
Limitations:
"Cannot find module"
npm install
"Port 3333 in use"
npx kill-port 3333
npm run auth-server
"Invalid client secret" (AADSTS7000215)
"Authentication required"
~/.outlook-mcp-tokens.json and re-authenticate# Run with MCP Inspector
npm run inspect
# Run in test mode (mock data)
npm run test-mode
# Run Jest tests
npm test
TOOLS array in index.jsA Jetbrains IDE IntelliJ plugin aimed to provide coding agents the ability to leverage intelliJ's indexing of the codeba
Run Claude Code as an MCP server so any agent can delegate coding tasks to it
Browser automation using accessibility snapshots instead of screenshots