Skip to main content

Lightweight MCP server for ICS calendar feeds with recurring event expansion

Project description

ICS Calendar MCP Server

A lightweight MCP (Model Context Protocol) server for reading ICS calendar feeds with proper recurring event expansion.

Features

  • Fetch and parse ICS calendar feeds (Outlook, Google Calendar, etc.)
  • Properly expands recurring events using recurring-ical-events
  • Caches calendar data to reduce API calls
  • Timezone-aware event handling
  • Simple configuration via environment variables

Installation

Using uvx (recommended)

uvx --from git+https://github.com/adamchrabaszcz/ics-calendar-mcp ics-calendar-mcp

Using pip

pip install git+https://github.com/adamchrabaszcz/ics-calendar-mcp

From source

git clone https://github.com/adamchrabaszcz/ics-calendar-mcp
cd ics-calendar-mcp
pip install -e .

Configuration

Set the following environment variables:

Variable Required Default Description
ICS_CALENDAR_URL Yes - URL to the ICS calendar feed
ICS_CACHE_TTL No 300 Cache duration in seconds
ICS_TIMEZONE No Europe/Warsaw Default timezone for events

Example: Outlook Calendar

export ICS_CALENDAR_URL="https://outlook.office365.com/owa/calendar/xxx@domain.com/yyy/calendar.ics"

MCP Tools

get_events_today

Get all calendar events for today.

{
  "date": "2024-03-10",
  "events": [...],
  "count": 3
}

get_events_range

Get events within a date range.

Parameters:

  • start_date (string): Start date in ISO format (YYYY-MM-DD)
  • end_date (string): End date in ISO format (YYYY-MM-DD)
{
  "start_date": "2024-03-01",
  "end_date": "2024-03-31",
  "events": [...],
  "count": 15
}

get_event_details

Get detailed information about a specific event.

Parameters:

  • event_uid (string): The unique identifier of the event

list_recurring_events

List all recurring events with their recurrence rules.

{
  "events": [
    {
      "uid": "event-123",
      "summary": "Weekly Standup",
      "recurrence": {
        "frequency": "WEEKLY",
        "days": ["MO", "TU", "WE", "TH", "FR"],
        "description": "weekly on Monday, Tuesday, Wednesday, Thursday, Friday"
      }
    }
  ],
  "count": 5
}

search_events

Search for events matching a query.

Parameters:

  • query (string): Search term
  • start_date (string, optional): Start date for search range
  • end_date (string, optional): End date for search range

Claude Code Configuration

Add to your ~/.claude/mcp.json:

{
  "mcpServers": {
    "ics-calendar": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/adamchrabaszcz/ics-calendar-mcp", "ics-calendar-mcp"],
      "env": {
        "ICS_CALENDAR_URL": "https://your-calendar-url.ics"
      }
    }
  }
}

Development

Setup

git clone https://github.com/adamchrabaszcz/ics-calendar-mcp
cd ics-calendar-mcp
pip install -e ".[dev]"

Run tests

pytest tests/

Run locally

ICS_CALENDAR_URL="https://your-calendar.ics" python -m ics_calendar_mcp

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ics_calendar_mcp-0.1.0.tar.gz (8.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ics_calendar_mcp-0.1.0-py3-none-any.whl (7.5 kB view details)

Uploaded Python 3

File details

Details for the file ics_calendar_mcp-0.1.0.tar.gz.

File metadata

  • Download URL: ics_calendar_mcp-0.1.0.tar.gz
  • Upload date:
  • Size: 8.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.27 {"installer":{"name":"uv","version":"0.9.27","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for ics_calendar_mcp-0.1.0.tar.gz
Algorithm Hash digest
SHA256 83daf18ac1fc6f1cd2e8d4ca22430bc12eaeb6d9457ede418049f530bace4281
MD5 0a85f371eb2c655a2bfdb4b8abf4d063
BLAKE2b-256 244a02d0b1e0e3e8de45ac7cd94ea9aa876c87d34db3d98b6926b9cd35e6cc45

See more details on using hashes here.

File details

Details for the file ics_calendar_mcp-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: ics_calendar_mcp-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 7.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.27 {"installer":{"name":"uv","version":"0.9.27","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for ics_calendar_mcp-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1d772a788bae663f83317b9da6bd2dfffc520793201f73b1f97aad38946ed125
MD5 ee8322d9c98a2b0183a85b8901ce6d7f
BLAKE2b-256 708250270b267e4207fd6953baa0a19df8fd385198466e1ad96890fd8a8e3882

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page