MCP Hub
Back to servers

Google Calendar MCP Server

A Google Calendar MCP server that allows for managing events, searching agendas, and checking availability while offering specialized integration for Home Assistant and SSE support.

Tools
11
Updated
Dec 27, 2025

Google Calendar MCP Server

A Model Context Protocol (MCP) server for Google Calendar integration, designed for personal calendar management with Home Assistant support.

Features

  • MCP Tools: Search events, list upcoming events, create/update/delete events
  • Daily Agenda: Get formatted daily agenda summaries
  • Calendar Categories: Organize calendars by type (work, personal, family, etc.)
  • REST API: Endpoints for Home Assistant integration
  • SSE Transport: Connect from Claude Desktop via mcp-remote
  • Docker Support: Easy deployment with Docker Compose

Quick Start

1. Google Cloud Setup

  1. Go to Google Cloud Console
  2. Create a new project or select existing
  3. Enable the Google Calendar API
  4. Create OAuth 2.0 credentials (Desktop App type)
  5. Download the credentials

2. Configuration

# Copy example environment file
cp .env.example .env

# Edit with your credentials
# GOOGLE_CLIENT_ID=your-client-id
# GOOGLE_CLIENT_SECRET=your-client-secret

3. Initial OAuth Setup

# Run OAuth setup (opens browser for consent)
docker compose --profile setup run --rm calendar-auth

4. Start the Server

docker compose up -d

5. Claude Desktop Configuration

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "calendar": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "http://YOUR_SERVER_IP:8002/mcp/sse", "--allow-http"]
    }
  }
}

Home Assistant MCP Integration

The server exposes SSE endpoints for MCP connections:

  • /mcp/sse - Primary MCP SSE endpoint
  • /sse - Alias endpoint for Home Assistant compatibility

Each connection gets a fresh server instance for proper session isolation.

MCP Tools

ToolDescription
calendar_get_current_timeGet current date/time with reference dates for queries
calendar_list_eventsList upcoming events with optional filters
calendar_searchSearch events by text query
calendar_get_eventGet details of a specific event
calendar_create_eventCreate a new calendar event
calendar_update_eventUpdate an existing event
calendar_delete_eventDelete an event
calendar_daily_agendaGet agenda for a specific day
calendar_weekly_summaryGet 7-day overview
calendar_list_calendarsList all available calendars
calendar_free_busyCheck availability for a time range

Tool Schema Notes

All tools use Gemini-compatible schemas with explicit types:

  • Array parameters use comma-separated strings (e.g., attendees: "user1@example.com,user2@example.com")
  • Calendar IDs use comma-separated strings (e.g., calendar_ids: "primary,work@group.calendar.google.com")
  • Dates use ISO 8601 format (YYYY-MM-DD or YYYY-MM-DDTHH:MM:SS)

REST API Endpoints

EndpointDescription
GET /healthHealth check with auth status
GET /calendarsList all calendars
GET /events/todayToday's events
GET /events/upcomingUpcoming events
GET /events/search?q=querySearch events
GET /summary/dailyDaily summary
GET /summary/weeklyWeekly summary
GET /free-timeFind free time slots

Home Assistant Integration

REST Sensor Example

sensor:
  - platform: rest
    name: "Next Calendar Event"
    resource: http://YOUR_SERVER_IP:8002/events/upcoming?days=1
    value_template: "{{ value_json[0].summary if value_json else 'No events' }}"
    scan_interval: 300

  - platform: rest
    name: "Today's Events Count"
    resource: http://YOUR_SERVER_IP:8002/events/today
    value_template: "{{ value_json | length }}"
    scan_interval: 300

MCP Integration

Home Assistant can connect via the MCP SSE endpoints:

  • http://YOUR_SERVER_IP:8002/mcp/sse
  • http://YOUR_SERVER_IP:8002/sse (alias)

Project Structure

mcp_google_calendar/
├── src/mcp_google_calendar/
│   ├── __init__.py
│   ├── auth.py              # OAuth2 authentication
│   ├── calendar_client.py   # Google Calendar API wrapper
│   ├── config.py            # Settings and configuration
│   ├── models.py            # Pydantic models
│   ├── server.py            # MCP stdio server
│   ├── sse_server.py        # MCP SSE server
│   ├── combined_server.py   # REST + SSE combined server
│   └── api.py               # REST API for Home Assistant
├── config/
│   └── calendars.yaml       # Calendar categorization
├── credentials/
│   ├── client_secrets.json  # OAuth credentials
│   └── token.json           # Stored tokens
├── docker-compose.yml
├── Dockerfile
└── README.md

License

MIT

Reviews

No reviews yet

Sign in to write a review