diff --git a/Radicale.md b/Radicale.md index 329acca..d8b8231 100644 --- a/Radicale.md +++ b/Radicale.md @@ -46,3 +46,50 @@ htpasswd_encryption = bcrypt [storage] filesystem_folder = /data/collections ``` + +## Storage Layout + +Each user gets `/data/collections/collection-root//`. Inside, every calendar/addressbook is a directory named by a UUID with a `.Radicale.props` file (`displayname`, `tag` = `VCALENDAR` / `VADDRESSBOOK`, supported components, color). Events and tasks are individual `.ics` files; contacts are `.vcf`. + +## MCP Integration + +The `agap-mcp` server exposes Radicale over CalDAV using `RADICALE_PASSWORD` from Vaultwarden. Source: `~/agap_git/agap-mcp/src/radicale.js`. Tools (prefix `mcp__agap__`): + +| Tool | Purpose | +|------|---------| +| `radicale_list_calendars` | List calendars/addressbooks for a user (defaults to `alvis`) | +| `radicale_list_events` | List events in a calendar (filename, uid, summary, dtstart, dtend) | +| `radicale_get_event` | Get raw iCalendar text for one event | +| `radicale_create_calendar` | MKCALENDAR with displayname, color, components | +| `radicale_delete_calendar` | DELETE a calendar collection | +| `radicale_put_event` | PUT an `.ics` (create or replace) | +| `radicale_delete_event` | DELETE an event | +| `radicale_move_event` | Copy event to another calendar, then delete from source | + +Env vars on the `agap-mcp` container: + +```yaml +RADICALE_URL=http://localhost:5232 +RADICALE_USER=alvis +``` + +### Raw CalDAV (without MCP) + +```bash +# List collections under alvis +curl -u alvis:$RADICALE_PASSWORD -X PROPFIND \ + -H 'Depth: 1' -H 'Content-Type: application/xml' \ + http://localhost:5232/alvis/ --data ' +' + +# Create a calendar +curl -u alvis:$RADICALE_PASSWORD -X MKCALENDAR \ + -H 'Content-Type: application/xml' \ + http://localhost:5232/alvis// --data ' + + + Social + + +' +```