Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
CALDAV_URLYesRoot of the CalDAV server, e.g. https://dav.example.net. A calendar collection URL works too and limits the server to that one calendar.
ELICITATIONNoNot prefixed — one export reaches every MCP server in the environment. false makes guarded tools use the two-call token instead of a dialog. Default true.true
CALDAV_TOKENNoBearer token instead of username and password. Not both. Required if CALDAV_USERNAME and CALDAV_PASSWORD are not used.
CALDAV_PASSWORDNoPassword or app-specific password. Deleted from the environment once read. Required together with CALDAV_USERNAME unless CALDAV_TOKEN is used.
CALDAV_TIMEZONENoIANA zone for timestamps that carry no offset, e.g. Europe/Berlin. Default UTC.UTC
CALDAV_USERNAMENoAccount name. Required together with CALDAV_PASSWORD unless CALDAV_TOKEN is used.
CALDAV_CALENDARSNoComma-separated calendars this server may touch, by path or final path segment. Default: every calendar the account can see.
CALDAV_READ_ONLYNotrue registers only the read tools. Default false.false
CALDAV_DENY_TOOLSNoSubtracted from whatever the allow list left.
CALDAV_MAX_EVENTSNoEntries a listing returns by default, 1–500. Default 100.100
CALDAV_USER_EMAILNoThe address you are invited as, so respond_to_event can find your own attendee line.
CALDAV_ALLOW_TOOLSNoTool names, a prefix with one trailing *, or essential.
CALDAV_INSECURE_TLSNotrue accepts a self-signed certificate on the configured host only. Default false.false
CALDAV_ALLOW_PLAINTEXTNotrue allows a plain http:// URL to a host that is not loopback, which sends the credentials unencrypted on every request. Otherwise such a URL refuses to start. Default false.false

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_calendarsA

Every calendar this server may use, with the id to pass to the other tools. Always asks the server rather than answering from a cache — being current is this tool’s whole job.

get_server_infoA

Reports the DAV compliance tokens, which components each calendar accepts, and whether the optional features this server relies on actually work here. The first thing to run when something behaves differently than expected — CalDAV implementations differ more than the specification suggests.

list_eventsA

Events between two points in time, from every calendar this server may see or from the ones named. Recurring events are expanded into their individual occurrences, so each one has its own id and can be changed on its own. Defaults to the next 30 days.

get_eventA

The complete event behind an id from a listing: the untruncated description, every reminder, every attendee, every attachment as metadata. An occurrence id answers with that one instance; a series id answers with the series and its rule.

search_eventsA

Finds events whose summary, description or location contains a term. The search runs on the CalDAV server, one request per field and per calendar — the specification combines several field filters with AND, so asking for all three at once would only match entries carrying the term in every one of them.

get_free_busyA

Busy periods in a time range — start and end only, no titles and no attendees. The datasparing way to ask "when am I free": nothing anybody else wrote comes back, so there is no untrusted content in the answer at all.

list_tasksA

Tasks with a start or due date inside a time range. Tasks with no date at all are not returned by a time-range query — the CalDAV specification defines the filter against the dates, and a task with none of them matches no window.

get_taskA

The complete task behind an id from list_tasks, with its untruncated description and every reminder.

list_journalsC

Dated notes in a calendar, inside a time range. Most calendar clients hide these; a CalDAV server stores them alongside events and tasks, and some workflows use them as a diary.

get_journalA

The complete note behind an id from list_journals, untruncated. This is the longest piece of somebody else’s prose this server hands over, so the text channel carries it inside an explicit untrusted fence.

create_eventA

Adds an event to a calendar. The UID and the file name are generated here, so an existing entry can never be overwritten by accident. Times without an offset are read in the timezone argument or in CALDAV_TIMEZONE.

update_eventA

Changes the fields named and leaves everything else exactly as it was — including properties this server does not model, attendees, attachments and reminders it cannot write. Pass null to clear a field. Guarded by the entry’s ETag: if it changed since it was read, nothing is written and the answer says what it is now. Changing a whole recurring series asks first.

delete_eventA

Removes an event. An occurrence id removes just that occurrence — which iCalendar does by adding an exception date to the series, so the rest of the series is untouched. A series id removes the whole entry. A CalDAV server keeps no history: this cannot be undone.

move_eventA

Copies an event into another calendar and removes it from the first. The content survives, the address does not: every id that named this event stops working, and a listing is needed to get the new one. The destination may be a calendar other people can see.

respond_to_eventA

Sets your own participation status on an event you were invited to. On a server with scheduling enabled this sends a reply to the organiser, which cannot be unsent — so it asks first. It changes only your own attendee line and never anybody else’s. This server cannot add or remove attendees at all.

create_taskA

Adds a task to a calendar that accepts them. list_calendars reports which do — a collection created for events only will refuse a task, and this server checks before writing rather than passing the server’s refusal back.

update_taskA

Changes the fields named and leaves everything else as it was. Pass null to clear a field. Guarded by the entry’s ETag. To mark a task done use complete_task, which records the completion time as well.

complete_taskA

Sets the task’s status. Marking it done records the completion time and sets it to 100 %; reopening clears both. The previous state is written down in the entry, so this is reversible — which is why it does not ask first.

delete_taskA

Removes a task. A CalDAV server keeps no history: this cannot be undone. To mark a task done instead, use complete_task.

create_journalA

Adds a dated note to a calendar that accepts journal entries. list_calendars reports which do.

update_journalA

Replaces the fields named. A CalDAV server keeps no version history, so the previous text of a note is gone once this succeeds — pass only the fields to change, and pass null to clear one. Guarded by the entry’s ETag, so a note changed elsewhere in the meantime is not silently overwritten.

delete_journalA

Removes a dated note. A CalDAV server keeps no history, and a note is somebody’s writing: this cannot be undone.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ni-c/caldav-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server