InviteKit Calendar Files
.ics files & calendar links
我该使用它吗
质量与安全性
基于对工具定义和协议合规性的自动分析。
上下文开销
这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。
安装
一键安装
将以下内容添加到你的 `claude_desktop_config.json` 文件中:
{
"mcpServers": {
"calendar-invite": {
"url": "https://calendar-invite.zovo.one/mcp"
}
}
}远程端点
https://calendar-invite.zovo.one/mcpstreamable-http它能做什么
工具清单
工具(2)
🟢generate_calendar_event(title, start, end, duration_minutes, all_day, ...)
Use this when the user wants a calendar invite, an .ics file, or an add-to-calendar link (Google Calendar, Outlook, Office 365, Yahoo) for one event or one repeating event: a webinar, class, meeting, party, deadline, or launch. Takes the title, local start/end and the event's time zone (city or IANA zone), or dates only for all-day events, plus optional location, description, link, organizer name, reminders, and a repeat rule (daily, weekly on chosen weekdays, monthly by date, nth weekday such as the last Friday, or the first/last weekday of the month, yearly; with count, until date, and skipped dates). Returns a downloadable RFC 5545 .ics file with time zone data, four add-to-calendar links, and the first 5 dates in the event's zone and optional attendee zones, with daylight saving changes flagged. Does not send invitations, read or change anyone's calendar, or track RSVPs. Do not use for a list of different sessions (use generate_event_series) or for finding a meeting time across zones.
输入模式
{
"type": "object",
"properties": {
"title": {
"type": "string",
"maxLength": 200,
"description": "Event title, e.g. Product launch webinar."
},
"start": {
"type": "string",
"maxLength": 40,
"description": "Local start YYYY-MM-DDTHH:MM in the event's time zone, e.g. 2026-11-05T18:30, or a date YYYY-MM-DD for an all-day event. No UTC offset."
},
"end": {
"description": "Local end YYYY-MM-DDTHH:MM, or just a time HH:MM on the start day, e.g. 21:00. For all-day events, the last day YYYY-MM-DD (inclusive). Default: 1 hour, or 1 day for all-day.",
"type": "string",
"maxLength": 40
},
"duration_minutes": {
"description": "Length in minutes instead of end, e.g. 90.",
"type": "integer",
"minimum": 1,
"maximum": 20160
},
"all_day": {
"description": "true for an all-day event (dates only), e.g. a conference day or a deadline. Automatic when start has no time.",
"type": "boolean"
},
"location": {
"description": "Venue, address, or meeting room shown in the calendar, e.g. Pier 39, San Francisco.",
"type": "string",
"maxLength": 300
},
"description": {
"description": "Event details or agenda (plain text; line breaks allowed), e.g. Bring a laptop.",
"type": "string",
"maxLength": 1500
},
"url": {
"description": "Optional event page or video-call link, e.g. https://example.com/webinar.",
"type": "string",
"maxLength": 500
},
"organizer_name": {
"description": "Optional organizer name shown in the details, e.g. Acme Events. No email needed.",
"type": "string",
"maxLength": 100
},
"reminders_minutes_before": {
"description": "Up to 3 reminders in minutes before the start, e.g. [15, 1440] for 15 minutes and 1 day before.",
"maxItems": 3,
"type": "array",
"items": {
"type": "integer",
"minimum": 0,
"maximum": 40320
}
},
"time_zone": {
"description": "Time zone of the start/end: IANA zone (Europe/Warsaw), city (Chicago, Sydney), or UTC. Required for timed events; not used for all-day events.",
"type": "string",
"maxLength": 80
},
"recurrence": {
"description": "Optional repeat rule, e.g. {\"frequency\":\"weekly\",\"weekdays\":[\"TU\",\"TH\"],\"count\":10}.",
"type": "object",
"properties": {
"frequency": {
"type": "string",
"enum": [
"daily",
"weekly",
"monthly",
"yearly"
],
"description": "How often it repeats, e.g. weekly."
},
"interval": {
"description": "Repeat every N days/weeks/months/years, e.g. 2 for every other week. Default 1.",
"type": "integer",
"minimum": 1,
"maximum": 99
},
"weekdays": {
"description": "Weekly: the days it repeats on, e.g. [\"TU\",\"TH\"] (default: the start's weekday). Monthly/yearly with nth_weekday: one weekday, e.g. [\"TU\"], or several with nth to pick from the set, e.g. [\"MO\",\"TU\",\"WE\",\"TH\",\"FR\"] with nth -1 for the last weekday of the month.",
"maxItems": 7,
"type": "array",
"items": {
"type": "string",
"maxLength": 12
}
},
"monthly_on": {
"description": "Monthly/yearly: day_of_month (same date, e.g. the 15th; default) or nth_weekday (e.g. the second Tuesday or the last Friday).",
"type": "string",
"enum": [
"day_of_month",
"nth_weekday"
]
},
"nth": {
"description": "With nth_weekday: 1-5, or -1 for the last, e.g. 2 for the second Tuesday. Default: the start date's position in its month.",
"type": "integer",
"minimum": -1,
"maximum": 5
},
"count": {
"description": "Total number of dates in the pattern, e.g. 10. Do not combine with until.",
"type": "integer",
"minimum": 1,
"maximum": 1000
},
"until": {
"description": "Last possible date YYYY-MM-DD (inclusive), e.g. 2027-06-30. Leave out count and until for no end date.",
"type": "string",
"maxLength": 10
},
"exceptions": {
"description": "Dates YYYY-MM-DD to skip, e.g. [\"2026-12-24\"]. Each must be a date the pattern produces.",
"maxItems": 60,
"type": "array",
"items": {
"type": "string",
"maxLength": 10
}
}
},
"required": [
"frequency"
]
},
"viewer_time_zones": {
"description": "Optional places or zones of attendees to show local times for, e.g. [\"New York\", \"Tokyo\"].",
"maxItems": 4,
"type": "array",
"items": {
"type": "string",
"maxLength": 80
}
}
},
"required": [
"title",
"start"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}输出模式
{
"type": "object",
"properties": {
"title": {
"type": "string"
},
"all_day": {
"type": "boolean"
},
"when": {
"type": "string"
},
"time_zone": {
"type": [
"string",
"null"
]
},
"zone_label": {
"type": [
"string",
"null"
]
},
"start": {
"type": "object",
"properties": {
"date": {
"type": "string"
},
"time": {
"type": "string"
}
},
"required": [
"date"
],
"additionalProperties": false
},
"end": {
"type": "object",
"properties": {
"date": {
"type": "string"
},
"time": {
"type": "string"
}
},
"required": [
"date"
],
"additionalProperties": false
},
"duration": {
"type": "string"
},
"location": {
"type": [
"string",
"null"
]
},
"description": {
"type": [
"string",
"null"
]
},
"url": {
"type": [
"string",
"null"
]
},
"organizer": {
"type": [
"string",
"null"
]
},
"reminders": {
"type": "array",
"items": {
"type": "string"
}
},
"recurrence": {
"anyOf": [
{
"type": "object",
"properties": {
"rrule": {
"type": [
"string",
"null"
]
},
"text": {
"type": "string"
},
"total": {
"type": [
"number",
"null"
]
},
"count": {
"type": [
"number",
"null"
]
},
"until": {
"type": [
"string",
"null"
]
},
"last_date": {
"type": [
"string",
"null"
]
},
"exceptions": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"rrule",
"text",
"total",
"count",
"until",
"last_date",
"exceptions"
],
"additionalProperties": false
},
{
"type": "null"
}
]
},
"occurrences": {
"type": "array",
"items": {
"type": "object",
"properties": {},
"additionalProperties": {}
}
},
"viewer_zones": {
"type": "array",
"items": {
"type": "string"
}
},
"links": {
"type": "object",
"properties": {
"google": {
"type": "string"
},
"outlook": {
"type": "string"
},
"office365": {
"type": "string"
},
"yahoo": {
"type": "string"
}
},
"required": [
"google",
"outlook",
"office365",
"yahoo"
],
"additionalProperties": false
},
"downloads": {
"type": "object",
"properties": {
"ics": {
"type": "string"
}
},
"required": [
"ics"
],
"additionalProperties": false
},
"notes": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"title",
"all_day",
"when",
"time_zone",
"zone_label",
"start",
"end",
"duration",
"location",
"description",
"url",
"organizer",
"reminders",
"recurrence",
"occurrences",
"viewer_zones",
"links",
"downloads",
"notes"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟢generate_event_series(calendar_name, time_zone, events, location, description, ...)
Use this when the user wants one calendar file (.ics) that adds several different events at once: a course or class schedule, a training program, a conference agenda, match fixtures, or a list of webinars on irregular dates. Takes 1-40 sessions (each with its own start, end or duration, optional title, location and note) plus a shared time zone, location, details, link, organizer name and reminders. Returns one .ics file with one event per session and a dated list of the sessions. Does not make add-to-calendar web links per session, send invitations, or change anyone's calendar. Do not use for an event that repeats on a regular pattern (use generate_calendar_event with recurrence).
输入模式
{
"type": "object",
"properties": {
"calendar_name": {
"description": "Name for the schedule, e.g. Spanish A1 evening course. Shown as the calendar name and default title.",
"type": "string",
"maxLength": 100
},
"time_zone": {
"description": "Time zone for all sessions: IANA zone or city, e.g. America/Chicago. Required when sessions have times.",
"type": "string",
"maxLength": 80
},
"events": {
"minItems": 1,
"maxItems": 40,
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {
"description": "Session title, e.g. Week 1: Introduction. Default: calendar_name with the session number.",
"type": "string",
"maxLength": 200
},
"start": {
"type": "string",
"maxLength": 40,
"description": "Local start YYYY-MM-DDTHH:MM, e.g. 2027-01-12T18:00, or YYYY-MM-DD for all-day."
},
"end": {
"description": "Local end time HH:MM or YYYY-MM-DDTHH:MM, e.g. 19:30. All-day: last day YYYY-MM-DD.",
"type": "string",
"maxLength": 40
},
"duration_minutes": {
"description": "Length in minutes instead of end, e.g. 90.",
"type": "integer",
"minimum": 1,
"maximum": 20160
},
"all_day": {
"description": "true for a date-only event, e.g. an exam day.",
"type": "boolean"
},
"location": {
"description": "Location for this session if it differs, e.g. Room 204.",
"type": "string",
"maxLength": 300
},
"description": {
"description": "Short note for this session, e.g. Quiz on chapter 3.",
"type": "string",
"maxLength": 300
}
},
"required": [
"start"
]
},
"description": "1-40 distinct sessions with their own dates, e.g. [{\"title\":\"Week 1\",\"start\":\"2027-01-12T18:00\",\"end\":\"19:30\"}]."
},
"location": {
"description": "Default location for every session, e.g. Community Center, Room 2.",
"type": "string",
"maxLength": 300
},
"description": {
"description": "Shared details added to every session, e.g. Bring your workbook.",
"type": "string",
"maxLength": 600
},
"url": {
"description": "Optional shared link, e.g. a course page or video-call link: https://example.com/course.",
"type": "string",
"maxLength": 500
},
"organizer_name": {
"description": "Optional organizer or teacher name, e.g. Ms. Rivera.",
"type": "string",
"maxLength": 100
},
"reminders_minutes_before": {
"description": "Up to 3 reminders for every session, minutes before, e.g. [60].",
"maxItems": 3,
"type": "array",
"items": {
"type": "integer",
"minimum": 0,
"maximum": 40320
}
}
},
"required": [
"events"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}输出模式
{
"type": "object",
"properties": {
"calendar_name": {
"type": [
"string",
"null"
]
},
"time_zone": {
"type": [
"string",
"null"
]
},
"zone_label": {
"type": [
"string",
"null"
]
},
"event_count": {
"type": "number"
},
"first_date": {
"type": "string"
},
"last_date": {
"type": "string"
},
"location": {
"type": [
"string",
"null"
]
},
"reminders": {
"type": "array",
"items": {
"type": "string"
}
},
"events": {
"type": "array",
"items": {
"type": "object",
"properties": {},
"additionalProperties": {}
}
},
"downloads": {
"type": "object",
"properties": {
"ics": {
"type": "string"
}
},
"required": [
"ics"
],
"additionalProperties": false
},
"notes": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"calendar_name",
"time_zone",
"zone_label",
"event_count",
"first_date",
"last_date",
"location",
"reminders",
"events",
"downloads",
"notes"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}社区
证据