← Back to Skills
Automation

mcp-microsoft365

makhatib By makhatib 👁 7 views ▲ 0 votes

Full Microsoft 365 integration via Model Context Protocol

GitHub
# 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

1. Go to [Azure Portal](https://portal.azure.com)
2. Navigate to **Microsoft Entra ID** → **App registrations** → **New registration**
3. Configure:
   - Name: `MCP-Microsoft365`
   - Supported account types: Single tenant (recommended)
   - Redirect URI: `http://localhost:3000/callback`

### 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

```bash
# Clone/download the skill
cd mcp-microsoft365

# Install dependencies
npm install

# Build
npm run build
```

### 5. Configure mcporter

```bash
mcporter config add m365 --stdio "node /path/to/mcp-microsoft365/dist/index.js"
```

Edit `config/mcporter.json` to add environment variables:

```json
{
  "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

### Email
```bash
# 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
```bash
# 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
```bash
# List OneDrive root
mcporter call m365.m365_files_list

# Search files
mcporter call m365.m365_files_search query:"report"
```

### Tasks
```bash
# List task lists
mcporter call m365.m365_tasks_lists
```

### Teams
```bash
# 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](https://malkhatib.com)
- YouTube: [@malkhatib](https://youtube.com/@malkhatib)
- Twitter: [@malkhateeb](https://twitter.com/malkhateeb)

## License

MIT
automation

Comments

Sign in to leave a comment

Loading comments...