Manage your family's calendars and lists in Cozi. View, create, and update appointments; organize…
Config is the same across clients — only the file and path differ.
{
"mcpServers": {
"ai-smithery-mjucius-cozi-mcp": {
"command": "<see-readme>",
"args": []
}
}
}Are you the author?
Add this badge to your README to show your security score and help users find safe servers.
An unofficial Model Context Protocol server that lets AI assistants like Claude read and update your Cozi Family Organizer lists and calendar.
No automated test available for this server. Check the GitHub README for setup instructions.
Five weighted categories — click any category to see the underlying evidence.
No known CVEs.
No package registry to scan.
Click any tool to inspect its schema.
Be the first to review
Have you used this server?
Share your experience — it helps other developers decide.
Sign in to write a review.
Others in productivity
Persistent memory using a knowledge graph
Official Miro MCP server - Supports context to code and creating diagrams, docs, and data tables.
a self-hosted project management & Kanban solution + Instant shareable boards
All-in-one local AI hub for Obsidian — LLM chat with vault tools, MCP servers, RAG, workflow automation, encryption, and edit history. Fully private, no cloud required.
MCP Security Weekly
Get CVE alerts and security updates for ai.smithery/mjucius-cozi_mcp and similar servers.
Start a conversation
Ask a question, share a tip, or report an issue.
Sign in to join the discussion.
An unofficial Model Context Protocol server that lets AI assistants like Claude read and update your Cozi Family Organizer lists and calendar.
Each user runs their own instance against their own Cozi account. Your credentials are stored in your MCP client's secure config (Claude Desktop's OS keychain, Smithery's encrypted session config, or your local environment) and never leave your machine — the author of this server has no access to your data.
Download the latest .mcpb from the Releases page and double-click to install in Claude Desktop. You'll be prompted for your Cozi username and password — they're stored securely in your OS keychain.
This path requires no Node, npm, or Python install on your machine.
For Cursor, ChatGPT-style clients, or web agents that connect to Smithery-hosted servers:
Configure your Cozi credentials in the Smithery UI; each session runs in isolation with its own credential set.
Add this to your Claude Desktop claude_desktop_config.json (or any other MCP client config file):
{
"mcpServers": {
"cozi": {
"command": "npx",
"args": ["-y", "@mjucius/cozi-mcp"],
"env": {
"COZI_USERNAME": "you@example.com",
"COZI_PASSWORD": "your-password"
}
}
}
}
Requires Node 20+. The package will be downloaded on first run.
Cozi has no OAuth — username/password authentication is the only way the API supports. This server handles that fact honestly:
https://rest.cozi.com.rest.cozi.com for the same endpoints the Cozi web app uses (auth, lists, calendar, family members). The full request/response code lives in src/cozi/ — about 500 lines of TypeScript you can audit yourself.@mjucius/cozi-mcp@2.0.0) if you want a stable target, or fork the repo and run your own build if you want zero supply-chain trust.The server exposes 12 tools. Returns are slim dicts with null/empty fields omitted.
family_members() → [{id, name, color?}] — call this first to get attendee IDs for appointments.get_lists(list_type?) → [{id, title, type, item_count, completed_count}] — list_type is optional, 'shopping' or 'todo'.get_list_items(list_id, include_completed=false) → [{id, text, status, position?}].create_list(name, list_type) → {id, title, type}.delete_list(list_id) → boolean.add_item(list_id, text, position=0) → {id, text}.update_item(list_id, item_id, text?, completed?) → {id, text, status} — pass either or both. Non-atomic when both are passed: the text is updated first, then the status.remove_items(list_id, item_ids) → boolean.get_calendar(year, month) → [{id, subject, day, all_day, start?, end?, attendees?, location?, notes?}].create_appointment(subject, start, end, attendees?, all_day=false, notes='', location?) — start and end are ISO d