Nextcloud CalDAV MCP Server
Allows creating calendar events and tasks in Nextcloud via CalDAV.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Nextcloud CalDAV MCP ServerCreate a calendar event for dentist appointment on Thursday at 2 PM"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Nextcloud CalDAV MCP Server
An MCP (Model Context Protocol) server that lets Claude create calendar events and tasks in Nextcloud via CalDAV.
Tools exposed:
Tool | Description |
| Writes a |
| Writes a |
Stack: Python 3 · mcp SDK 1.x · caldav · uvicorn · Tailscale Funnel (HTTPS)
Prerequisites
Install on the Proxmox host (Debian/Ubuntu):
apt update
apt install -y python3 python3-venv python3-pip gitNo nginx, no certbot needed — Tailscale handles TLS automatically.
Related MCP server: kelly
1 — Deploy the server files
# Files already live in /root/calendar_todo_mcp
# Copy the service file to systemd
mkdir -p /root/calendar_todo_mcp
cp server.py requirements.txt calendar_todo_mcp.service /root/calendar_todo_mcp/2 — Python virtual environment
python3 -m venv /root/calendar_todo_mcp/venv
/root/calendar_todo_mcp/venv/bin/pip install --upgrade pip
/root/calendar_todo_mcp/venv/bin/pip install -r /root/calendar_todo_mcp/requirements.txt3 — Configure .env
cp /root/calendar_todo_mcp/.env.example /root/calendar_todo_mcp/.env
nano /root/calendar_todo_mcp/.env # or your preferred editor
chmod 600 /root/calendar_todo_mcp/.envRequired values to fill in:
Variable | Example | Notes |
|
| No trailing slash |
|
| Your login username |
|
| See step below |
|
| Exact display name in Nextcloud Calendar |
|
| Exact display name in Nextcloud Tasks |
|
| Any identifier you choose |
| (generated) | Run |
|
| Your Tailscale Funnel URL (see step 4) |
Create a Nextcloud App Password
Log into Nextcloud → Settings → Security
Scroll to App passwords → enter a name (e.g.
mcp-server) → click Generate new app passwordCopy the password into
NEXTCLOUD_APP_PASSWORD
4 — Tailscale einrichten
Tailscale installieren
curl -fsSL https://tailscale.com/install.sh | sh
tailscale upAnmelden mit deinem Tailscale-Account im Browser, wenn der Link erscheint.
MagicDNS und HTTPS in der Tailscale-Konsole aktivieren
MagicDNS aktivieren
HTTPS Certificates aktivieren
Funnel aktivieren (öffentlich erreichbar via HTTPS)
Tailscale Funnel macht den Server über das öffentliche Internet erreichbar — nötig, damit Claude.ai (Cloud) den MCP-Server erreichen kann.
Der mitgelieferte tailscale_funnel.service startet den Funnel automatisch beim Booten (siehe Schritt 5). Zum Testen vorab:
tailscale funnel 8000Danach die URL deines Servers ermitteln:
tailscale funnel status
# Ausgabe z.B.: https://mymachine.tail-abc123.ts.net/ proxies to http://127.0.0.1:8000Diesen HTTPS-Hostnamen (z.B. https://mymachine.tail-abc123.ts.net) als
RESOURCE_SERVER_URL in die .env eintragen.
Nur im Tailnet (kein öffentlicher Zugriff)? Wenn Claude Desktop auf einem Gerät im selben Tailnet läuft, reicht
tailscale serve 8000stattfunnel.
5 — Install and start the systemd services
Both service files need to be copied and enabled: the MCP server and the Tailscale Funnel.
# MCP server
cp /root/calendar_todo_mcp/calendar_todo_mcp.service \
/etc/systemd/system/calendar-todo-mcp.service
# Tailscale Funnel (keeps the funnel running across reboots)
cp /root/calendar_todo_mcp/tailscale_funnel.service \
/etc/systemd/system/tailscale-funnel-mcp.service
systemctl daemon-reload
systemctl enable --now calendar-todo-mcp
systemctl enable --now tailscale-funnel-mcp
# Verify both are running
systemctl status calendar-todo-mcp
systemctl status tailscale-funnel-mcp
journalctl -u calendar-todo-mcp -f6 — Smoke test
Ersetze mymachine.tail-abc123.ts.net mit deiner tatsächlichen Tailscale-URL:
# OAuth-Metadaten-Endpoint — sollte JSON mit issuer/scopes zurückgeben
curl https://mymachine.tail-abc123.ts.net/.well-known/oauth-protected-resource \
| python3 -m json.tool
# MCP-Endpoint ohne Token — sollte 401 zurückgeben
curl -s -o /dev/null -w "%{http_code}" \
https://mymachine.tail-abc123.ts.net/mcp7 — Connect Claude
MCP-Server in Claude.ai oder claude_desktop_config.json eintragen:
{
"mcpServers": {
"calendar-todo": {
"url": "https://mymachine.tail-abc123.ts.net/mcp"
}
}
}Claude startet beim ersten Verbinden automatisch den OAuth-Flow (Browser-Redirect). Danach ist keine weitere Konfiguration nötig.
Claude kann dann Dinge sagen wie:
"Trag mir einen Zahnarzttermin am 3. April um 10 Uhr für 45 Minuten ein" "Erinnerung: Bank anrufen — fällig morgen"
Operations
# View live logs
journalctl -u calendar-todo-mcp -f
# Restart after config changes
systemctl restart calendar-todo-mcp
# Stop / disable
systemctl stop calendar-todo-mcp
systemctl disable calendar-todo-mcpTroubleshooting
Problem | What to check |
| OAuth-Flow noch nicht abgeschlossen — Claude erneut verbinden und Autorisierung im Browser bestätigen |
| The |
CalDAV | App password entered correctly? User has CalDAV access enabled? |
| Is the service running? |
Tailscale | MCP server not running, or wrong |
Funnel antwortet nicht |
|
Tailscale HTTPS geht nicht | MagicDNS und HTTPS Certificates in der Tailscale-Admin-Console aktiviert? |
This server cannot be deployed
Maintenance
Related MCP Connectors
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
A MCP server that works with Google Calendar to manage event listing, reading, and updates.
Hosted Google Calendar MCP server for AI agents. No self-hosting or Google Cloud setup.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceProvider-agnostic CalDAV calendar MCP server that connects any CalDAV calendar to AI assistants, enabling calendar operations like listing, creating, updating, and deleting events.AGPL 3.0
- AlicenseNot gradedqualityBmaintenanceA local MCP server for CalDAV that gives Claude read access to your calendar, enabling planning, conflict checking, and schedule summaries.MIT
- FlicenseNot gradedqualityCmaintenanceAn MCP server that enables Claude to interact with Google Calendar, including listing, creating, updating, and deleting events, as well as checking availability.-
- AlicenseNot gradedqualityCmaintenanceMCP server for managing Nextcloud Tasks (todos) via CalDAV, allowing Claude to view, add, complete, edit, and delete tasks with GitHub OAuth authentication.MIT