A Deno monorepo containing packages for macOS Calendar access: - @wyattjoh/calendar - Core library for read-only macOS Calendar database access - @wyattjoh/calendar-mcp - Model Context Protocol (MCP) server for LLM integration - Search calendar events by title/summary - Get recent past events - Get upcoming events - Retrieve events within date ranges - Get today's events with conflict detection -
Add this skill
npx mdskills install wyattjoh/calendar-mcpWell-documented MCP server with comprehensive macOS Calendar tools but declares unnecessary write permissions
1# Calendar MCP23A Deno monorepo containing packages for macOS Calendar access:45- **[@wyattjoh/calendar](packages/calendar)** - Core library for read-only macOS Calendar database access6- **[@wyattjoh/calendar-mcp](packages/calendar-mcp)** - Model Context Protocol (MCP) server for LLM integration78## Features910- Search calendar events by title/summary11- Get recent past events12- Get upcoming events13- Retrieve events within date ranges14- Get today's events with conflict detection15- Get detailed event information including location, URL, and recurrence16- Filter rescheduled events1718## Requirements1920- macOS (Calendar is only available on macOS)21- Deno 2.x or later22- Read access to `~/Library/Calendars/Calendar.sqlitedb`2324## Packages2526### @wyattjoh/calendar2728Core library for accessing Calendar data:2930```bash31deno add @wyattjoh/calendar32```3334```typescript35import { openDatabase, searchEvents } from "@wyattjoh/calendar";3637const db = openDatabase();38try {39 const events = searchEvents(db, { query: "meeting", limit: 10 });40 console.log(events);41} finally {42 db.close();43}44```4546[See full documentation](packages/calendar/README.md)4748### @wyattjoh/calendar-mcp4950MCP server for LLM integration:5152```bash53# Run directly from JSR54deno run --allow-read --allow-env --allow-ffi --allow-sys jsr:@wyattjoh/calendar-mcp5556# Or install globally57deno install --global --allow-read --allow-env --allow-ffi --allow-sys -n calendar-mcp jsr:@wyattjoh/calendar-mcp58```5960For Claude Desktop app integration, add this to your `claude_desktop_config.json`:6162```json63{64 "mcpServers": {65 "calendar": {66 "command": "deno",67 "args": [68 "run",69 "--allow-read",70 "--allow-env",71 "--allow-ffi",72 "--allow-sys",73 "jsr:@wyattjoh/calendar-mcp"74 ]75 }76 }77}78```7980### Option 2: From Source81821. Clone this repository832. Run the server:84 ```bash85 cd packages/calendar-mcp86 deno run --allow-read --allow-env --allow-ffi --allow-sys mod.ts87 # Or use the task:88 deno task dev89 ```9091### Available Tools92931. **get-recent-events** - Get recent past calendar events94 - `limit` (optional): Number of events (1-100, default: 10)95 - `includeRescheduled` (optional): Include original rescheduled events (default: false)96972. **get-upcoming-events** - Get upcoming calendar events98 - `limit` (optional): Number of events (1-100, default: 10)99 - `includeRescheduled` (optional): Include original rescheduled events (default: false)1001013. **get-events-by-date-range** - Get events within a date range102 - `startDate` (required): Start date in ISO format (e.g., "2024-01-01")103 - `endDate` (required): End date in ISO format (e.g., "2024-01-31")104 - `includeRescheduled` (optional): Include original rescheduled events (default: false)1051064. **search-events** - Search for events by title/summary107 - `query` (required): Search query for event titles108 - `limit` (optional): Maximum results (1-100, default: 20)109 - `timeRange` (optional): "all", "past", or "future" (default: "all")110 - `includeRescheduled` (optional): Include original rescheduled events (default: false)1111125. **get-todays-events** - Get all events scheduled for today113 - `includeRescheduled` (optional): Include original rescheduled events (default: false)1141156. **get-event-details** - Get detailed information about a specific event116 - `eventId` (required): The ROWID of the event117118### Response Format119120All tools return calendar events in this format:121122```json123{124 "id": 12345,125 "title": "Team Meeting",126 "startTime": "2024-01-15T10:00:00.000Z",127 "endTime": "2024-01-15T11:00:00.000Z",128 "allDay": false,129 "status": "confirmed",130 "isRescheduled": false131}132```133134Detailed events (from get-event-details) include additional fields:135136```json137{138 "id": 12345,139 "title": "Team Meeting",140 "startTime": "2024-01-15T10:00:00.000Z",141 "endTime": "2024-01-15T11:00:00.000Z",142 "allDay": false,143 "status": "confirmed",144 "isRescheduled": false,145 "description": "Weekly sync with the team",146 "location": "Conference Room A",147 "url": "https://meet.example.com/team",148 "recurrenceRule": "FREQ=WEEKLY;INTERVAL=1",149 "calendar": "Work"150}151```152153## Security Notes154155- This server runs with read-only access to the Calendar database156- No events can be created, modified, or deleted157- The server only accesses local data158159## Development160161This is a Deno workspace monorepo. All commands run from the root affect all packages.162163```bash164# Clone the repository165git clone https://github.com/wyattjoh/calendar-mcp.git166cd calendar-mcp167168# Format all code169deno task fmt170171# Lint all packages172deno task lint173174# Type check all packages175deno task check176177# Run MCP server locally178cd packages/calendar-mcp179deno task dev180181# Publish packages (CI/CD)182deno publish183```184185### Working on Individual Packages186187```bash188# Work on @wyattjoh/calendar189cd packages/calendar190deno fmt191deno lint192deno check mod.ts193194# Work on @wyattjoh/calendar-mcp195cd packages/calendar-mcp196deno run --allow-read --allow-env --allow-ffi --allow-sys mod.ts197```198199## License200201MIT202
Full transparency — inspect the skill content before installing.