Skip to main content
Glama
mjucius

Cozi MCP Server

by mjucius

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
COZI_EMAILYesYour Cozi Family Organizer account email address
COZI_PASSWORDYesYour Cozi Family Organizer account password

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
family_membersA

List family members. Use the id for appointment attendees. Returns: [{id, name, color?}].

get_listsA

Summarize all lists (no items). Optionally filter by 'shopping' or 'todo'. Returns: [{id, title, type, item_count, completed_count}].

get_list_itemsA

Items in one list. Excludes completed items by default. Returns: [{id, text, status, position?}].

create_listA

Create a list ('shopping' or 'todo'). Returns: {id, title, type}.

rename_listB

Rename a list; its items stay as they are. Returns: {id, title, type}.

delete_listC

Delete a list. Returns true on success.

add_itemC

Add an item to a list. Returns: {id, text}.

update_itemA

Update an item's text and/or completion status. Pass text, completed, or both. When both are provided the text is updated first then status is updated as a separate request — these are NOT atomic. Returns: {id, text, status}.

remove_itemsC

Remove items from a list. Returns true on success.

get_calendarA

Appointments for one month. Returns: [{id, subject, day, all_day, start?, end?, end_day?, attendees?, location?, notes?, reminders?, kind?, read_only?, source?, recurring?, recurrence?, series_start?, series_end?, skipped_days?}]. day is the day the entry happens; end_day appears only on multi-day events, which are listed in every month they overlap, so day may fall outside the month asked for. A recurring series (recurring: true) is listed once per occurrence in the month, as Cozi itself expands it: each entry carries the series id, its own day (and end_day when the occurrence spans days), and series_start. Occurrences deleted in Cozi are already left out (and named in skipped_days); a series with no occurrence left in the month is not listed. kind marks items that are not plain appointments (e.g. "birthday"); read_only items (holidays, subscribed calendars, with source naming the calendar) cannot be changed. reminders are minutes before the start.

search_calendarA

Find appointments by words in their subject, across months (Cozi's own search, the one in its app). Use it for "when is the dentist?" instead of paging through months. Returns: {appointments: [{...same fields as get_calendar, last_day?, next_days?}], more?}. A recurring series is one entry with last_day (latest past occurrence) and next_days (up to 10 upcoming). Cozi searches from a few years back onward, and an appointment created in the last few seconds may not be found yet; more: true means it found more than this first page, so narrow the query.

todayA

Current date, weekday and time on the user's machine. Returns: {date, weekday, time, timezone}. Call it before turning 'tomorrow' or 'this Saturday' into the ISO dates the calendar tools take when you have not called another Cozi tool yet; every Cozi tool result also carries this time.

create_appointmentA

Create a calendar appointment. start and end are ISO datetimes (e.g. '2026-06-15T10:00:00'). For all-day events (all_day=true) a bare date (e.g. '2026-06-15') is also accepted and end may equal start; a bare date on a timed event is an error. For a multi-day event put end on a later date — the span is preserved, and the result reports it as end_day. end before start is an error. For attendees, call family_members() first and pass those id values. For a repeating event pass repeat; start/end are then its first occurrence.

update_appointmentA

Partial-update an appointment. The Cozi PUT semantics replace ALL fields, so this tool first fetches the existing appointment from the (year, month) page and merges your changes — only fields you pass are altered. To switch a timed appointment to all-day pass all_day=true; to switch to timed pass new start/end. Passing end re-spans the event against its (possibly newly set) start day, so an end on a later date makes it multi-day and one on the start day collapses it back; passing start alone moves the event and keeps its length, and all_day=true preserves the span. A bare date (e.g. '2026-06-15') is accepted for start/end when the event is, or is being made, all-day; on a timed event it is an error. A recurring series (recurring: true in get_calendar) needs scope: 'this' changes only the occurrence on occurrence_day (Cozi stores it as its own appointment, returned here), 'this_and_following' changes it and every later one (returned as the new series), 'series' changes every occurrence and keeps the rule unless repeat replaces it. repeat also turns a one-off into a series. Holidays, subscribed calendars and birthdays cannot be changed.

delete_appointmentA

Delete an appointment. Returns true on success; errors if the id is not on the (year, month) page. A recurring series (recurring: true in get_calendar) needs scope: 'this' removes only the occurrence on occurrence_day, 'this_and_following' ends the series before it, 'series' removes every occurrence, past and future. Confirm a 'series' delete with the user first. Holidays, subscribed calendars and birthdays cannot be deleted.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.7/5.0

Scored across 15 tools

Disambiguation4/5

Each tool targets a clear resource+action: lists (get_lists, create_list, rename_list, delete_list), list items (get_list_items, add_item, update_item, remove_items), and calendar (get_calendar, search_calendar, create/update/delete_appointment), plus helpers family_members and today. The only mild overlap is between update_item's completion status and remove_items, and between get_calendar and search_calendar, but the descriptions make the boundaries usable.

Naming Consistency4/5

The set mostly follows a verb_noun pattern (create_list, get_calendar, update_appointment, delete_list). Minor deviations exist: noun-only names (family_members, today) and inconsistent verbs for similar operations (rename_list vs update_item), plus the plural remove_items.

Tool Count5/5

15 tools is well-scoped for a two-domain server (family calendar + lists), with each tool earning its place across list CRUD, item CRUD, and appointment CRUD/search. No redundant or filler tools.

Completeness4/5

Covers full CRUD for lists, list items, and appointments including recurrence scoping and multi-day events. Minor gaps remain: no tool to reorder list items despite a `position` field being returned, and no explicit way to change a list's type or move items between lists.

Maintenance

ActivityMaintained
ResponsivenessWithin a week