Skip to main content
Glama
README.md

# Calendar MCP Server - by Rezel, for Rezel

A Model Context Protocol (MCP) server that provides access to Google Calendar events via a public ICS feed.

## Features

- **List Events**: Fetch events within a specific date range, handling recurring events automatically.
- **Search Events**: Search for events by text (summary or description) within a 6-month window.
- **Caching**: Implements a 5-minute memory cache to respect rate limits.

## Setup

### 1. Prerequisites
- Python 3.11+
- `uv` package manager (recommended)

### 2. Installation
Install dependencies using `uv`:
```bash
uv sync
```

### 3. Configuration
Open `main.py` and set the `ICS_URL` constant to your public Google Calendar ICS URL:
```python
ICS_URL = "https://calendar.google.com/calendar/ical/YOUR_CALENDAR_ID/public/basic.ics"
```

## Usage

Run the server using `uv`:

```bash
uv run main.py
```

## Tools

### `list_events`
Lists events between two dates.
- **Arguments**:
  - `start_date` (string, ISO 8601, e.g., "2023-01-01")
  - `end_date` (string, ISO 8601, e.g., "2023-01-31")
- **Returns**: A list of event objects with `summary`, `start`, `end`, `description`, and `location`.

### `search_events`
Searches for events matching a text query.
- **Arguments**:
  - `query` (string)
- **Returns**: A list of matching event objects found in the range of [30 days ago, 180 days future].

TDQS

A4/5.0

Scored across 2 tools

Disambiguation5/5

The two tools have clearly distinct purposes: list_events retrieves events within a specific date range, while search_events finds events matching a text query across a broader timeframe. There is no overlap in functionality, and the descriptions make the distinction unambiguous.

Naming Consistency5/5

Both tools follow a consistent verb_noun pattern (list_events and search_events), using snake_case and clear, descriptive verbs. The naming is predictable and aligned with common conventions for such operations.

Tool Count2/5

With only two tools, this server feels severely under-scoped for a calendar domain. Essential operations like creating, updating, or deleting events are missing, making it incomplete for typical calendar management tasks. A calendar server should have at least basic CRUD operations to be functional.

Completeness2/5

The tool surface is significantly incomplete for a calendar server. While list_events and search_events provide read/search capabilities, there are no tools for creating, updating, or deleting events, which are core to calendar management. This leaves major gaps that will hinder agent workflows.

Maintenance

ActivityInactive
ResponsivenessNo issues