Intelligent calendar and task management through natural language
MCP Calendar Assistant
A powerful Model Context Protocol (MCP) server that provides intelligent calendar and task management capabilities. This server allows AI assistants to interact with your calendar through natural language, handling everything from simple event creation to complex scheduling analysis.
š Features
Core Calendar Operations
- Multi-Calendar Support: Google Calendar (with Outlook/Apple Calendar planned)
- Event Management: Create, read, update, delete calendar events
- Smart Scheduling: Find free time slots across multiple calendars
- Availability Checking: Check if people are available for meetings
- Meeting Suggestions: AI-powered optimal meeting time recommendations
Task & Reminder Management
- Smart Reminders: Create and manage tasks with priorities and due dates
- Natural Language: Process tasks from unstructured text input
- Analytics: Track completion rates and productivity patterns
Intelligence Features
- Schedule Analysis: Understand your scheduling patterns and habits
- Contact Suggestions: Auto-suggest frequent collaborators
- Similar Events: Find related events for context
- Working Hours: Respect user preferences and constraints
Performance & Reliability
- Intelligent Caching: Redis-powered caching with configurable TTLs
- Batch Operations: Efficient bulk calendar operations
- Error Handling: Robust error recovery and retry mechanisms
- Rate Limiting: Built-in protection against API abuse
šļø Architecture
āāāāāāāāāāāāāāāāāāā āāāāāāāāāāāāāāāāāāāā āāāāāāāāāāāāāāāāāāā
ā AI Assistant āāāāāā MCP Calendar āāāāāā Calendar APIs ā
ā (Claude, etc) ā ā Server ā ā (Google, etc) ā
āāāāāāāāāāāāāāāāāāā āāāāāāāāāāāāāāāāāāāā āāāāāāāāāāāāāāāāāāā
ā
āāāāāāāāāāāāāāāāāāāā
ā PostgreSQL + ā
ā Redis ā
āāāāāāāāāāāāāāāāāāāā
š Quick Start
Prerequisites
- Node.js 18+
- PostgreSQL 12+
- Redis 6+ (optional but recommended)
- Google Cloud Project with Calendar API enabled
1. Clone and Install
git clone <repository-url>
cd mcp-calendar-server
npm install
2. Environment Setup
cp .env.example .env
# Edit .env with your configuration
3. Google Calendar Setup
- Go to Google Cloud Console
- Create a new project or select existing
- Enable the Google Calendar API
- Create OAuth 2.0 credentials
- Add your credentials to
.env
4. Database Setup
# Start PostgreSQL and Redis (using Docker)
docker-compose up -d postgres redis
# Or install locally and create database
createdb calendar_assistant
5. Build and Start
npm run build
npm start
# Or for development
npm run dev
š§ Configuration
Environment Variables
| Variable | Description | Default |
|---|---|---|
DATABASE_URL |
PostgreSQL connection string | postgresql://localhost:5432/calendar_assistant |
REDIS_URL |
Redis connection string | redis://localhost:6379 |
GOOGLE_CLIENT_ID |
Google OAuth client ID | Required |
GOOGLE_CLIENT_SECRET |
Google OAuth client secret | Required |
JWT_SECRET |
Secret for JWT tokens | Required |
Feature Flags
FEATURE_CACHING=true # Enable Redis caching
FEATURE_BATCHING=true # Enable batch operations
FEATURE_PREFETCHING=true # Enable predictive data loading
FEATURE_ANALYTICS=false # Enable usage analytics
FEATURE_MULTI_PROVIDER=false # Enable multiple calendar providers
š Available Tools
Calendar Operations
get_calendars- List available calendarsget_calendar_events- Retrieve events from a calendarcreate_calendar_event- Create new eventsupdate_calendar_event- Modify existing eventsdelete_calendar_event- Remove eventsfind_free_time- Find available time slotscheck_availability- Check if people are freesuggest_meeting_times- AI-powered meeting suggestions
Task Management
create_reminder- Create tasks and remindersget_reminders- Retrieve tasks with filteringupdate_reminder- Modify existing taskscomplete_reminder- Mark tasks as completed
Analytics & Insights
analyze_schedule_patterns- Understand scheduling habitsget_working_hours- Retrieve work schedule preferencesget_recent_similar_events- Find related eventsget_contact_suggestions- Auto-suggest contacts
š¬ Usage Examples
Creating Events
// AI Assistant can process:
"Schedule a dentist appointment next Tuesday at 2pm"
"Book a team meeting with John and Sarah for next week, 1 hour duration"
"Create a recurring weekly standup every Monday at 9am"
Finding Free Time
// AI Assistant can process:
"When are we all free next week for a 2-hour wo
Tools (11)
get_calendarsList available calendarsget_calendar_eventsRetrieve events from a calendarcreate_calendar_eventCreate new eventsupdate_calendar_eventModify existing eventsdelete_calendar_eventRemove eventsfind_free_timeFind available time slotscheck_availabilityCheck if people are freesuggest_meeting_timesAI-powered meeting suggestionscreate_reminderCreate tasks and remindersget_remindersRetrieve tasks with filteringanalyze_schedule_patternsUnderstand scheduling habitsEnvironment Variables
DATABASE_URLrequiredPostgreSQL connection stringGOOGLE_CLIENT_IDrequiredGoogle OAuth client IDGOOGLE_CLIENT_SECRETrequiredGoogle OAuth client secretJWT_SECRETrequiredSecret for JWT tokensREDIS_URLRedis connection stringConfiguration
{"mcpServers":{"calendar-assistant":{"command":"node","args":["/path/to/mcp-calendar-server/dist/index.js"],"env":{"DATABASE_URL":"postgresql://localhost:5432/calendar_assistant","GOOGLE_CLIENT_ID":"your_id","GOOGLE_CLIENT_SECRET":"your_secret","JWT_SECRET":"your_jwt_secret"}}}}