Read and write CalDAV calendars: events, tasks and journal entries over the open standard
Connect Runs on your machine
claude mcp add caldav-mcp -e CALDAV_URL=<CALDAV_URL> -e CALDAV_USERNAME=<CALDAV_USERNAME> -e CALDAV_PASSWORD=<CALDAV_PASSWORD> -e CALDAV_TOKEN=<CALDAV_TOKEN> -e CALDAV_CALENDARS=<CALDAV_CALENDARS> -e CALDAV_TIMEZONE=<CALDAV_TIMEZONE> -e CALDAV_USER_EMAIL=<CALDAV_USER_EMAIL> -e CALDAV_MAX_EVENTS=<CALDAV_MAX_EVENTS> -e CALDAV_READ_ONLY=<CALDAV_READ_ONLY> -e CALDAV_INSECURE_TLS=<CALDAV_INSECURE_TLS> -e CALDAV_ALLOW_PLAINTEXT=<CALDAV_ALLOW_PLAINTEXT> -e CALDAV_ALLOW_TOOLS=<CALDAV_ALLOW_TOOLS> -e CALDAV_DENY_TOOLS=<CALDAV_DENY_TOOLS> -e ELICITATION=<ELICITATION> -- npx -y @ni-c/[email protected]
{
"mcpServers": {
"caldav-mcp": {
"command": "npx",
"args": [
"-y",
"@ni-c/[email protected]"
],
"env": {
"CALDAV_URL": "<CALDAV_URL>",
"CALDAV_USERNAME": "<CALDAV_USERNAME>",
"CALDAV_PASSWORD": "<CALDAV_PASSWORD>",
"CALDAV_TOKEN": "<CALDAV_TOKEN>",
"CALDAV_CALENDARS": "<CALDAV_CALENDARS>",
"CALDAV_TIMEZONE": "<CALDAV_TIMEZONE>",
"CALDAV_USER_EMAIL": "<CALDAV_USER_EMAIL>",
"CALDAV_MAX_EVENTS": "<CALDAV_MAX_EVENTS>",
"CALDAV_READ_ONLY": "<CALDAV_READ_ONLY>",
"CALDAV_INSECURE_TLS": "<CALDAV_INSECURE_TLS>",
"CALDAV_ALLOW_PLAINTEXT": "<CALDAV_ALLOW_PLAINTEXT>",
"CALDAV_ALLOW_TOOLS": "<CALDAV_ALLOW_TOOLS>",
"CALDAV_DENY_TOOLS": "<CALDAV_DENY_TOOLS>",
"ELICITATION": "<ELICITATION>"
}
}
}
}
{
"mcpServers": {
"caldav-mcp": {
"command": "npx",
"args": [
"-y",
"@ni-c/[email protected]"
],
"env": {
"CALDAV_URL": "<CALDAV_URL>",
"CALDAV_USERNAME": "<CALDAV_USERNAME>",
"CALDAV_PASSWORD": "<CALDAV_PASSWORD>",
"CALDAV_TOKEN": "<CALDAV_TOKEN>",
"CALDAV_CALENDARS": "<CALDAV_CALENDARS>",
"CALDAV_TIMEZONE": "<CALDAV_TIMEZONE>",
"CALDAV_USER_EMAIL": "<CALDAV_USER_EMAIL>",
"CALDAV_MAX_EVENTS": "<CALDAV_MAX_EVENTS>",
"CALDAV_READ_ONLY": "<CALDAV_READ_ONLY>",
"CALDAV_INSECURE_TLS": "<CALDAV_INSECURE_TLS>",
"CALDAV_ALLOW_PLAINTEXT": "<CALDAV_ALLOW_PLAINTEXT>",
"CALDAV_ALLOW_TOOLS": "<CALDAV_ALLOW_TOOLS>",
"CALDAV_DENY_TOOLS": "<CALDAV_DENY_TOOLS>",
"ELICITATION": "<ELICITATION>"
}
}
}
}
{
"servers": {
"caldav-mcp": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@ni-c/[email protected]"
],
"env": {
"CALDAV_URL": "<CALDAV_URL>",
"CALDAV_USERNAME": "<CALDAV_USERNAME>",
"CALDAV_PASSWORD": "<CALDAV_PASSWORD>",
"CALDAV_TOKEN": "<CALDAV_TOKEN>",
"CALDAV_CALENDARS": "<CALDAV_CALENDARS>",
"CALDAV_TIMEZONE": "<CALDAV_TIMEZONE>",
"CALDAV_USER_EMAIL": "<CALDAV_USER_EMAIL>",
"CALDAV_MAX_EVENTS": "<CALDAV_MAX_EVENTS>",
"CALDAV_READ_ONLY": "<CALDAV_READ_ONLY>",
"CALDAV_INSECURE_TLS": "<CALDAV_INSECURE_TLS>",
"CALDAV_ALLOW_PLAINTEXT": "<CALDAV_ALLOW_PLAINTEXT>",
"CALDAV_ALLOW_TOOLS": "<CALDAV_ALLOW_TOOLS>",
"CALDAV_DENY_TOOLS": "<CALDAV_DENY_TOOLS>",
"ELICITATION": "<ELICITATION>"
}
}
}
}
Replace the values in angle brackets with your own. Keys stay on your machine; we never see them.
Tools
This server runs locally, so its tools are listed by your MCP client once it starts.
Environment variables
| Name | Description |
|---|---|
CALDAV_URLRequired | Root of the CalDAV server, e.g. https://dav.example.net. A calendar collection URL also works. |
CALDAV_USERNAMEOptional | Account name. Most hosted services want an app-specific password with it. |
CALDAV_PASSWORDOptional, secret | Password or app-specific password. Deleted from the environment once read. |
CALDAV_TOKENOptional, secret | Bearer token, as an alternative to username and password. Not both. |
CALDAV_CALENDARSOptional | Comma-separated calendars this server may touch, by path or final path segment. Default: all of them. |
CALDAV_TIMEZONEOptional | IANA zone for timestamps that carry no offset, e.g. Europe/Berlin (default: UTC) |
CALDAV_USER_EMAILOptional | The address you are invited as, so respond_to_event can find your own attendee line |
CALDAV_MAX_EVENTSOptional | Entries a listing returns by default, 1 to 500 (default: 100) |
CALDAV_READ_ONLYOptional | Set to true to register only the read tools (default: false) |
CALDAV_INSECURE_TLSOptional | Set to true to accept a self-signed certificate on the configured host only (default: false) |
CALDAV_ALLOW_PLAINTEXTOptional | Set to true to allow a plain http:// URL to a host that is not loopback, which sends the credentials unencrypted (default: false) |
CALDAV_ALLOW_TOOLSOptional | Comma-separated tool names or list_* prefixes to register; 'essential' selects a curated preset (default: all tools) |
CALDAV_DENY_TOOLSOptional | Comma-separated tool names or list_* prefixes to remove from whatever the allow list left |
ELICITATIONOptional | Deliberately unprefixed, and reaches every MCP server in the environment. Set to false to make guarded tools use the two-call token instead of a dialog (default: true) |
Details
| Package | @ni-c/[email protected] (NPM, stdio) |
| Package | ghcr.io/ni-c/caldav-mcp:0.1.5 (OCI, stdio) |
| First published | 13 Oct 2026 |
| Last updated | 13 Oct 2026 |
| Registry name | io.github.ni-c/caldav-mcp |
More productivity servers See all
Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.
