io.github.chrischall/apple-icloud-mcp
Unofficial: Apple Music, iCloud Calendar/Contacts/Mail, Apple Maps and WeatherKit, no Mac needed
Target client
run in your project directory
claude mcp add apple-icloud-mcp -e APPLE_TEAM_ID=<APPLE_TEAM_ID> -e APPLE_KEY_ID=<APPLE_KEY_ID> -e APPLE_PRIVATE_KEY=<APPLE_PRIVATE_KEY> -e APPLE_PRIVATE_KEY_PATH=<APPLE_PRIVATE_KEY_PATH> -e APPLE_MUSIC_KEY_ID=<APPLE_MUSIC_KEY_ID> -e APPLE_MUSIC_PRIVATE_KEY=<APPLE_MUSIC_PRIVATE_KEY> -e APPLE_MAPS_KEY_ID=<APPLE_MAPS_KEY_ID> -e APPLE_MAPS_PRIVATE_KEY=<APPLE_MAPS_PRIVATE_KEY> -e APPLE_WEATHERKIT_KEY_ID=<APPLE_WEATHERKIT_KEY_ID> -e APPLE_WEATHERKIT_PRIVATE_KEY=<APPLE_WEATHERKIT_PRIVATE_KEY> -e APPLE_WEATHERKIT_SERVICE_ID=<APPLE_WEATHERKIT_SERVICE_ID> -e APPLE_MUSIC_DEVELOPER_TOKEN=<APPLE_MUSIC_DEVELOPER_TOKEN> -e APPLE_MUSIC_USER_TOKEN=<APPLE_MUSIC_USER_TOKEN> -e APPLE_MUSIC_WEB_USER_TOKEN=<APPLE_MUSIC_WEB_USER_TOKEN> -e APPLE_MUSIC_WEB_DEVELOPER_TOKEN=<APPLE_MUSIC_WEB_DEVELOPER_TOKEN> -e APPLE_MUSIC_STOREFRONT=<APPLE_MUSIC_STOREFRONT> -e ICLOUD_USERNAME=<ICLOUD_USERNAME> -e ICLOUD_APP_PASSWORD=<ICLOUD_APP_PASSWORD> -e ICLOUD_MAIL_ADDRESS=<ICLOUD_MAIL_ADDRESS> -e ICLOUD_DEFAULT_CALENDAR=<ICLOUD_DEFAULT_CALENDAR> -e APPLE_WRITE_MODE=<APPLE_WRITE_MODE> -e APPLE_SERVICES=<APPLE_SERVICES> -e DISPLAY_TZ=<DISPLAY_TZ> -e APPLE_UNITS=<APPLE_UNITS> -e APPLE_STATE_CACHE=<APPLE_STATE_CACHE> -e APPLE_REQUEST_TIMEOUT_MS=<APPLE_REQUEST_TIMEOUT_MS> -e APPLE_DEBUG_LOG=<APPLE_DEBUG_LOG> -e MCP_CONFIRM_MODE=<MCP_CONFIRM_MODE> -e MCP_CONFIRM_ELICITATION=<MCP_CONFIRM_ELICITATION> -e MCP_CONFIRM_TTL_SECONDS=<MCP_CONFIRM_TTL_SECONDS> -e MCP_CONFIRM_SECRET=<MCP_CONFIRM_SECRET> -- npx -y apple-icloud-mcp
setup guides: Claude Code Claude Desktop Cursor VS Code Zed Windsurf Cline Gemini CLI Grok LangChain
Adds it for this project only. Append --scope user to make it available everywhere. Claude Code docs
This listing does not declare its tools. Connect the server and your client will discover them on the handshake.