{"name":"io.github.lukegskw/caldav-mcp","slug":"lukegskw-caldav-mcp","title":"CalDAV MCP Server","description":"A TypeScript MCP server for iCloud Calendar with native multi-VALARM support.","url":"https://mcp.market/server/lukegskw-caldav-mcp","rating":null,"grade":"B","score":83,"certified":false,"status":"active","category":"productivity","tags":["productivity"],"presence":{"score":33,"stars":3,"forks":1,"downloads_week":271,"last_push_at":"2026-09-19T14:36:56.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"mixed","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/lukegskw/caldav-mcp","website":null,"version":"0.1.8","remotes":[],"packages":[{"registryType":"oci","identifier":"ghcr.io/lukegskw/caldav-mcp:0.1.8","transport":{"type":"stdio"},"environmentVariables":[{"description":"Your CalDAV username","isRequired":true,"format":"string","name":"CALDAV_USERNAME"},{"description":"Your CalDAV password or app-specific password","isRequired":true,"format":"string","isSecret":true,"name":"CALDAV_PASSWORD"}]},{"registryType":"npm","identifier":"@lukegskw/caldav-mcp","version":"0.1.8","transport":{"type":"stdio"},"environmentVariables":[{"description":"Your CalDAV username","isRequired":true,"format":"string","name":"CALDAV_USERNAME"},{"description":"Your CalDAV password or app-specific password","isRequired":true,"format":"string","isSecret":true,"name":"CALDAV_PASSWORD"}]}],"tools":[{"name":"create_event","description":"Create a new event in a writable iCloud calendar and return the stored representation; existing events are not changed. Use list_calendars first to obtain calendar_id, and use update_event when the event already exists. Timed values require matching offsets and timezones, all-day end dates are exclusive, and recurrence rules omit the RRULE: prefix.","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_event","description":"Permanently delete an event or entire recurring series; individual expanded occurrences are not supported. Target it by resource_id or by calendar_id with uid, and supply expected_etag when available to prevent deleting a concurrently changed event.","write_action":true,"price_micros":0,"input_schema":null},{"name":"get_event","description":"Read one event by resource_id, preferably from a previous result, or by the calendar_id and uid pair. Use list_events for range searches. Request raw iCalendar only for controlled diagnostics because it may contain sensitive calendar data.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_calendars","description":"List calendars available in the configured iCloud account. Use this first to obtain the opaque calendar_id required by list_events and create_event; writable is a best-effort capability indicator.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_events","description":"List events that overlap the start-inclusive, end-exclusive interval and expand recurring series into occurrences, across at most 366 days. Use list_calendars first to obtain calendar_id and use get_event instead for one known event. Continue with next_cursor and unchanged query filters when more results are available.","write_action":false,"price_micros":0,"input_schema":null},{"name":"update_event","description":"Modify an existing event or entire recurring series; individual expanded occurrences are not supported. Target it by resource_id or by calendar_id with uid. Omitted patch fields are preserved, null clears nullable fields, an empty alarms array removes alarms, and expected_etag can prevent a stale write.","write_action":true,"price_micros":0,"input_schema":null}],"scan":{"score":83,"grade":"B","scanned_at":"2026-09-19T20:07:58.792Z","report":{"scannerVersion":"0.1.5","scannedAt":"2026-09-19T20:07:58.764Z","components":{"code":{"score":25,"max":25,"notes":["66 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":6,"max":15,"notes":["static API keys via environment variables"]},"maintenance":{"score":15,"max":15,"notes":["last push 0 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"@lukegskw/caldav-mcp","version":"0.1.8","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":7,"publishedAt":"2026-09-12T09:58:55.980Z","repositoryUrl":"git+https://github.com/lukegskw/caldav-mcp.git","weeklyDownloads":271}],"repo":{"found":true,"owner":"lukegskw","repo":"caldav-mcp","archived":false,"pushedAt":"2026-09-19T14:36:56Z","stars":3,"forks":1,"openIssues":6,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/169902618?v=4","ownerCreatedAt":"2024-05-15T11:39:57Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/169902618?v=4&s=128","source":"registry"},"presence":{"stars":3,"forks":1,"downloadsWeek":271,"license":"MIT","lastPushAt":"2026-09-19T14:36:56.000Z","score":33}}}},"grade_history":[],"reviews":[]}