{
  "markdown": "<p align=\"center\">\n  <img src=\"assets/logo.svg\" width=\"120\" alt=\"iCloud Calendar MCP logo\">\n</p>\n\n<h1 align=\"center\">iCloud Calendar MCP</h1>\n\n<p align=\"center\">\n  An MCP server for managing iCloud Calendar.\n</p>\n\n<p align=\"center\">\n  <strong>English</strong> · <a href=\"docs/README.zh-CN.md\">简体中文</a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://www.npmjs.com/package/icloud-calendar-mcp\"><img alt=\"npm version\" src=\"https://img.shields.io/npm/v/icloud-calendar-mcp\"></a>\n  <a href=\"https://www.npmjs.com/package/icloud-calendar-mcp\"><img alt=\"npm downloads\" src=\"https://img.shields.io/npm/dm/icloud-calendar-mcp\"></a>\n  <a href=\"https://github.com/IceyWu/icloud-calendar-mcp/actions/workflows/ci.yml\"><img alt=\"CI status\" src=\"https://github.com/IceyWu/icloud-calendar-mcp/actions/workflows/ci.yml/badge.svg\"></a>\n  <a href=\"https://www.npmjs.com/package/icloud-calendar-mcp\"><img alt=\"Node.js version\" src=\"https://img.shields.io/node/v/icloud-calendar-mcp\"></a>\n  <a href=\"LICENSE\"><img alt=\"MIT license\" src=\"https://img.shields.io/npm/l/icloud-calendar-mcp\"></a>\n</p>\n\n## Setup\n\nRequirements:\n\n- Node.js 22.13 or later\n- Your Apple Account email\n- An Apple [app-specific password](https://support.apple.com/102654)\n\nAdd the server to your MCP client:\n\n```json\n{\n  \"mcpServers\": {\n    \"icloud-calendar\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"icloud-calendar-mcp\"],\n      \"env\": {\n        \"ICLOUD_USERNAME\": \"you@example.com\",\n        \"ICLOUD_APP_PASSWORD\": \"xxxx-xxxx-xxxx-xxxx\"\n      }\n    }\n  }\n}\n```\n\nUse an app-specific password, not your Apple Account password.\n\n## Tools\n\n| Tool             | Purpose                     |\n| ---------------- | --------------------------- |\n| `list_calendars` | List calendars              |\n| `list_events`    | List events in a time range |\n| `get_event`      | Get an event                |\n| `create_event`   | Create an event             |\n| `update_event`   | Update an event             |\n| `delete_event`   | Delete an event             |\n| `find_conflicts` | Find overlapping events     |\n| `free_busy`      | Return busy time ranges     |\n\nEvents can include time zones, all-day dates, recurrence rules, alarms, locations, descriptions, URLs, and attendees.\n\n## Example requests\n\nOnce the server is connected, you can ask your MCP client:\n\n> Show my calendars.\n\n> What is on my calendar next week in Asia/Shanghai time?\n\n> Add a project review to my Work calendar tomorrow from 2:00 PM to 3:00 PM, with a reminder 15 minutes before.\n\n> Do I have any conflicts on Friday between 9:00 AM and noon?\n\n> Move the project review to 4:00 PM and change the location to Meeting Room B.\n\n> Add an all-day event called “Company holiday” on October 1.\n\n> Delete the project review event.\n\nFor ambiguous requests, include the calendar, date, time, and time zone when possible.\n\n## Behavior\n\n- All-day event end dates are exclusive. A one-day event on August 18 uses `2026-08-18` to `2026-08-19`.\n- Create, update, and delete operations accept a `request_id` for safe retries.\n- Concurrent changes are detected with ETags.\n- Whole recurring series can be updated or deleted. Unsupported occurrence-level changes return an error instead of modifying the series.\n\nSee [tool contracts](docs/tool-contracts.md) for complete inputs, outputs, and error codes.\n\n## HTTP\n\nstdio is the default transport. Streamable HTTP is optional:\n\n```bash\nICLOUD_MCP_TRANSPORT=http \\\nICLOUD_MCP_HTTP_TOKEN='replace-with-a-long-random-token' \\\nICLOUD_MCP_HTTP_PORT=3000 \\\nnpx -y icloud-calendar-mcp\n```\n\nHTTP mode requires a bearer token and listens on loopback by default. See [security](docs/security.md) before exposing it through a proxy.\n\n## Development\n\n```bash\npnpm install\npnpm check\n```\n\nSee [architecture](docs/architecture.md), [contributing](CONTRIBUTING.md), and [releasing](docs/releasing.md).\n\n## License\n\n[MIT](LICENSE)\n",
  "bytes": 3863,
  "sha": "70abccc3a8404bf2d04205251bf968876be422f64a3e9902c7883132e0abce61",
  "repo_slug": "iceywu/icloud-calendar-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_iceywu_icloud_calendar_94be36aa/readme"
}