{"_id":"@dvcrn/caldav-mcp","_rev":"3-b5566641a6fd42f696dbb142245f736c","name":"@dvcrn/caldav-mcp","dist-tags":{"latest":"0.8.1"},"versions":{"0.4.0":{"name":"@dvcrn/caldav-mcp","version":"0.4.0","author":"Dominik Grusemann","license":"MIT","_id":"@dvcrn/caldav-mcp@0.4.0","maintainers":[{"name":"dvcrn","email":"npm@davemail.io"}],"homepage":"https://github.com/dominik1001/caldav-mcp#readme","bugs":{"url":"https://github.com/dominik1001/caldav-mcp/issues"},"bin":{"caldav-mcp":"dist/index.js"},"dist":{"shasum":"3cbd487d8c621dd1e3820b174583c9424ec56ea1","tarball":"https://registry.npmjs.org/@dvcrn/caldav-mcp/-/caldav-mcp-0.4.0.tgz","fileCount":9,"integrity":"sha512-du3Ds6UisKCNT7cvAEuA+rywAFcGfOyu9wq5b26uCF/iH2Hr+nUqq2tKk+/YVpi5S4wt7nucBvnVryophg1W7Q==","signatures":[{"sig":"MEYCIQCCiUguOJX5XCb1h3wxyJ5fMrepGxKOc4CAbuASPlNvBwIhAN/p8UtgItqL8tSgVrotg9i2UIzILQpCUeM0oslRgOs9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12609},"main":"dist/index.js","type":"module","shasum":"3cbd487d8c621dd1e3820b174583c9424ec56ea1","engines":{"npm":">=9.0.0","node":">=18.0.0"},"scripts":{"dev":"tsx --watch --env-file=.env src/index.ts","knip":"knip","test":"vitest run","build":"tsc && shx chmod +x dist/*.js","check":"biome check .","watch":"tsc --watch","check:ci":"biome ci .","validate":"npm run check && npm test && npm run build","check:fix":"biome check --write .","test:watch":"vitest","test:coverage":"vitest run --coverage","semantic-release":"semantic-release"},"_npmUser":{"name":"dvcrn","email":"npm@davemail.io"},"_integrity":"sha512-du3Ds6UisKCNT7cvAEuA+rywAFcGfOyu9wq5b26uCF/iH2Hr+nUqq2tKk+/YVpi5S4wt7nucBvnVryophg1W7Q==","repository":{"url":"https://github.com/dominik1001/caldav-mcp.git","type":"git"},"_npmVersion":"10.8.3","description":"A CalDAV client using Model Context Protocol (MCP) to expose calendar operations as tools for AI assistants.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^3.24.1","ts-caldav":"^0.2.5","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.4.0","tsx":"^4.21.0","knip":"^5.83.1","husky":"^9.1.7","vitest":"^3.2.4","typescript":"^5.9.3","@types/node":"^24.10.13","@biomejs/biome":"2.3.14","@commitlint/cli":"^20.4.1","semantic-release":"^25.0.3","@vitest/coverage-v8":"^3.2.4","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.4","@semantic-release/github":"^12.0.5","@semantic-release/changelog":"^6.0.3","@commitlint/config-conventional":"^20.4.1"},"_npmOperationalInternal":{"tmp":"tmp/caldav-mcp_0.4.0_1775213212025_0.3288545637345235","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@dvcrn/caldav-mcp","version":"0.4.1","author":"Dominik Grusemann","license":"MIT","_id":"@dvcrn/caldav-mcp@0.4.1","maintainers":[{"name":"dvcrn","email":"npm@davemail.io"}],"homepage":"https://github.com/dominik1001/caldav-mcp#readme","bugs":{"url":"https://github.com/dominik1001/caldav-mcp/issues"},"bin":{"caldav-mcp":"dist/index.js"},"dist":{"shasum":"75b59169783608d93df6a449081d3cdc32a5ef1e","tarball":"https://registry.npmjs.org/@dvcrn/caldav-mcp/-/caldav-mcp-0.4.1.tgz","fileCount":9,"integrity":"sha512-yp931lYV0BKlOdV8WrJ+Z4iK2VKy7D9arCF2VFRpMTSnEmXC/bX1hnyZZS35ZHlefOMGNsbi3dM5qpCpSEfu5g==","signatures":[{"sig":"MEUCIHEM2sBBWF0sTuZFLD7C99MDUYqucRPKB6s3tSUpxj8uAiEAkkaDc6WtG3ijR1BD9kPtUxlCpErav18VKfML0pmPPkw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12705},"main":"dist/index.js","type":"module","shasum":"75b59169783608d93df6a449081d3cdc32a5ef1e","engines":{"npm":">=9.0.0","node":">=18.0.0"},"scripts":{"dev":"tsx --watch --env-file=.env src/index.ts","knip":"knip","test":"vitest run","build":"tsc && shx chmod +x dist/*.js","check":"biome check .","watch":"tsc --watch","check:ci":"biome ci .","validate":"npm run check && npm test && npm run build","check:fix":"biome check --write .","test:watch":"vitest","test:coverage":"vitest run --coverage","semantic-release":"semantic-release"},"_npmUser":{"name":"dvcrn","email":"npm@davemail.io"},"_integrity":"sha512-yp931lYV0BKlOdV8WrJ+Z4iK2VKy7D9arCF2VFRpMTSnEmXC/bX1hnyZZS35ZHlefOMGNsbi3dM5qpCpSEfu5g==","repository":{"url":"https://github.com/dominik1001/caldav-mcp.git","type":"git"},"_npmVersion":"10.8.3","description":"A CalDAV client using Model Context Protocol (MCP) to expose calendar operations as tools for AI assistants.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^3.24.1","ts-caldav":"^0.2.5","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.4.0","tsx":"^4.21.0","knip":"^5.83.1","husky":"^9.1.7","vitest":"^3.2.4","typescript":"^5.9.3","@types/node":"^24.10.13","@biomejs/biome":"2.3.14","@commitlint/cli":"^20.4.1","semantic-release":"^25.0.3","@vitest/coverage-v8":"^3.2.4","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.4","@semantic-release/github":"^12.0.5","@semantic-release/changelog":"^6.0.3","@commitlint/config-conventional":"^20.4.1"},"_npmOperationalInternal":{"tmp":"tmp/caldav-mcp_0.4.1_1775220253462_0.8824554597835081","host":"s3://npm-registry-packages-npm-production"}},"0.8.1":{"name":"@dvcrn/caldav-mcp","description":"A CalDAV client using Model Context Protocol (MCP) to expose calendar operations as tools for AI assistants.","version":"0.8.1","main":"dist/index.js","type":"module","bin":{"caldav-mcp":"dist/index.js"},"scripts":{"build":"tsc && shx chmod +x dist/*.js","dev":"tsx --watch --env-file=.env src/index.ts","test":"vitest run","test:watch":"vitest","test:coverage":"vitest run --coverage","check":"biome check .","check:fix":"biome check --write .","check:ci":"biome ci .","docs":"tsx scripts/gen-tool-docs.ts","docs:check":"tsx scripts/gen-tool-docs.ts --check","validate":"npm run check && npm test && npm run knip && npm run docs:check && npm run build","smoke":"npm run build && tsx --env-file=.env scripts/smoke.ts","smoke:agent":"npm run build && bash scripts/smoke-agent.sh","watch":"tsc --watch","semantic-release":"semantic-release","knip":"knip"},"repository":{"type":"git","url":"git+https://github.com/dominik1001/caldav-mcp.git"},"bugs":{"url":"https://github.com/dominik1001/caldav-mcp/issues"},"homepage":"https://github.com/dominik1001/caldav-mcp#readme","author":{"name":"Dominik Grusemann"},"license":"MIT","engines":{"node":">=18.0.0","npm":">=9.0.0"},"dependencies":{"@modelcontextprotocol/sdk":"^1.26.0","ts-caldav":"^0.3.6","zod":"^4.4.3"},"devDependencies":{"@biomejs/biome":"^2.4.14","@commitlint/cli":"^21.0.0","@commitlint/config-conventional":"^21.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/git":"^10.0.1","@semantic-release/github":"^12.0.5","@semantic-release/npm":"^13.1.4","@types/node":"^25.6.2","@vitest/coverage-v8":"^4.1.5","knip":"^6.12.1","lefthook":"^2.1.6","semantic-release":"^25.0.3","shx":"^0.4.0","tsx":"^4.21.0","typescript":"^6.0.3","vitest":"^4.1.5"},"gitHead":"15ab40f1242e4fde96349a28a8855ead1f17715d","_id":"@dvcrn/caldav-mcp@0.8.1","_nodeVersion":"24.15.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-gGUN2qHMZT6nsQFO0a6MLzXT+7e0tcYZV6gPysPrkOh2tWo5BhEnettoUKzodL8z2DS+tBsLOGxLbTWVbEuIvg==","shasum":"0c1b385b9ae2ae32e1f8bb402acdad24808fe41a","tarball":"https://registry.npmjs.org/@dvcrn/caldav-mcp/-/caldav-mcp-0.8.1.tgz","fileCount":9,"unpackedSize":18082,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCsnpJ0Fv4OHCSe7MS7ntRSKFAsXnjfBzBD7jw6BOIZrgIhALY1LqsKI2m/M1oAyR1qDCjNn6AJtZ5/E68hCxSD7F5B"}]},"_npmUser":{"name":"dvcrn","email":"npm@davemail.io"},"directories":{},"maintainers":[{"name":"dvcrn","email":"npm@davemail.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/caldav-mcp_0.8.1_1779342220294_0.5110996104958276"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-03T10:46:51.894Z","modified":"2026-05-21T05:43:40.547Z","0.4.0":"2026-04-03T10:46:52.175Z","0.4.1":"2026-04-03T12:44:13.624Z","0.8.1":"2026-05-21T05:43:40.467Z"},"bugs":{"url":"https://github.com/dominik1001/caldav-mcp/issues"},"author":{"name":"Dominik Grusemann"},"license":"MIT","homepage":"https://github.com/dominik1001/caldav-mcp#readme","repository":{"type":"git","url":"git+https://github.com/dominik1001/caldav-mcp.git"},"description":"A CalDAV client using Model Context Protocol (MCP) to expose calendar operations as tools for AI assistants.","maintainers":[{"name":"dvcrn","email":"npm@davemail.io"}],"readme":"# caldav-mcp\n\n<div align=\"center\">\n\n🗓️ A CalDAV Model Context Protocol (MCP) server to expose calendar operations as tools for AI assistants.\n\n[![Release](https://github.com/dominik1001/caldav-mcp/actions/workflows/release.yml/badge.svg)](https://github.com/dominik1001/caldav-mcp/actions/workflows/release.yml)\n[![npm version](https://badge.fury.io/js/caldav-mcp.svg)](https://www.npmjs.com/package/caldav-mcp)\n[![MIT License](https://img.shields.io/badge/License-MIT-green.svg)](https://choosealicense.com/licenses/mit/)\n[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier)\n[![MCP Compatible](https://img.shields.io/badge/MCP-Compatible-purple.svg)](https://modelcontextprotocol.io)\n[![semantic-release: angular](https://img.shields.io/badge/semantic--release-angular-e10079?logo=semantic-release)](https://github.com/semantic-release/semantic-release)\n\n</div>\n\n## ✨ Features\n\n- Connect to CalDAV servers\n- List calendars\n- List calendar events within a specific timeframe\n- Create calendar events\n- Update calendar events\n- Delete calendar events by UID\n\n## Setup\n\n```\n{\n  \"mcpServers\": {\n    ...,\n    \"calendar\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"caldav-mcp\"\n      ],\n      \"env\": {\n        \"CALDAV_BASE_URL\": \"<CalDAV server URL>\",\n        \"CALDAV_USERNAME\": \"<CalDAV username>\",\n        \"CALDAV_PASSWORD\": \"<CalDAV password>\"\n      }\n    }\n  }\n}\n```\n\n## Development\n\n### Quick Start\n\nRun the MCP server in development mode with auto-reload:\n```bash\nnpm run dev\n```\n\nThis will run the TypeScript code directly with watch mode and automatically load environment variables from `.env`.\n\n### Manual Build\n\nAlternatively, you can compile TypeScript to JavaScript and run it:\n\n1. Compile:\n```bash\nnpx tsc\n```\n\n2. Run:\n```bash\nnode dist/index.js\n```\n\n## Available Tools\n\n<!-- TOOLS:START - generated by scripts/gen-tool-docs.ts -->\n### list-calendars\n\nList all calendars returning both name and URL\n\nParameters: none\n\nReturns:\n- List of all available calendars\n\n### list-events\n\nList all events between start and end date in the calendar specified by its URL\n\nParameters:\n- `start`: string — Start date (ISO 8601)\n- `end`: string — End date (ISO 8601)\n- `calendarUrl`: string\n\nReturns:\n- A list of events that fall within the given timeframe, each containing `uid`, `summary`, `start`, `end`, and optionally `description` and `location`\n\n### create-event\n\nCreates an event in the calendar specified by its URL\n\nParameters:\n- `summary`: string\n- `start`: string — Start datetime (ISO 8601)\n- `end`: string — End datetime (ISO 8601)\n- `calendarUrl`: string\n- `wholeDay`: boolean (optional) — Create as a whole-day event\n- `description`: string (optional)\n- `location`: string (optional)\n- `recurrenceRule`: object (optional)\n  - `freq`: enum (`DAILY` | `WEEKLY` | `MONTHLY` | `YEARLY`) (optional)\n  - `interval`: number (optional)\n  - `count`: number (optional)\n  - `until`: string (optional)\n  - `byday`: array of string (optional)\n  - `bymonthday`: array of number (optional)\n  - `bymonth`: array of number (optional)\n\nReturns:\n- The unique ID of the created event\n\n### update-event\n\nUpdates an existing event in the calendar specified by its URL. Only provided fields are changed.\n\nParameters:\n- `uid`: string — Unique identifier of the event to update (obtained from list-events)\n- `calendarUrl`: string\n- `summary`: string (optional)\n- `start`: string (optional)\n- `end`: string (optional)\n- `wholeDay`: boolean (optional) — Update whether this is a whole-day event\n- `description`: string (optional)\n- `location`: string (optional)\n- `recurrenceRule`: object (optional)\n  - `freq`: enum (`DAILY` | `WEEKLY` | `MONTHLY` | `YEARLY`) (optional)\n  - `interval`: number (optional)\n  - `count`: number (optional)\n  - `until`: string (optional)\n  - `byday`: array of string (optional)\n  - `bymonthday`: array of number (optional)\n  - `bymonth`: array of number (optional)\n\nReturns:\n- The unique ID of the updated event\n\n### delete-event\n\nDeletes an event in the calendar specified by its URL\n\nParameters:\n- `uid`: string — Unique identifier of the event to delete (obtained from list-events)\n- `calendarUrl`: string\n\nReturns:\n- Confirmation message when the event is successfully deleted\n<!-- TOOLS:END -->\n\n## License\n\nMIT","readmeFilename":"README.md"}