{"name":"io.github.redpop/apple-calendar-mcp","slug":"redpop-apple-calendar-mcp","title":"Apple Calendar","description":"Read and create Apple Calendar events on macOS, and find free time across calendars.","url":"https://mcp.market/server/redpop-apple-calendar-mcp","rating":null,"grade":"A","score":88,"certified":false,"status":"active","category":"productivity","tags":["productivity"],"presence":{"score":19,"stars":0,"forks":0,"downloads_week":51,"last_push_at":"2026-08-02T20:51:51.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/redpop/apple-calendar-mcp","website":null,"version":"0.2.1","remotes":[],"packages":[{"registryType":"npm","registryBaseUrl":"https://registry.npmjs.org","identifier":"@redpop/apple-calendar-mcp","version":"0.2.1","transport":{"type":"stdio"}}],"tools":[{"name":"create_event","description":"Creates a new event. Without calendarId the default calendar is used. Read-only calendars are rejected. For all-day events, alarms are floored to whole days and placed at 09:00, matching Calendar.app. Never modifies or deletes existing events — neither is currently possible.","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_event","description":"Deletes an event. Get eventIdentifier from list_events. For a recurring event, also pass occurrenceDate to name the instance and span to say how far the deletion reaches — this removes only that occurrence, future removes it and every later one. There is no undo, and span is not optional for recurring events for that reason. Read-only calendars are rejected. Returns the event as it was before dele","write_action":true,"price_micros":0,"input_schema":null},{"name":"find_free_time","description":"Finds free slots of at least durationMinutes. activityDomain controls days and hours together: work means Mon-Fri 09:00-18:00, personal every day at the same hours, unrestricted every day around the clock. workingHours overrides only the hours. bufferMinutes keeps time free around each busy event, so a slot wedged between two meetings is not offered as usable. Returns the free gaps, not the busy e","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_calendars","description":"Lists every calendar configured in macOS Calendar, including iCloud ones. Returns id, title, type, source, color and allowsModifications for each. Does not read events — list_events does that.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_events","description":"Reads events in a date range. Recurring events are returned as individual occurrences. All-day events additionally carry startDay and endDay as plain dates, where endDay means the last day included. Changes nothing. For free gaps rather than busy events, use find_free_time.","write_action":false,"price_micros":0,"input_schema":null},{"name":"update_event","description":"Changes an existing event. Only the fields you pass are changed; anything left out keeps its current value. Get eventIdentifier from list_events. For a recurring event, also pass occurrenceDate to name the instance and span to say how far the change reaches — this affects only that occurrence, future affects it and every later one. Read-only calendars are rejected. Alarms, if given, replace all ex","write_action":true,"price_micros":0,"input_schema":null}],"scan":{"score":88,"grade":"A","scanned_at":"2026-09-24T12:00:29.845Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-24T12:00:29.781Z","components":{"code":{"score":25,"max":25,"notes":["17 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":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":12,"max":15,"notes":["last push 53 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":"@redpop/apple-calendar-mcp","version":"0.2.1","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":2,"publishedAt":"2026-08-02T20:52:41.593Z","repositoryUrl":"git+https://github.com/redpop/apple-calendar-mcp.git","weeklyDownloads":51}],"repo":{"found":true,"owner":"redpop","repo":"apple-calendar-mcp","archived":false,"pushedAt":"2026-08-02T20:51:51Z","stars":0,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/812334?v=4","ownerCreatedAt":"2011-05-26T15:30:08Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/812334?v=4&s=128","source":"github"},"presence":{"stars":0,"forks":0,"downloadsWeek":51,"license":"MIT","lastPushAt":"2026-08-02T20:51:51.000Z","score":19}}}},"grade_history":[],"reviews":[]}