Uses environment variables for configuration management including Microsoft Graph credentials, timezone settings, and server configuration
Built as a Node.js application requiring Node.js 20+ runtime environment
Uses npm for package management and dependency installation
Implemented in TypeScript with build tooling for type-safe development
Uses Zod schemas for input validation and type definitions across the MCP server tools
MCP Outlook Scheduler
An MCP (Model Context Protocol) server that connects to Microsoft Outlook via Microsoft Graph to schedule meetings among multiple participants by checking their calendars and proposing or booking the earliest viable time slots.
Features
Smart Meeting Scheduling: Uses Microsoft Graph's
findMeetingTimes
API when available, with fallback to local intersection logicMulti-Participant Support: Check availability across N participants and find common free time slots
Flexible Constraints: Support for working hours, buffer times, minimum attendance requirements, and timezone handling
Automatic Booking: Create Outlook calendar events with Teams integration
MCP Integration: Exposes tools for AI assistants to schedule meetings programmatically
Prerequisites
Node.js 20+
Microsoft 365 account with Exchange Online
Azure AD application registration (for authentication)
Setup
1. Azure Application Registration
Go to Azure Portal → Azure Active Directory → App registrations
Click "New registration"
Enter a name (e.g., "MCP Outlook Scheduler")
Select "Accounts in this organizational directory only" for single tenant, or "Accounts in any organizational directory" for multi-tenant
Click "Register"
2. Configure API Permissions
In your app registration, go to "API permissions"
Click "Add a permission" → "Microsoft Graph"
Add these Application permissions (for app-only auth):
Calendars.Read
- Read calendar availabilityCalendars.ReadWrite
- Create and manage calendar eventsUser.Read
- Read user informationOnlineMeetings.ReadWrite
- Create Teams meetings (optional)
Click "Grant admin consent" (requires admin privileges)
3. Get Application Credentials
Go to "Certificates & secrets" → "Client secrets"
Create a new client secret and copy the value
Copy the Application (client) ID from the Overview page
Copy the Directory (tenant) ID from the Overview page
4. Environment Configuration
Copy
env.example
to.env
Fill in your Azure application details:
5. Install Dependencies
6. Build and Run
MCP Tools
The server exposes the following tools:
1. health_check
Check server health and authentication status.
Input: None
Output:
2. get_availability
Get free/busy availability for multiple participants.
Input:
Output:
3. propose_meeting_times
Find available meeting time slots for participants.
Input:
Output:
4. book_meeting
Create a calendar event and invite attendees.
Input:
Output:
5. cancel_meeting
Cancel an existing meeting.
Input:
Output:
Scheduling Logic
Primary Method: Microsoft Graph findMeetingTimes
The server first attempts to use Microsoft Graph's findMeetingTimes
API, which provides intelligent meeting scheduling with:
Conflict detection
Working hours consideration
Attendee preferences
Travel time calculation (when available)
Fallback Method: Local Intersection
When findMeetingTimes
is unavailable (due to tenant policies, insufficient permissions, or API limitations), the server falls back to local intersection logic:
Fetch free/busy data for each participant
Apply buffer times and working hour constraints
Compute intersecting free time slots
Rank candidates by:
Earliest start time
Least fragmented calendars
Maximum attendee availability
Configuration Options
Authentication Modes
Application: Service principal authentication (recommended for production use)
Application: Service principal authentication (recommended for production/automation)
Timezone Handling
All internal calculations use UTC
Input/output times include timezone offsets (ISO 8601 format)
Working hours are interpreted in the specified timezone
Working Hours
Default: Monday-Friday, 9:00 AM - 5:00 PM
Can be overridden per user via mailbox settings
Configurable via
workHoursOnly
parameter
Error Handling
The server provides consistent error responses:
Common error codes:
INVALID_INPUT
: Input validation failedAUTHENTICATION_FAILED
: Microsoft Graph authentication errorINSUFFICIENT_PERMISSIONS
: Missing required API permissionsSCHEDULING_CONFLICT
: No common free time slots foundBOOKING_FAILED
: Failed to create calendar event
Development
Running Tests
Code Quality
Building
Architecture
Troubleshooting
Authentication Issues
Invalid client secret: Regenerate the client secret in Azure
Insufficient permissions: Ensure admin consent is granted for all required permissions
Tenant restrictions: Check if your tenant allows the required Graph API calls
Scheduling Issues
No meeting times found:
Verify participants have accessible calendars
Check if working hours are too restrictive
Ensure the time window is reasonable
Graph API fallback:
The server automatically falls back to local intersection when
findMeetingTimes
failsCheck logs for fallback reasons
Performance Issues
Slow availability checks:
Reduce the number of participants
Use smaller time windows
Consider caching availability data
Contributing
Fork the repository
Create a feature branch
Make your changes
Add tests for new functionality
Ensure all tests pass
Submit a pull request
License
MIT License - see LICENSE file for details.
Support
For issues and questions:
Check the troubleshooting section
Review Microsoft Graph API documentation
Open an issue on GitHub
Changelog
v1.0.0
Initial release
MCP server with 5 core tools
Microsoft Graph integration
Local intersection fallback
Comprehensive test coverage
This server cannot be installed
remote-capable server
The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.
Enables AI assistants to intelligently schedule meetings by checking Microsoft Outlook calendars, finding available time slots across multiple participants, and automatically booking meetings with Teams integration. Uses Microsoft Graph API with smart fallback logic for optimal scheduling.
Related MCP Servers
- AsecurityAlicenseAqualityAllows scheduling meetings in Microsoft Outlook using Microsoft Graph API, with features for creating calendar events and adding attendees by finding their email addresses.Last updated -81312ISC License
- -securityFlicense-qualityAn AI-powered meeting assistant that combines FastAPI backend with React frontend to generate high-quality meeting summaries and provide Q&A functionality using OpenAI and Selenium.Last updated -
- -securityAlicense-qualityA Model Context Protocol server that enables AI assistants to interact with Microsoft Outlook for calendar management, email operations, and search functionality.Last updated -7MIT License
- AsecurityAlicenseAqualityEnables managing AI meeting bots that can join, record, transcribe meetings, speak, send messages, and display media across platforms like Zoom, Google Meet, and Microsoft Teams.Last updated -12MIT License