Apple Calendar MCP Server
by ajayjohn
README.md
# Apple Calendar MCP Server
A Model Context Protocol (MCP) server that connects to Apple Calendar via a local Eventlink instance.
## Features
- **Fetch Events**: Get calendar events for specific dates or ranges.
- **Natural Language Dates**: Supports "today", "tomorrow", "next Monday".
- **Create Events**: Add new events to your calendar.
- **SSE Transport**: Runs as a local web service.
- **MacOS Integration**: Runs automatically at login via Launch Agent.
## Prerequisite
1. **Eventlink**: You must have [Eventlink](https://dreetje-1.gitbook.io/eventlink/endpoints) (or compatible server) running locally.
2. **Node.js**: Version 18+ (LTS recommended).
## Installation
1. Clone this repository.
2. Copy `.env.example` to `.env` and configure your settings:
```bash
cp .env.example .env
```
- `EVENTLINK_TOKEN`: Your Eventlink bearer token.
- `EVENTLINK_URL`: URL to Eventlink (default: `http://localhost:9000`).
- `PORT`: Port for this MCP server (default: `6372`).
3. Run the installation script:
```bash
./install.sh
```
This will:
- Install dependencies.
- Build the project.
- Create and load a macOS Launch Agent to keep the server running in the background.
## Usage
### Managing the Server
- **Start**: `./start.sh` (Manually start the background service)
- **Stop**: `./stop.sh` (Stop the background service)
- **Uninstall**: `./uninstall.sh` (Remove the service and clean up)
### Connecting to Claude Desktop / Clients
Add the following to your `claude_desktop_config.json`:
```json
{
"mcpServers": {
"apple-calendar": {
"command": "node",
"args": ["/path/to/mcp-server-apple-calendar/dist/index.js"],
"env": {
"EVENTLINK_TOKEN": "your_token",
"EVENTLINK_URL": "http://localhost:9000"
}
}
}
}
```
*Note: The install script sets up a background service listening on SSE (typically `http://localhost:6372/sse`). If your client supports SSE over HTTP, point it there. For Claude Desktop, using `stdio` (command execution) as shown above is also supported if you prefer not to use the background service, but this server is optimized for background execution.*
**Wait, this server is designed for SSE primarily via the background service.**
If you want to use the SSE endpoint:
URL: `http://localhost:6372/sse`
## Tools
### `calendar_get_events`
Fetches events for a given date.
- `date` (string): "YYYY-MM-DD", "today", "tomorrow", "next Monday".
- `offset` (number): Number of days (default: 1).
- `calendarName` (string): Optional calendar override.
### `calendar_create_event`
Creates a new event.
- `title` (string): Event title.
- `startDate` (string): "YYYY-MM-DD HH:MM".
- `endDate` (string): "YYYY-MM-DD HH:MM".
- `notes` (string): Optional notes.
## License
MIT
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues