{"passport":{"unfragile":{"@version":"1.0","version":"2026-05","artifact":{"id":"awesome-caldav-mcp","slug":"caldav-mcp","name":"CalDAV MCP","type":"mcp","url":"https://github.com/dominik1001/caldav-mcp","page_url":"https://unfragile.ai/caldav-mcp","categories":["mcp-servers"],"tags":[],"pricing":{"model":"open_source","free":true,"starting_price":null},"status":"active","verified":false},"capabilities":[{"id":"awesome-caldav-mcp__cap_0","uri":"capability://tool.use.integration.stdio.based.mcp.server.initialization.with.caldav.authentication","name":"stdio-based mcp server initialization with caldav authentication","description":"Initializes a Model Context Protocol server that communicates with AI assistants via StdioServerTransport over stdin/stdout, authenticating to CalDAV servers using environment variable credentials. The server registers tool handlers using @modelcontextprotocol/sdk and validates all incoming requests through Zod schemas before delegating to the underlying CalDAVClient, ensuring type-safe message serialization/deserialization across the MCP protocol boundary.","intents":["Set up a local MCP server that bridges an AI assistant to a CalDAV calendar backend","Configure CalDAV authentication credentials without hardcoding them in source code","Establish bidirectional stdio communication with Claude or other MCP-compatible AI assistants"],"best_for":["AI assistant developers integrating calendar capabilities into Claude or other MCP-compatible models","Teams deploying calendar automation agents that need standardized protocol communication"],"limitations":["Stdio transport only — no HTTP/REST endpoint exposure, requires direct process spawning","Single CalDAV server per server instance — no multi-tenant support without running multiple processes","Environment variable-based auth only — no support for OAuth2 or token refresh mechanisms"],"requires":["Node.js with ES2022 module support","CalDAV server URL, username, and password in environment variables","@modelcontextprotocol/sdk package","ts-caldav package for CalDAV client implementation"],"input_types":["environment variables (CALDAV_URL, CALDAV_USERNAME, CALDAV_PASSWORD)","MCP protocol messages (JSON) via stdin"],"output_types":["MCP protocol responses (JSON) via stdout","structured calendar data (calendars, events)"],"categories":["tool-use-integration","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-caldav-mcp__cap_1","uri":"capability://tool.use.integration.calendar.enumeration.with.metadata.extraction","name":"calendar enumeration with metadata extraction","description":"Exposes a list-calendars tool that queries the CalDAV server via ts-caldav's getCalendars() method, returning structured metadata for each calendar including display name, color, and calendar-specific properties. The tool validates no input parameters and returns a JSON array of calendar objects, enabling AI assistants to discover available calendars before performing event operations.","intents":["Discover all calendars available on a CalDAV server to select targets for event creation","Retrieve calendar metadata (names, colors) for display in AI assistant responses","Validate CalDAV server connectivity by listing accessible calendars"],"best_for":["AI assistants that need to present calendar choices to users before event creation","Calendar automation workflows that must enumerate targets before bulk operations"],"limitations":["No filtering or search — returns all calendars regardless of size or relevance","Metadata limited to what CalDAV server exposes — some servers may not include color or description fields","No pagination — large calendar lists returned as single response"],"requires":["Valid CalDAV server credentials in environment variables","CalDAV server must support PROPFIND requests for calendar discovery"],"input_types":[],"output_types":["JSON array of calendar objects with properties: name, color, displayName, url"],"categories":["tool-use-integration","search-retrieval"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-caldav-mcp__cap_2","uri":"capability://tool.use.integration.event.querying.with.date.range.filtering","name":"event querying with date range filtering","description":"Implements a list-events tool that queries the CalDAV server for events within a specified date range using ts-caldav's getEvents() method. Accepts startDate and endDate parameters (ISO 8601 format), validates them with Zod schemas, and returns a structured JSON array of event objects including title, start/end times, description, and recurrence rules. Enables AI assistants to check calendar availability and retrieve event details for scheduling decisions.","intents":["Check calendar availability for a specific date range before proposing new events","Retrieve event details (titles, times, descriptions) for display or analysis","Validate proposed event times against existing calendar entries"],"best_for":["Scheduling assistants that need to check availability before creating events","Calendar analysis workflows that aggregate events across date ranges","AI agents that must respect existing commitments when planning"],"limitations":["Date range queries only — no free-text search or event filtering by title/description","Recurrence rule parsing depends on CalDAV server implementation — complex RRULE patterns may not expand fully","No pagination — large date ranges may return thousands of events in single response"],"requires":["Valid CalDAV server credentials","startDate and endDate in ISO 8601 format (YYYY-MM-DD or RFC 3339)","CalDAV server must support REPORT requests with date-range filtering"],"input_types":["startDate (string, ISO 8601 format)","endDate (string, ISO 8601 format)"],"output_types":["JSON array of event objects with properties: title, startDate, endDate, description, rrule, uid"],"categories":["tool-use-integration","search-retrieval"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-caldav-mcp__cap_3","uri":"capability://tool.use.integration.event.creation.with.recurrence.and.validation","name":"event creation with recurrence and validation","description":"Exposes a create-event tool that constructs new calendar events with title, start/end times, description, and optional recurrence rules (RRULE format). Validates all inputs using Zod schemas (date format, string length, RRULE syntax), then delegates to ts-caldav's createEvent() method which generates iCalendar (ICS) format and POSTs to the CalDAV server. Returns the created event's unique identifier (UID) and confirmation details, enabling AI assistants to schedule events with full iCalendar feature support.","intents":["Create new calendar events with AI assistant-generated titles and times","Schedule recurring events (daily, weekly, monthly) using RRULE syntax","Add event descriptions and details from AI-generated content"],"best_for":["Scheduling assistants that create events based on natural language requests","Automation workflows that generate recurring calendar entries","AI agents that need to confirm event creation with users"],"limitations":["RRULE validation is basic — complex recurrence patterns (e.g., 'every 2nd Tuesday of month') require manual RRULE syntax","No timezone handling — assumes UTC or server default timezone","No conflict detection — creates events even if they overlap with existing entries","No attendee/participant support — single-user events only"],"requires":["Valid CalDAV server credentials with write permissions","title (string, 1-255 characters)","startDate and endDate (ISO 8601 format, startDate must be before endDate)","optional: description (string), rrule (RRULE format per RFC 5545)","CalDAV server must support PUT requests for event creation"],"input_types":["title (string)","startDate (string, ISO 8601)","endDate (string, ISO 8601)","description (string, optional)","rrule (string, RRULE format, optional)"],"output_types":["JSON object with properties: uid (unique identifier), title, startDate, endDate, created (timestamp)"],"categories":["tool-use-integration","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-caldav-mcp__cap_4","uri":"capability://tool.use.integration.event.deletion.with.uid.based.targeting","name":"event deletion with uid-based targeting","description":"Implements a delete-event tool that removes calendar events by their unique identifier (UID). Accepts a single UID parameter, validates it with Zod schemas, and delegates to ts-caldav's deleteEvent() method which sends a DELETE request to the CalDAV server. Returns confirmation of deletion, enabling AI assistants to cancel or remove events from calendars with precise targeting.","intents":["Cancel or remove calendar events based on user requests","Clean up duplicate or incorrectly created events","Automate event removal as part of scheduling workflows"],"best_for":["Scheduling assistants that need to cancel events on user request","Calendar cleanup workflows that remove obsolete entries","AI agents managing event lifecycle (create, update, delete)"],"limitations":["UID-only deletion — no search-based deletion (e.g., 'delete all events with title X')","No soft delete or undo — deletion is permanent and immediate","No confirmation prompt — deletes without requiring user approval","No recurrence instance handling — deletes entire recurring event series, not individual instances"],"requires":["Valid CalDAV server credentials with write permissions","uid (string, unique event identifier from list-events or create-event response)","CalDAV server must support DELETE requests"],"input_types":["uid (string, unique event identifier)"],"output_types":["JSON object with properties: success (boolean), uid (deleted event identifier), message (confirmation text)"],"categories":["tool-use-integration","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-caldav-mcp__cap_5","uri":"capability://tool.use.integration.zod.based.input.validation.at.mcp.protocol.boundary","name":"zod-based input validation at mcp protocol boundary","description":"Implements runtime validation of all tool inputs using Zod schemas before delegating to CalDAVClient methods. Each tool (list-calendars, list-events, create-event, delete-event) has a corresponding Zod schema that validates parameter types, string lengths, date formats (ISO 8601), and RRULE syntax. Validation errors are caught and returned as structured MCP error responses, preventing invalid requests from reaching the CalDAV server and providing clear error messages to AI assistants.","intents":["Catch malformed tool inputs before they reach the CalDAV server","Provide clear error messages to AI assistants when parameters are invalid","Ensure type safety across the MCP protocol boundary"],"best_for":["MCP server developers who need robust input validation without custom code","Teams deploying AI assistants that may generate invalid calendar parameters"],"limitations":["Validation is local only — doesn't check CalDAV server-specific constraints (e.g., calendar write permissions)","RRULE validation is syntactic only — doesn't verify semantic correctness of recurrence rules","No custom error messages — uses Zod's default error format"],"requires":["zod package (runtime dependency)","Zod schema definitions for each tool in src/tools/"],"input_types":["JSON objects matching MCP tool parameter schema"],"output_types":["validation success (boolean) or structured error response with field-level error details"],"categories":["tool-use-integration","safety-moderation"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-caldav-mcp__cap_6","uri":"capability://tool.use.integration.caldav.protocol.abstraction.via.ts.caldav.client","name":"caldav protocol abstraction via ts-caldav client","description":"Abstracts CalDAV protocol complexity by delegating all calendar operations to the ts-caldav library, which handles HTTP/CalDAV request construction, XML parsing, and iCalendar serialization. The MCP server registers tool handlers that call ts-caldav methods (getCalendars, getEvents, createEvent, deleteEvent), which internally manage PROPFIND/REPORT/PUT/DELETE requests, authentication headers, and response parsing. This abstraction eliminates the need for the MCP server to understand CalDAV protocol details.","intents":["Simplify CalDAV integration by using a high-level client library instead of raw HTTP","Support multiple CalDAV server implementations without custom protocol handling","Reduce boilerplate for authentication, request serialization, and response parsing"],"best_for":["MCP server developers who want to focus on tool logic rather than CalDAV protocol details","Teams integrating with diverse CalDAV servers (iCloud, Google Calendar, Nextcloud, etc.)"],"limitations":["Limited to ts-caldav's feature set — advanced CalDAV features (e.g., scheduling, sharing) not exposed","ts-caldav may not support all CalDAV server variations — some servers may require custom handling","No connection pooling or caching — each tool invocation creates new HTTP requests"],"requires":["ts-caldav package (runtime dependency)","CalDAV server URL, username, password"],"input_types":["tool parameters (title, dates, rrule, etc.)"],"output_types":["structured calendar data (calendars, events) parsed from CalDAV responses"],"categories":["tool-use-integration","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-caldav-mcp__cap_7","uri":"capability://automation.workflow.environment.variable.based.credential.management","name":"environment variable-based credential management","description":"Loads CalDAV server credentials (URL, username, password) from environment variables at server startup, avoiding hardcoded secrets in source code. The server reads CALDAV_URL, CALDAV_USERNAME, and CALDAV_PASSWORD from the process environment and passes them to the ts-caldav client initialization. This pattern enables secure deployment in containerized environments (Docker, Kubernetes) where secrets are injected at runtime.","intents":["Securely configure CalDAV credentials without embedding them in code","Deploy the MCP server in containerized environments with secret injection","Support different CalDAV servers per deployment without code changes"],"best_for":["DevOps teams deploying MCP servers in Docker/Kubernetes with secret management","Organizations with multiple CalDAV server instances (dev, staging, production)"],"limitations":["Environment variables visible in process listing — not suitable for highly sensitive deployments","No credential rotation — requires server restart to update credentials","No support for OAuth2 or token-based auth — basic auth only","Single credential set per server instance — no multi-tenant support"],"requires":["CALDAV_URL environment variable (CalDAV server URL)","CALDAV_USERNAME environment variable","CALDAV_PASSWORD environment variable"],"input_types":["environment variables"],"output_types":["authenticated CalDAV client instance"],"categories":["automation-workflow","safety-moderation"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-caldav-mcp__cap_8","uri":"capability://tool.use.integration.mcp.tool.handler.registration.with.schema.based.dispatch","name":"mcp tool handler registration with schema-based dispatch","description":"Registers four calendar operation tools with the MCP server using @modelcontextprotocol/sdk's setRequestHandler() method, mapping tool names (list-calendars, list-events, create-event, delete-event) to handler functions. Each handler receives tool name and arguments, validates arguments against Zod schemas, and delegates to the corresponding ts-caldav method. The MCP server routes incoming tool invocations to the correct handler based on tool name, enabling AI assistants to call tools by name with structured parameters.","intents":["Register calendar tools with an MCP server so AI assistants can discover and invoke them","Route tool invocations from AI assistants to the correct handler function","Validate tool arguments before execution"],"best_for":["MCP server developers integrating multiple tools with consistent validation patterns","AI assistant integrations that require tool discovery and invocation"],"limitations":["Tool names are fixed — no dynamic tool registration based on calendar structure","No tool versioning — breaking changes require server restart","Handler registration is synchronous — no async tool registration"],"requires":["@modelcontextprotocol/sdk package","tool handler functions that accept (name: string, args: unknown) and return Promise<ToolResult>"],"input_types":["tool name (string)","tool arguments (JSON object)"],"output_types":["ToolResult object with content array (text or error)"],"categories":["tool-use-integration"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-caldav-mcp__cap_9","uri":"capability://tool.use.integration.structured.json.response.formatting.for.mcp.protocol","name":"structured json response formatting for mcp protocol","description":"Formats all tool responses as structured JSON objects following the MCP protocol specification, with content arrays containing text or error messages. Success responses include relevant data (calendar list, event details, created event UID), while error responses include error messages and validation details. This structured format enables AI assistants to parse responses reliably and present results to users or use them in downstream logic.","intents":["Return tool results in a format that MCP clients can parse and process","Provide consistent error messages across all tools","Enable AI assistants to extract specific data from tool responses"],"best_for":["MCP server developers who need standardized response formatting","AI assistant integrations that parse tool responses programmatically"],"limitations":["Response format is fixed — no custom response schemas per tool","Large responses (many events) may exceed MCP message size limits","No streaming responses — all data returned in single response"],"requires":["@modelcontextprotocol/sdk ToolResult type","JSON serialization of calendar data"],"input_types":["tool execution results (calendars, events, UIDs)"],"output_types":["JSON object with content array (text or error)"],"categories":["tool-use-integration"],"confidence":0.5,"matches":0,"success_rate":0}],"trust":{"score":27,"verified":false,"data_access_risk":"high","permissions":["Node.js with ES2022 module support","CalDAV server URL, username, and password in environment variables","@modelcontextprotocol/sdk package","ts-caldav package for CalDAV client implementation","Valid CalDAV server credentials in environment variables","CalDAV server must support PROPFIND requests for calendar discovery","Valid CalDAV server credentials","startDate and endDate in ISO 8601 format (YYYY-MM-DD or RFC 3339)","CalDAV server must support REPORT requests with date-range filtering","Valid CalDAV server credentials with write permissions"],"failure_modes":["Stdio transport only — no HTTP/REST endpoint exposure, requires direct process spawning","Single CalDAV server per server instance — no multi-tenant support without running multiple processes","Environment variable-based auth only — no support for OAuth2 or token refresh mechanisms","No filtering or search — returns all calendars regardless of size or relevance","Metadata limited to what CalDAV server exposes — some servers may not include color or description fields","No pagination — large calendar lists returned as single response","Date range queries only — no free-text search or event filtering by title/description","Recurrence rule parsing depends on CalDAV server implementation — complex RRULE patterns may not expand fully","No pagination — large date ranges may return thousands of events in single response","RRULE validation is basic — complex recurrence patterns (e.g., 'every 2nd Tuesday of month') require manual RRULE syntax","builder identity is not verified yet","no observed match outcomes yet"],"rank_breakdown":{"adoption":0.05,"quality":0.3,"ecosystem":0.39999999999999997,"match_graph":0.25,"freshness":0.52,"weights":{"adoption":0.25,"quality":0.25,"ecosystem":0.15,"match_graph":0.23,"freshness":0.12}},"observed_outcomes":{"matches":0,"success_rate":0,"avg_confidence":0,"top_intents":[],"last_matched_at":null},"maintenance":{"status":"active","updated_at":"2026-06-17T09:51:02.371Z","last_scraped_at":"2026-05-03T14:00:15.503Z","last_commit":null},"community":{"stars":null,"forks":null,"weekly_downloads":null,"model_downloads":null,"model_likes":null}},"distribution":{"claim_url":"https://unfragile.ai/submit?claim=caldav-mcp","compare_url":"https://unfragile.ai/compare?artifact=caldav-mcp"}},"signature":"3HFPS3x3QNuWf9YHgrzOPLBjP1V+cA3nW/8MSMizqOcGgUSDPTlELIi6z32KrZvQUpgGKPpRrILySGxkps2WAQ==","signedAt":"2026-06-22T13:27:13.984Z","signedBy":"unfragile.ai","version":1},"_links":{"self":"https://unfragile.ai/api/v1/passport/caldav-mcp","artifact":"https://unfragile.ai/caldav-mcp","verify":"https://unfragile.ai/api/v1/verify?slug=caldav-mcp","publicKey":"https://unfragile.ai/api/v1/trust-passport-public-key","spec":"https://unfragile.ai/trust","schema":"https://unfragile.ai/schema.json","docs":"https://unfragile.ai/docs"}}