NestDaddy

CalDAV calendars

io.github.ni-c/caldav-mcp · v0.1.5

Read and write CalDAV calendars: events, tasks and journal entries over the open standard

Connect Runs on your machine

Terminal
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]
claude_desktop_config.json
{
  "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>"
      }
    }
  }
}
~/.cursor/mcp.json
{
  "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>"
      }
    }
  }
}
.vscode/mcp.json
{
  "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

NameDescription
CALDAV_URL
Required
Root of the CalDAV server, e.g. https://dav.example.net. A calendar collection URL also works.
CALDAV_USERNAME
Optional
Account name. Most hosted services want an app-specific password with it.
CALDAV_PASSWORD
Optional, secret
Password or app-specific password. Deleted from the environment once read.
CALDAV_TOKEN
Optional, secret
Bearer token, as an alternative to username and password. Not both.
CALDAV_CALENDARS
Optional
Comma-separated calendars this server may touch, by path or final path segment. Default: all of them.
CALDAV_TIMEZONE
Optional
IANA zone for timestamps that carry no offset, e.g. Europe/Berlin (default: UTC)
CALDAV_USER_EMAIL
Optional
The address you are invited as, so respond_to_event can find your own attendee line
CALDAV_MAX_EVENTS
Optional
Entries a listing returns by default, 1 to 500 (default: 100)
CALDAV_READ_ONLY
Optional
Set to true to register only the read tools (default: false)
CALDAV_INSECURE_TLS
Optional
Set to true to accept a self-signed certificate on the configured host only (default: false)
CALDAV_ALLOW_PLAINTEXT
Optional
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_TOOLS
Optional
Comma-separated tool names or list_* prefixes to register; 'essential' selects a curated preset (default: all tools)
CALDAV_DENY_TOOLS
Optional
Comma-separated tool names or list_* prefixes to remove from whatever the allow list left
ELICITATION
Optional
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)
Packageghcr.io/ni-c/caldav-mcp:0.1.5 (OCI, stdio)
First published13 Oct 2026
Last updated13 Oct 2026
Registry nameio.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.