Content
# Outlook MCP (Model Context Protocol) Server
A Model Context Protocol server that integrates with Microsoft Outlook through Microsoft Graph API, allowing Claude and other LLMs to check calendar events, schedule new ones, read emails, and send messages.
## Features
- 📅 **Calendar Integration**: View, list, create, update, and delete calendar events
- 📧 **Email Integration**: Read, send, draft, and manage emails from your Outlook account
- 🔁 **Model Context Protocol**: Follows MCP standards for LLM tool integration
- 🛡️ **Type Safety**: Full TypeScript implementation with Zod validation
## Prerequisites
- Node.js 18+
- Microsoft 365 account with appropriate permissions
- Microsoft Azure App Registration with Graph API permissions (Calendar and Mail)
## Setup
1. Register an application in Azure Active Directory:
- Go to [Azure Portal](https://portal.azure.com)
- Navigate to "App registrations"
- Create a new registration with a redirect URI of type "Public client/native (mobile & desktop)"
- Register `http://localhost` as the redirect URI
- Configure API permissions:
- Choose Microsoft Graph and type delegated, as we will act on the users behalf
- For Calendar: "Calendars.Read" and "Calendars.ReadWrite"
- For Email: "Mail.Read", "Mail.ReadWrite" and "Mail.Send"
- For People: "People.Read"
2. Note the values from your Azure app registration (Overview) to use for the MCP config as environment variables:
- Client ID (Application (client) ID)
- Authority ID (Directory (tenant) ID)
3. Register the MCP server
For Claude Desktop, create or update your configuration in `~/.claude/config.json`:
```json
{
"mcpServers": {
"outlook": {
"command": "npx",
"args": [
"mcp_outlook"
],
"env": {
"AUTHORITY": "your-authority-id",
"CLIENT_ID": "your-client-id",
"MCP_SERVER_NAME": "outlook-mcp",
"MCP_SERVER_VERSION": "1.0.0"
}
}
}
}
```
Make sure to replace the path and environment variables with your actual values.
## Available Tools
### Calendar Tools
- **listCalendarEvents**: Lists the user's calendar events for a specified time range
- **createCalendarEvent**: Creates a new calendar event
- **getCalendarEvent**: Gets details of a specific calendar event
- **updateCalendarEvent**: Updates an existing calendar event
- **deleteCalendarEvent**: Deletes a calendar event
### Email Tools
- **listEmails**: Lists emails from a specified folder (inbox, sent, drafts, etc.)
- **getEmail**: Gets details of a specific email message
- **sendEmail**: Sends a new email message
- **createDraft**: Creates a draft email message without sending it
- **markEmailAsRead**: Marks an email message as read
- **markEmailAsUnread**: Marks an email message as unread
- **deleteEmail**: Deletes an email message
## People Tools
- **searchPeople** Find a person in the organisation or your recent contacts
- **getPerson** Get information on a person
### Resources
- **calendar**: Resource containing calendar events data
- **inbox**: Resource containing inbox messages data
## Development
Run in development mode with live reloading:
```
npm run dev
```
Run linting:
```
npm run lint
```
Configure your MCP locally
```json
{
"mcpServers": {
"outlook": {
"command": "node",
"args": [
"/ABSOLUTE/PATH/TO/outlook_mcp/build/index.js"
],
"env": {
"AUTHORITY": "your-authority-id",
"CLIENT_ID": "your-client-id",
"MCP_SERVER_NAME": "outlook-mcp",
"MCP_SERVER_VERSION": "1.0.0"
}
}
}
}
```
You Might Also Like
OpenWebUI
Open WebUI is an extensible web interface for customizable applications.

NextChat
NextChat is a light and fast AI assistant supporting Claude, DeepSeek, GPT4...

cherry-studio
Cherry Studio is a multilingual project for creative collaboration.

LibreChat
LibreChat is an open-source chat platform for seamless communication.

Continue
Continue is an open-source project for seamless server management.

repomix
Repomix packages your codebase into AI-friendly formats for easy use.