home / mcp / outlook meetings scheduler mcp server

Outlook Meetings Scheduler MCP Server

Provides an MCP server to schedule Outlook calendar events via Microsoft Graph, including attendee management.

Installation
Add the following to your MCP client configuration file.

Configuration

View docs
{
  "mcpServers": {
    "anoopt-outlook-meetings-scheduler-mcp-server": {
      "command": "node",
      "args": [
        "/path/to/outlook-meetings-scheduler-mcp-server/build/index.js"
      ],
      "env": {
        "AUTH_MODE": "interactive",
        "CLIENT_ID": "<YOUR_CLIENT_ID>",
        "TENANT_ID": "<YOUR_TENANT_ID>",
        "USER_EMAIL": "[email protected]",
        "ACCESS_TOKEN": "<ACCESS_TOKEN>",
        "CLIENT_SECRET": "<YOUR_CLIENT_SECRET>"
      }
    }
  }
}

You have a powerful MCP server that lets you schedule Microsoft Outlook meetings through Microsoft Graph. It supports creating single events or events with attendees, finding people’s email addresses, and coordinating with other MCP servers to streamline your workflows.

How to use

You interact with the Outlook Meetings Scheduler MCP Server by issuing commands through an MCP client. You can find a colleague’s email, then schedule a meeting with that person, or schedule a meeting with multiple attendees. You can also combine this MCP server with other MCP servers to trigger related tasks, such as creating issues in GitHub and then scheduling a follow-up calendar reminder.

Primary actions you will use include finding attendees, creating events, and updating event details. The core tools you have access to are:find-person, create-event, create-event-with-attendees, get-event, list-events, delete-event, update-event, and update-event-attendees. Use these to locate emails, schedule meetings, add attendees, and adjust times or attendees as needed.

How to install

Prerequisites you need before installation are Node.js and npm, plus optionally Docker if you want to run the MCP server in a container.

Install and build the MCP server locally with these steps:

# Install dependencies
npm install

# Build the project
npm run build

Configuration and usage notes

The server supports three authentication modes: Interactive (Delegated), Client Credentials (App-Only), and Client Provided Token. You configure authentication by setting environment variables in your MCP client. Commonly used variables include AUTH_MODE, CLIENT_ID, TENANT_ID, CLIENT_SECRET, USER_EMAIL, ACCESS_TOKEN, and TOKEN_EXPIRES_ON. The server also supports a built-in multi-tenant app for zero-configuration use.

To run the MCP server with different configurations, you can use one of several setup patterns shown below. Each pattern runs the server as a local process, not as a hosted service.

Examples and scenarios

Integration with other MCP servers is common. For example, you can create a GitHub issue and then schedule a follow-up meeting to review the issue.

Scheduling a meeting with a single attendee will have the server locate the email address and create a calendar event for the specified time.

Environment variables

Key environment variables you will encounter include AUTH_MODE, CLIENT_ID, CLIENT_SECRET, TENANT_ID, USER_EMAIL, ACCESS_TOKEN, and TOKEN_EXPIRES_ON. Depending on the authentication mode, you will provide the appropriate set of values.

Build and run configurations you can reuse

If you prefer running the MCP server directly with Node.js, you can start it using a path to the built index file.

If you want to run the server via Docker, you can build and run the Docker image as shown in the examples.

Notes on multiple MCP configurations

You can use multiple runnable configurations in parallel, such as a Node-based local run, a Docker-based run, or an NPX-based run. Each configuration should specify its own command, arguments, and environment variables so you can select the method that best fits your environment.

Troubleshooting tips

If authentication prompts are not appearing where expected, verify that your environment variables are correctly set and that the chosen authentication mode is supported by your Azure AD app registration.

Security and scope considerations

Always ensure the Microsoft Graph permissions you grant align with the operations you perform. Use the least-privilege permissions necessary for calendars and people access, and manage tokens and client secrets securely in your deployment environment.

Configuration for multi-MCP setup

You can configure multiple MCP servers to work together. For example, you can have both the Outlook Meetings Scheduler MCP Server and a GitHub MCP Server available in your workspace. Each server is defined separately with its own command and environment settings.

Direct usage prompts and sample workflows

You can use prompts like: “Find the email address for Sarah Smith,” or “Schedule a meeting called ‘Project Kickoff’ for tomorrow at 2 PM with attendees Megan and John.” These prompts will drive the tools exposed by the MCP server to perform the requested actions.

Available tools

find-person

Find a person's email address by their name. Input: name (string). Returns: List of matching people with names and email addresses.

create-event

Create a calendar event using Microsoft Graph API. Inputs: subject, body, start, end, timeZone. Returns: Event details including URL and ID.

create-event-with-attendees

Create a calendar event with attendees. Inputs: subject, body, start, end, timeZone, location, attendees. Returns: Event details including URL, ID, and attendees.

get-event

Get details of a calendar event by its ID. Input: eventId. Returns: Detailed event information.

list-events

List calendar events with optional filtering. Inputs: subject, startDate, endDate, maxResults. Returns: List of events with IDs.

delete-event

Delete a calendar event. Input: eventId. Returns: Confirmation of deletion.

update-event

Update an existing calendar event. Inputs: eventId, plus optional fields to update. Returns: Updated event details.

update-event-attendees

Add or remove attendees from an event. Inputs: eventId, addAttendees, removeAttendees. Returns: Updated attendee information.