Source Code
Microsoft 365 MCP Server
Full Microsoft 365 integration via Model Context Protocol (MCP).
Features
๐ง Mail (Outlook)
- List, read, send, and search emails
- Filter by folder (inbox, sent, drafts)
- HTML email support
๐ Calendar
- List and create events
- Teams meeting integration
- Check availability/free-busy
๐ OneDrive
- Browse files and folders
- Search files
- Read file content
โ Tasks (Microsoft To-Do)
- List task lists
- Create and manage tasks
- Set importance and due dates
๐ฌ Teams
- List chats
- Read and send messages
๐ฅ Users
- List organization users
- Get user profiles
Requirements
- Node.js 18+
- Azure Entra ID App with Microsoft Graph permissions
Setup
1. Create Azure Entra ID App
- Go to Azure Portal
- Navigate to Microsoft Entra ID โ App registrations โ New registration
- Configure:
- Name:
MCP-Microsoft365 - Supported account types: Single tenant (recommended)
- Redirect URI:
http://localhost:3000/callback
- Name:
2. Add API Permissions
Add these Application permissions for Microsoft Graph:
Mail.Read, Mail.Send, Mail.ReadWrite
Calendars.Read, Calendars.ReadWrite
Files.Read.All, Files.ReadWrite.All
Tasks.Read.All, Tasks.ReadWrite.All
Chat.Read.All, Chat.ReadWrite.All
User.Read.All
Important: Click "Grant admin consent"
3. Get Credentials
Save these values:
- Application (client) ID
- Directory (tenant) ID
- Client Secret (create under Certificates & secrets)
4. Install
# Clone/download the skill
cd mcp-microsoft365
# Install dependencies
npm install
# Build
npm run build
5. Configure mcporter
mcporter config add m365 --stdio "node /path/to/mcp-microsoft365/dist/index.js"
Edit config/mcporter.json to add environment variables:
{
"mcpServers": {
"m365": {
"command": "node /path/to/dist/index.js",
"env": {
"TENANT_ID": "your-tenant-id",
"CLIENT_ID": "your-client-id",
"CLIENT_SECRET": "your-client-secret",
"DEFAULT_USER": "[email protected]"
}
}
}
}
Usage
# List recent emails
mcporter call m365.m365_mail_list top:5
# Send email
mcporter call m365.m365_mail_send to:"[email protected]" subject:"Hello" body:"<p>Hi!</p>"
# Search
mcporter call m365.m365_mail_search query:"important"
Calendar
# List events
mcporter call m365.m365_calendar_list top:10
# Create event with Teams meeting
mcporter call m365.m365_calendar_create subject:"Team Sync" start:"2026-01-27T10:00:00" end:"2026-01-27T11:00:00" isOnline:true
Files
# List OneDrive root
mcporter call m365.m365_files_list
# Search files
mcporter call m365.m365_files_search query:"report"
Tasks
# List task lists
mcporter call m365.m365_tasks_lists
Teams
# List chats
mcporter call m365.m365_teams_chats top:10
19 Available Tools
| Tool | Description |
|---|---|
m365_mail_list |
List emails |
m365_mail_read |
Read email by ID |
m365_mail_send |
Send email |
m365_mail_search |
Search emails |
m365_calendar_list |
List events |
m365_calendar_create |
Create event |
m365_calendar_availability |
Check free/busy |
m365_files_list |
List files |
m365_files_search |
Search files |
m365_files_read |
Read file content |
m365_files_info |
Get file metadata |
m365_tasks_lists |
List task lists |
m365_tasks_list |
List tasks |
m365_tasks_create |
Create task |
m365_teams_chats |
List chats |
m365_teams_messages |
Read messages |
m365_teams_send |
Send message |
m365_users_list |
List users |
m365_user_info |
Get user profile |
Author
Mahmoud Alkhatib
- Website: malkhatib.com
- YouTube: @malkhatib
- Twitter: @malkhateeb
License
MIT