home / mcp / personal calendar mcp server

Personal Calendar MCP Server

Provides a self-hosted calendar MCP with Caldav support, enabling range queries, batch creation, updates, and timezone-aware scheduling across calendars.

Installation
Add the following to your MCP client configuration file.

Configuration

View docs
{
  "mcpServers": {
    "blacol-mcp-personalcalendar": {
      "url": "[服务器公网IP]:20002/sse"
    }
  }
}

You can run a self-hosted calendar MCP that lets a large model manage your schedule and tasks across Caldav calendars. It supports querying events and todos in date ranges, batch creation, updating, and deletion, with smart timezone handling and optional cross-tool automation integrations. Create it locally and connect it to an MCP client to automate your planning.

How to use

Set up the MCP server and connect it to your MCP client to start automating your schedule. You can query all events and todos across all calendars for a given date range, batch-create events and tasks (including location data), and modify or delete existing entries. Timezone handling is smart by default, with events created in Beijing Time unless otherwise specified. You can integrate this MCP with tools like Dify and N8n to enable cross-platform automation.

When you test, you can add multiple events in one go and try creating events in different time zones. You’ll see how the system converts times to the target display/timezone and stores them in Beijing Time by default.

How to install

# 先创建一个虚拟环境
python3 -m venv .venv
# 进入虚拟环境(Linux)
source .venv/bin/activate
# 安装依赖
uv pip install .
# 运行程序
uv run main.py
```

```json
{
  "mcpServers": {
    "PersonalCalendar": {
      "type": "http",
      "name": "personalcalendar",
      "url": "[服务器公网IP]:20002/sse",
      "args": []
    }
  }
}

Additional sections

Configuration and runtime notes: - The MCP server listens on port 20002. Ensure this port is allowed in your server firewall when deployed publicly. - There is a default, single MCP connection configured for the PersonalCalendar server using a remote HTTP endpoint. You can customize the URL to point at your own Caldav-based calendar backend if needed. - Environment variables are not required for the basic setup, but you can extend the configuration to include authentication or feature flags as needed.

Testing examples you can try in conversations with the model: - Add multiple events to a test calendar in one go: - Add events with different time zones to verify automatic conversion to Beijing Time. - Use descriptive text for location and notes to confirm that location fields are stored and displayed correctly.

Tools and capabilities

- get_current_time: Obtain the current time to help with scheduling and timezone conversions.
- query_events: Retrieve all events within a specified date range across all calendars.
- query_todos: Retrieve all todos within a specified date range across all calendars.
- batch_create_events: Create multiple events in one operation, optionally including location data.
- batch_create_todos: Create multiple todos in one operation.
- update_event: Modify an existing event’s details like time, location, or notes.
- delete_event: Remove an event from the calendar.
- timezone_adjustment: Apply intelligent timezone adjustments when creating or displaying events.
- integration_links: Interoperate with tools like Dify or N8n for cross-platform automation.

Security and maintenance notes

Keep your calendar credentials secure. Use a dedicated calendar account with least privilege for MCP access. If you expose the MCP API publicly, consider IP whitelisting or authentication for the HTTP endpoint. Regularly update dependencies and monitor for updates to the Caldav-related libraries you rely on.

Available tools

get_current_time

A tool to obtain the current time, used to align scheduling with time zones and improve time-aware prompts.

query_events

Retrieve all events within a specified date range from all connected calendars.

query_todos

Retrieve all todos within a specified date range from all connected calendars.

batch_create_events

Create multiple calendar events in a single operation, with optional location data.

batch_create_todos

Create multiple todos in a single operation.

update_event

Modify an existing event’s time, location, or notes.

delete_event

Delete an existing event from the calendar.

timezone_adjustment

Automatically adjust times for different time zones when creating or displaying events.

integration_links

Provide hooks or endpoints to connect with automation tools like Dify or N8n for cross-platform workflows.