Skip to content

Merge Ics MCP tool

MCP findutils:merge_ics

Merge several iCalendar (.ics) exports into one calendar file for a single import or archive. Every event, to-do and journal entry is carried in file order under one VCALENDAR; VTIMEZONE blocks are kept once per TZID; RRULE, EXDATE, VALARM, ATTENDEE and every other property are written exactly as read. By default nothing is removed. dedupe_uid keeps one copy per UID (plus RECURRENCE-ID, so a modified occurrence never loses its series), preferring the newest LAST-MODIFIED, then DTSTAMP, then SEQUENCE. regenerate_uids rewrites every UID so a calendar app treats the events as new. An input that is not a calendar is reported and the rest still merge. Recurrence rules are never expanded and no calendar URL is fetched.

Arguments

application/json
  • inputs

    array required

    The .ics file contents, one string per file, in the order they should appear. At most 20.

  • dedupe_uid

    boolean optional

    Keep one copy per UID and RECURRENCE-ID, the newest by LAST-MODIFIED, then DTSTAMP, then SEQUENCE. Default false: every copy stays. Default false.

  • regenerate_uids

    boolean optional

    Replace every UID with a new deterministic one. Calendar apps then import the events as new instead of updating existing ones. A recurrence master and its exceptions keep sharing one UID. Default false. Default false.

  • calendar_name

    string optional

    Written as X-WR-CALNAME. Default: the name every input agrees on, else none.

Example arguments

Verified
{
  "inputs": [
    "BEGIN:VCALENDAR\nVERSION:2.0\nBEGIN:VEVENT\nUID:[email protected]\nDTSTART:20260903T093000Z\nDTEND:20260903T101500Z\nSUMMARY:Standup\nEND:VEVENT\nEND:VCALENDAR\n",
    "BEGIN:VCALENDAR\nVERSION:2.0\nBEGIN:VEVENT\nUID:[email protected]\nDTSTART;VALUE=DATE:20260905\nDTEND;VALUE=DATE:20260906\nSUMMARY:Offsite\nEND:VEVENT\nEND:VCALENDAR\n"
  ]
}