Skip to content

Ics Filter MCP tool

MCP findutils:ics_filter

Filter an iCalendar (.ics) file down to the entries you want and get a smaller calendar to import, plus the removed entries as their own calendar. Filters, all optional and combined with AND: a date range (from and to, YYYY-MM-DD, inclusive, compared with each entry's own wall-clock time), a keyword (case-insensitive, in SUMMARY, DESCRIPTION or LOCATION), a category (one of a comma-separated list, matched against CATEGORIES), a STATUS, and drop_cancelled (default true). A recurring series is kept or removed whole, judged by its main event: the date range keeps it when at least one occurrence (RRULE, RDATE, less EXDATE) or one modified occurrence falls in the range. The rule is not expanded in the output, and a modified or cancelled occurrence stays with its series. VTIMEZONE blocks are kept for the entries that use them. Every property is copied as read.

Needs an API key. Running a tool needs an API key. Keys are not for sale yet: ask for early access. About API keys

Arguments

application/json
  • input

    string required

    The .ics file contents.

  • from

    string optional

    Keep entries that end on or after this day, YYYY-MM-DD. Optional.

  • to

    string optional

    Keep entries that start on or before this day, YYYY-MM-DD. Optional.

  • keyword

    string optional

    Keep entries whose SUMMARY, DESCRIPTION or LOCATION contains this text, ignoring case. Optional.

  • category

    string optional

    Keep entries with one of these CATEGORIES (comma-separated, ignoring case). Optional.

  • status

    string optional

    Keep entries with this STATUS only; an entry without a STATUS line matches only "any". Default any. One of any · confirmed · tentative · cancelled. Default "any".

  • drop_cancelled

    boolean optional

    Remove entries with STATUS:CANCELLED. Default true. Ignored when status is "cancelled". Default true.

Example arguments

Verified
{
  "input": "BEGIN:VCALENDAR\nVERSION:2.0\nBEGIN:VEVENT\nUID:[email protected]\nDTSTART:20261005T063000Z\nRRULE:FREQ=WEEKLY;BYDAY=MO\nSUMMARY:Standup\nEND:VEVENT\nBEGIN:VEVENT\nUID:[email protected]\nDTSTART:20261007T100000Z\nSUMMARY:Team lunch\nSTATUS:CANCELLED\nEND:VEVENT\nBEGIN:VEVENT\nUID:[email protected]\nDTSTART;VALUE=DATE:20260905\nSUMMARY:Dentist\nEND:VEVENT\nEND:VCALENDAR\n",
  "from": "2026-10-01",
  "to": "2026-12-31",
  "keyword": "standup"
}