Calendar MCP Server

Local setup required. This server has to be cloned and prepared on your machine before you register it in Claude Code.
1

Set the server up locally

Run this once to clone and prepare the server before adding it to Claude Code.

Run in terminal
npm install
npm run build
2

Register it in Claude Code

After the local setup is done, run this command to point Claude Code at the built server.

Run in terminal
claude mcp add -e "GOOGLE_ENABLED=${GOOGLE_ENABLED}" -e "GOOGLE_PROVIDER_ID=${GOOGLE_PROVIDER_ID}" -e "GOOGLE_EMAIL=${GOOGLE_EMAIL}" -e "GOOGLE_CLIENT_ID=${GOOGLE_CLIENT_ID}" -e "GOOGLE_CLIENT_SECRET=${GOOGLE_CLIENT_SECRET}" calendar-mcp -- node "<FULL_PATH_TO_CALENDAR_MCP>/dist/index.js"

Replace <FULL_PATH_TO_CALENDAR_MCP>/dist/index.js with the actual folder you prepared in step 1.

Required:GOOGLE_ENABLEDGOOGLE_PROVIDER_IDGOOGLE_EMAILGOOGLE_CLIENT_IDGOOGLE_CLIENT_SECRET+ 1 optional
README.md

Unified calendar management across Google, Microsoft 365, and Exchange.

Calendar MCP Server

A Model Context Protocol (MCP) server providing unified calendar management across Google Calendar, Microsoft 365, and Exchange On-Premises.

Features

  • Multi-Provider Support: Connect to Google Calendar, Microsoft 365 (Graph API), and Exchange On-Premises (EWS)
  • Multiple Accounts: Support for multiple accounts per provider (e.g., 2+ Exchange accounts)
  • 12 MCP Tools: Comprehensive calendar operations including CRUD, free/busy, conflict detection, and sync helpers
  • 4 MCP Resources: Quick access to calendar summaries, today's events, weekly schedule, and upcoming events
  • 4 MCP Prompts: Pre-built templates for scheduling meetings and daily briefings
  • NTLM Authentication: Full support for Exchange NTLM authentication via @ewsjs/xhr
  • Unified Data Model: Consistent event format across all providers
  • Timezone Support: Configurable timezone for all operations

Quick Start

# 1. Clone/navigate to the project
cd calendar-mcp

# 2. Install dependencies
npm install

# 3. Build the project
npm run build

# 4. Configure environment variables (see Configuration section)
cp .env.example .env
# Edit .env with your credentials

# 5. Test the server
node dist/index.js

Installation

Prerequisites

  • Node.js 18+
  • npm or yarn
  • Access to at least one calendar provider (Google, Microsoft 365, or Exchange)

Install Dependencies

npm install

Build

npm run build

This compiles TypeScript to JavaScript in the dist/ directory.


Configuration

The server uses environment variables for configuration. Create a .env file in the project root or pass environment variables directly.

Environment Variables

Server Settings
Variable Description Default
MCP_SERVER_NAME Server name for identification calendar-mcp
MCP_SERVER_VERSION Server version 1.0.0
LOG_LEVEL Logging level: debug, info, warn, error info
DEFAULT_TIMEZONE IANA timezone for all operations UTC
DEFAULT_WORKING_HOURS_START Working hours start (HH:MM) 09:00
DEFAULT_WORKING_HOURS_END Working hours end (HH:MM) 18:00
DEFAULT_WORKING_DAYS Working days (comma-separated) monday,tuesday,wednesday,thursday,friday
Request Settings
Variable Description Default
REQUEST_TIMEOUT Request timeout in milliseconds 30000
MAX_RETRIES Maximum retry attempts 3
RETRY_DELAY_MS Delay between retries 1000
RATE_LIMIT_REQUESTS_PER_MINUTE Rate limiting 60

Google Calendar Setup

Variable Description Required
GOOGLE_ENABLED Enable Google Calendar Yes
GOOGLE_PROVIDER_ID Unique identifier for this account Yes
GOOGLE_PROVIDER_NAME Display name Yes
GOOGLE_EMAIL Google account email Yes
GOOGLE_CLIENT_ID OAuth client ID from Google Cloud Console Yes
GOOGLE_CLIENT_SECRET OAuth client secret Yes
GOOGLE_REDIRECT_URI OAuth redirect URI Yes
GOOGLE_ACCESS_TOKEN Pre-authorized access token Yes
GOOGLE_REFRESH_TOKEN Refresh token for token renewal Yes
GOOGLE_TOKEN_EXPIRY Token expiry (ISO 8601) No
Getting Google Credentials
  1. Go to Google Cloud Console
  2. Create a new project or select existing
  3. Enable the Google Calendar API
  4. Go to CredentialsCreate CredentialsOAuth client ID
  5. Configure consent screen if prompted
  6. Select Desktop app or Web application
  7. Copy Client ID and Client Secret
  8. Use OAuth Playground to get tokens:
    • Select https://www.googleapis.com/auth/calendar
    • Authorize and get access/refresh tokens
Example Google Configuration
GOOGLE_ENABLED=true
GOOGLE_PROVIDER_ID=google-personal
GOOGLE_PROVIDER_NAME=Personal Google Calendar
GOOGLE_EMAIL=yourname@gmail.com
GOOGLE_CLIENT_ID=123456789.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=GOCSPX-xxxxxxxxxxxx
GOOGLE_REDIRECT_URI=http://localhost:3000/oauth/google/callback
GOOGLE

Tools (3)

calendar_list_eventsList events from a specific calendar within a time range.
calendar_create_eventCreate a new event in a specified calendar.
calendar_get_free_busyCheck availability for a user or resource.

Environment Variables

GOOGLE_ENABLEDrequiredEnable Google Calendar
GOOGLE_PROVIDER_IDrequiredUnique identifier for this account
GOOGLE_EMAILrequiredGoogle account email
GOOGLE_CLIENT_IDrequiredOAuth client ID from Google Cloud Console
GOOGLE_CLIENT_SECRETrequiredOAuth client secret
DEFAULT_TIMEZONEIANA timezone for all operations

Configuration

claude_desktop_config.json
{"mcpServers": {"calendar": {"command": "node", "args": ["/path/to/calendar-mcp/dist/index.js"], "env": {"GOOGLE_ENABLED": "true", "GOOGLE_PROVIDER_ID": "google-personal", "GOOGLE_EMAIL": "yourname@gmail.com"}}}}

Try it

List all my events for today from my personal Google Calendar.
Check my availability for a meeting next Tuesday between 9 AM and 5 PM.
Schedule a team sync meeting for tomorrow at 2 PM in my work calendar.
Find any scheduling conflicts in my calendar for the upcoming week.

Frequently Asked Questions

What are the key features of Calendar MCP Server?

Multi-provider support for Google Calendar, Microsoft 365, and Exchange. Support for multiple accounts per provider. Comprehensive CRUD operations for calendar events. Built-in conflict detection and free/busy status checking. Unified data model for consistent event formatting.

What can I use Calendar MCP Server for?

Managing personal and work calendars in a single interface. Automating meeting scheduling based on availability across multiple accounts. Quickly checking daily briefings and upcoming event summaries. Syncing events between different calendar providers.

How do I install Calendar MCP Server?

Install Calendar MCP Server by running: npm install && npm run build

What MCP clients work with Calendar MCP Server?

Calendar MCP Server works with any MCP-compatible client including Claude Desktop, Claude Code, Cursor, and other editors with MCP support.

Turn this server into reusable context

Keep Calendar MCP Server docs, env vars, and workflow notes in Conare so your agent carries them across sessions.

Need the old visual installer? Open Conare IDE.
Open Conare