Skip to main content

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

Metadata

Release files for ics-calendar-mcp 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ics-calendar-mcp 0.1.0
File Size Uploaded Provenance
ics_calendar_mcp-0.1.0.tar.gz 8.3 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for ics-calendar-mcp 0.1.0
File Interpreter ABI Platform
ics_calendar_mcp-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 15.9 kB

Release files / ics_calendar_mcp-0.1.0.tar.gz

Download URL ics_calendar_mcp-0.1.0.tar.gz
Size 8.3 kB
Tags Source
SHA-256 checksum
How to use checksums
83daf18ac1fc6f1cd2e8d4ca22430bc12eaeb6d9457ede418049f530bace4281
BLAKE2b-256 checksum
How to use checksums
244a02d0b1e0e3e8de45ac7cd94ea9aa876c87d34db3d98b6926b9cd35e6cc45
Upload date
Uploaded using Trusted Publishing?
What is 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}

Release files / ics_calendar_mcp-0.1.0-py3-none-any.whl

Download URL ics_calendar_mcp-0.1.0-py3-none-any.whl
Size 7.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1d772a788bae663f83317b9da6bd2dfffc520793201f73b1f97aad38946ed125
BLAKE2b-256 checksum
How to use checksums
708250270b267e4207fd6953baa0a19df8fd385198466e1ad96890fd8a8e3882
Upload date
Uploaded using Trusted Publishing?
What is 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}

Security for ics-calendar-mcp 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page