Stefan Lohmaier 80fc323374 Fix XML namespace handling for Radicale responses
Radicale uses default DAV: namespace (no d: prefix) and CR: for CardDAV
instead of c:. Fixed all regex patterns to handle both variants:
- <href> and <d:href>
- <displayname> and <d:displayname>
- <CR:address-data> and <c:address-data>
- <C:calendar-data> and <c:calendar-data>
- </response> and </d:response>

Also fixed calendar discovery to match <C:calendar/> resourcetype
instead of looking for VEVENT string in the response.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-12 10:17:14 +02:00
2026-06-12 08:16:53 +02:00

mcp-home

Self-hosted MCP servers for Claude. Gives Claude access to your email, calendar, contacts, files, and notes — all running on your own hardware.

Services

  • Mail — search and read emails from IMAP backups (Maildir format)
  • Calendar + Tasks — read/write events and reminders via CalDAV (Radicale)
  • Contacts — search/read/write contacts via CardDAV (Radicale)
  • Files — browse and read files via WebDAV (oCIS)
  • Notes — search/read/write notes via Joplin API

Setup

python3 -m venv venv
venv/bin/pip install mcp[cli] httpx vobject python-dateutil

Copy tokens.json.example to tokens.json and set client secrets.

Usage with claude.ai

Add as Custom MCP Server in claude.ai Settings → Integrations:

  • URL: https://your-domain/mail/mcp (or calendar, contacts, files, notes)
  • OAuth Client ID: your username
  • OAuth Client Secret: your secret from tokens.json

License

MIT

S
Description
Self-hosted MCP servers for Claude — Mail, Calendar, Contacts, Files, Notes via CalDAV/CardDAV/WebDAV/IMAP
Readme 345 KiB
Languages
Python 99.1%
Shell 0.9%