Chronos MCP
Provides Claude with a persistent local memory and structured knowledge graph to track project states, tasks, and historical decisions across different chat sessions. It enables users to recall information using keyword relevance, time-travel queries, and dependency analysis for complex project management.
Installation
npx chronos-mcpAsk AI about Chronos MCP
Powered by Claude Β· Grounded in docs
I know everything about Chronos MCP. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
Chronos MCP - Advanced CalDAV Management Server
A comprehensive Model Context Protocol (MCP) server for CalDAV calendar management, built with FastMCP 2.0. Chronos provides advanced calendar and event management capabilities with multi-account support.
π Features
- Multi-account Support: Manage multiple CalDAV servers simultaneously
- Full CRUD Operations: Create, read, update, and delete calendars and events β
- Advanced Event Management:
- Recurring events with RRULE support β
- Event updates with partial field modifications β
- Attendee management and invitations (JSON format) β
- Reminders and alarms (VALARM) β
- Timezone-aware operations
- Advanced Search:
- Full-text search across events β
- Field-specific search (title, description, location) β
- Multiple match types (contains, starts_with, exact, regex) β
- Date range filtering β
- Relevance ranking algorithm β
- Bulk Operations:
- Create multiple events in parallel β
- Delete multiple events efficiently β
- Atomic operations with rollback β
- Configurable error handling modes β
- Security Hardening:
- Comprehensive input validation β
- XSS and injection prevention β
- Path traversal protection β
- RFC-compliant validation β
- Task Management: Full VTODO support β
- Journal Entries: Full VJOURNAL support β
- Import/Export: iCalendar format support (coming soon)
- Sync Capabilities: Calendar synchronization between accounts (coming soon)
π Task Management (VTODO)
Chronos MCP provides comprehensive support for CalDAV tasks:
- Create tasks with due dates, priorities, and descriptions
- Track progress with percentage completion (0-100%)
- Manage status: NEEDS-ACTION, IN-PROCESS, COMPLETED, CANCELLED
- Create subtasks using related_to relationships
- Bulk operations for efficient task management
# Example: Create a task
mcp call create_task '{
"calendar_uid": "my-calendar",
"summary": "Complete project documentation",
"due": "2025-02-01T15:00:00Z",
"priority": 2
}'
π Journal Entries (VJOURNAL)
Keep detailed records with CalDAV journal entries:
- Create journal entries with timestamps and rich descriptions
- Link related entries using related_to relationships
- Organize with categories for better searchability
- Update and manage existing journal entries
# Example: Create a journal entry
mcp call create_journal '{
"calendar_uid": "my-calendar",
"summary": "Team Meeting Notes",
"description": "Discussed Q1 objectives..."
}'
For detailed usage, see VTODO/VJOURNAL Guide.
π Security
Secure Password Storage (New!)
Chronos MCP now supports secure password storage using your system's keyring (via python-keyring). When available, passwords are automatically stored in:
- macOS: Keychain Access
- Windows: Windows Credential Locker
- Linux: Secret Service (GNOME Keyring, KWallet, etc.)
Migration to Secure Storage
If you have existing accounts with passwords stored in plain text, migrate them to secure storage:
# Check what will be migrated (dry run)
python scripts/migrate_to_keyring.py --dry-run
# Perform actual migration
python scripts/migrate_to_keyring.py
The migration script will:
- Read existing passwords from
~/.chronos/accounts.json - Store them securely in your system keyring
- Create a backup of the original configuration
- Remove passwords from the JSON file
Fallback Behavior
If keyring is not available (e.g., SSH sessions, containers), Chronos MCP will:
- Warn about the security implications
- Fall back to storing passwords in the configuration file
- Automatically attempt to migrate passwords to keyring when it becomes available
Legacy Security Warning
Note: If keyring is not installed or available, passwords will be stored in plain text at ~/.chronos/accounts.json. Install keyring support with:
pip install "chronos-mcp[secure]" # or just: pip install keyring
Installation
Standard Installation
pip install -e .
Secure Installation (Recommended)
Includes keyring support for secure password storage:
pip install -e ".[secure]"
Or if you already have Chronos installed:
pip install keyring>=24.0.0
Configuration
Environment Variables (Default Account)
CALDAV_BASE_URL=http://<YOUR_CALDAV_SERVER>:5232
CALDAV_USERNAME=<YOUR_USERNAME>
CALDAV_PASSWORD=<YOUR_PASSWORD>
Multi-Account Configuration
Create ~/.chronos/accounts.json:
{
"accounts": {
"personal": {
"url": "http://<YOUR_CALDAV_SERVER>:5232",
"username": "<YOUR_USERNAME>",
"display_name": "Personal Calendar"
},
"work": {
"url": "https://caldav.company.com",
"username": "user",
"display_name": "Work Calendar"
}
},
"default_account": "personal"
}
Note: Passwords are not included in the JSON when using keyring. They will be:
- Prompted for on first use and stored securely
- Migrated from existing configuration using
scripts/migrate_to_keyring.py - Only stored in JSON if keyring is unavailable (with a warning)
Usage
Running the Server
./run_chronos.sh
Basic Operations
List all configured accounts:
list_accounts()
Example Tool Usage
Create an event with reminder:
chronos:create_event(
calendar_uid="assistant",
summary="Team Meeting",
start="2025-07-08T14:00:00",
end="2025-07-08T15:00:00",
location="Conference Room",
alarm_minutes="15" # Note: Pass as string!
)
Create recurring event with attendees:
chronos:create_event(
calendar_uid="work",
summary="Weekly Standup",
start="2025-07-07T09:00:00",
end="2025-07-07T09:30:00",
recurrence_rule="FREQ=WEEKLY;BYDAY=MO,WE,FR",
attendees_json='[{"email": "team@example.com", "name": "Team"}]'
)
Delete an event:
chronos:delete_event(
calendar_uid="assistant",
event_uid="abc-123-def-456"
)
Update an event (partial update):
chronos:update_event(
calendar_uid="assistant",
event_uid="abc-123-def-456",
location="Room 202", # Update location
alarm_minutes="30" # Change reminder to 30 minutes
# Other fields remain unchanged
)
Documentation
- API Reference - Complete API documentation
- Architecture Guide - System design and components
- RRULE Guide - Recurring events documentation
- Data Flows - Request/response patterns
- Design Decisions - Technical choices explained
Known Issues
See KNOWN_ISSUES.md for current limitations and workarounds.
Changelog
See CHANGELOG.md for version history.
Contributing
See CONTRIBUTING.md for development guidelines.
