Outlook MCP (Model Context Protocol) Server

by kacase

343 downloads
Not rated
GitHub

About

An MCP Server for Microsoft Outlook using GraphAPI

Details

Author
kacase
Downloads
343
Categories
Communication

- Calendar event CRUD operations (list, create, get, update, delete)
- Email CRUD operations (list, get, send, draft, mark read/unread, delete)
- People search and retrieval within the organization
- Full TypeScript implementation with Zod validation
- Complies with Model Context Protocol for LLM tool integration

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name Outlook MCP (Model Context Protocol) Server
    Command (node, npx, python, etc.)

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

Install via npx and configure the server in your Claude Desktop config with your Azure App registration details. Set the environment variables AUTHORITY (Tenant ID), CLIENT_ID, MCP_SERVER_NAME, and MCP_SERVER_VERSION. Run npx mcp_outlook or point to a local build.

listCalendarEvents

Lists the user's calendar events for a specified time range

createCalendarEvent

Creates a new calendar event. Ensure availability and user confirmation before sending invites.

getCalendarEvent

Gets details of a specific calendar event

updateCalendarEvent

Updates an existing calendar event

deleteCalendarEvent

Deletes a calendar event

listEmails

Lists the user's emails from a specified folder

sendEmail

Sends a new email message

getEmail

Gets details of a specific 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

searchPeople

Searches for people relevant to the current user (colleagues, contacts, etc.)

getPerson

Gets details of a specific person by ID

getSchedule

Gets free/busy schedule information for specified users

findMeetingTimes

Finds suitable meeting times for a group of attendees. Correct E-Mail addresses are required.

addAttendeesToCalendarEvent

Adds one or more attendees to an existing calendar event. Fetches the event, merges new attendees with existing ones (avoiding duplicates), and updates the event.

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "outlook mcp (model context protocol) server": {
            "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"
                }
            }
        }
    }
}

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"
        }
    }
}

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

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

{
"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"
}
}
}
}

No reviews yet β€” be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.