Skip to main content
Glama
adamchrabaszcz

ICS Calendar MCP Server

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

Related MCP server: webcal-mcp

Installation

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

A
license - permissive license
-
quality - not tested
D
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/adamchrabaszcz/ics-calendar-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server