apple-icloud-mcp
io.github.chrischall/apple-icloud-mcp
About apple-icloud-mcp
apple-icloud-mcp is an MCP server published by the GitHub account chrischall. Unofficial: Apple Music, iCloud Calendar/Contacts/Mail, Apple Maps and WeatherKit, no Mac needed
It runs on your own machine: your AI client starts it from the npm package apple-icloud-mcp at version 0.3.7.
It asks for 10 secrets: APPLE_PRIVATE_KEY, APPLE_MUSIC_PRIVATE_KEY, APPLE_MAPS_PRIVATE_KEY, APPLE_WEATHERKIT_PRIVATE_KEY, APPLE_MUSIC_DEVELOPER_TOKEN, APPLE_MUSIC_USER_TOKEN, APPLE_MUSIC_WEB_USER_TOKEN, APPLE_MUSIC_WEB_DEVELOPER_TOKEN, ICLOUD_APP_PASSWORD and MCP_CONFIRM_SECRET. Give it a key with the least access that still works.
Version 0.3.7 was published on 20 October 2026, and the source code is public, so you can read it before installing.
Written from the registry entry. 9 automated checks on the registry entry and the package code: 7 pass, 1 warn, 0 fail, 1 info. How we check.
What it asks for
| Variable | Required | Secret | Description |
|---|---|---|---|
APPLE_TEAM_ID | No | No | Your Apple Developer Team ID (10 characters). Needed for Apple Music (official API), Apple Maps and WeatherKit. |
APPLE_KEY_ID | No | No | Key ID of a private key created in Certificates, Identifiers & Profiles → Keys with Media Services (MusicKit), MapKit JS and/or WeatherKit enabled. |
APPLE_PRIVATE_KEY | No | Yes | Contents of that key's .p8 file (PEM; one-line values with \n escapes and base64 are accepted). |
APPLE_PRIVATE_KEY_PATH | No | No | Local installs only: a path to the .p8 file instead of APPLE_PRIVATE_KEY. |
APPLE_MUSIC_KEY_ID | No | No | Optional per-service override of APPLE_KEY_ID for Apple Music (pair with APPLE_MUSIC_PRIVATE_KEY). |
APPLE_MUSIC_PRIVATE_KEY | No | Yes | Optional per-service override of APPLE_PRIVATE_KEY for Apple Music. |
APPLE_MAPS_KEY_ID | No | No | Optional per-service override of APPLE_KEY_ID for Apple Maps. |
APPLE_MAPS_PRIVATE_KEY | No | Yes | Optional per-service override of APPLE_PRIVATE_KEY for Apple Maps. |
APPLE_WEATHERKIT_KEY_ID | No | No | Optional per-service override of APPLE_KEY_ID for WeatherKit. |
APPLE_WEATHERKIT_PRIVATE_KEY | No | Yes | Optional per-service override of APPLE_PRIVATE_KEY for WeatherKit. |
APPLE_WEATHERKIT_SERVICE_ID | No | No | WeatherKit only: the Services ID registered for WeatherKit (e.g. com.example.weather). |
APPLE_MUSIC_DEVELOPER_TOKEN | No | Yes | Optional: a pre-minted Apple Music developer token (JWT) instead of signing one from the key above. |
APPLE_MUSIC_USER_TOKEN | No | Yes | Music User Token for your library (official API), from a one-time MusicKit sign-in: `npx apple-icloud-mcp music-auth`. Without the Apple Developer key, ask the owner for a developer token (music-auth --print-developer-token) and run it with APPLE_MUSIC_DEVELOPER_TOKEN set. Lasts ~6 months. |
APPLE_MUSIC_WEB_USER_TOKEN | No | Yes | Opt-in web-player mode (no developer account needed; unlocks rename/delete/remove/reorder): the media-user-token cookie from a signed-in music.apple.com tab. |
APPLE_MUSIC_WEB_DEVELOPER_TOKEN | No | Yes | Optional override for the web-player developer token (normally read automatically from music.apple.com). |
APPLE_MUSIC_STOREFRONT | No | No | Two-letter Apple Music storefront (e.g. us, gb). Default: your account's storefront, else us. |
ICLOUD_USERNAME | No | No | Your Apple ID email, for iCloud Calendar, Contacts and Mail. |
ICLOUD_APP_PASSWORD | No | Yes | An app-specific password from appleid.apple.com → Sign-In and Security → App-Specific Passwords (NOT your Apple ID password). |
ICLOUD_MAIL_ADDRESS | No | No | Your @icloud.com address, only if your Apple ID email is not an iCloud address (needed for Mail). |
ICLOUD_DEFAULT_CALENDAR | No | No | Calendar new events go to when none is named (default: the first writable event calendar). |
APPLE_WRITE_MODE | No | No | "none" = read-only tools; "additive" = also create/append, never modify, delete or send; "all" = everything (default). Unrecognized values fail closed to "none". |
APPLE_SERVICES | No | No | Comma-separated services to enable (music, calendar, contacts, mail, maps, weather, itunes). Default: all. |
DISPLAY_TZ | No | No | IANA time zone (e.g. America/New_York) for displayed times and for dates you give without an offset. Set this on a hosted server, which runs in UTC. |
APPLE_UNITS | No | No | "metric" (default) or "imperial" units for weather (Maps distances always show both). |
APPLE_STATE_CACHE | No | No | Set to false to write nothing under $MCP_DATA_DIR/.apple-icloud-mcp: no web-player token or iCloud discovery cache, and the rejected-password latch and spent confirmation tokens then last only as long as the process. |
APPLE_REQUEST_TIMEOUT_MS | No | No | Per-request timeout in milliseconds (default 30000). |
APPLE_DEBUG_LOG | No | No | Set to 1 to log every upstream request line to stderr (credentials redacted). |
MCP_CONFIRM_MODE | No | No | How confirm-gated writes (send mail, deletes, removing tracks, invitations) behave on a client with no prompt, like claude.ai: "ask-user" (default: preview + confirmToken, the model must get your OK), "auto", or "refuse". Unknown values mean refuse. |
MCP_CONFIRM_ELICITATION | No | No | "off" never shows a confirmation prompt, so every client gets the MCP_CONFIRM_MODE flow. Set it for a client that says it can prompt but never does (the gated call hangs, e.g. opencode 2.0.x). Any other value stays "on" (with a stderr warning). |
MCP_CONFIRM_TTL_SECONDS | No | No | Lifetime of a confirmToken in seconds (default 600). |
MCP_CONFIRM_SECRET | No | Yes | Signing key for confirmTokens. Random per process by default; set it so a token issued just before a restart or redeploy still works (spent tokens are recorded on disk, so none can be replayed). |
Checks
| Check | Result | Detail |
|---|---|---|
| Source repository linked | Pass | https://github.com/chrischall/apple-icloud-mcp |
| Version pinned | Pass | Every package has an explicit version |
| Secrets requested | Warn | Asks for 10 secrets: APPLE_PRIVATE_KEY, APPLE_MUSIC_PRIVATE_KEY, APPLE_MAPS_PRIVATE_KEY, APPLE_WEATHERKIT_PRIVATE_KEY, APPLE_MUSIC_DEVELOPER_TOKEN, APPLE_MUSIC_USER_TOKEN, APPLE_MUSIC_WEB_USER_TOKEN, APPLE_MUSIC_WEB_DEVELOPER_TOKEN, ICLOUD_APP_PASSWORD, MCP_CONFIRM_SECRET |
| Known package registry | Pass | All packages come from npm, PyPI, OCI, NuGet or MCPB |
| Namespace ownership | Info | Name verified via GitHub account chrischall |
| Registry text aimed at the AI | Pass | Description and settings contain no hidden characters or instructions to the AI |
| Install scripts | Pass | apple-icloud-mcp@0.3.7 runs nothing at install |
| Code red flags | Pass | Read 88 files in apple-icloud-mcp@0.3.7: no obfuscation, encoded execution, credential reads or data-collection endpoints found |
| Text aimed at the AI | Pass | No hidden characters or instructions to the AI in 88 files, including comments and the README |
Popularity & health: 47 / 100
Worked out from public numbers and our own checks, not from user reviews or ratings. It says how used and how looked-after a server is, not whether it is safe.
0 forks, 57 merged pull requests. Sources: GitHub, npm, PyPI (pypistats.org) and Hacker News (Algolia), fetched 2026-10-31.
What people say
No Hacker News threads link to its source code.
Look further: search Reddit, search Hacker News, read its GitHub issues. These are not reviews we checked.
Facts
| Registry name | io.github.chrischall/apple-icloud-mcp |
|---|---|
| Publisher | GitHub account chrischall |
| How the name is verified | Name verified via GitHub account chrischall. The registry ties the name prefix to that account or domain; it does not check the code. |
| Type | Local: runs on your machine from a package |
| Packages | npm apple-icloud-mcp 0.3.7 (stdio) |
| Version | 0.3.7 |
| Published | |
| Last updated | |
| Source repository | https://github.com/chrischall/apple-icloud-mcp |
| Website | None linked |
| Category | AI & media generation (assigned by keyword rule, not by hand) |
Related servers in AI & media generation
- AIquila — Nextcloud MCP Server8/8Nextcloud MCP server — 345 tools: files, calendar, contacts, mail,…
Unofficial Apple Music for macOS6/7Ask for a playlist. Get a real one, playing in Apple Music — no…- Sprixen3/3AI game assets for agents: consistent sprites, 2D animations,…
- whosaid7/7Local speaker-attributed transcription and meeting search for Apple…
ModCard3/3Find, personalize, share, and mail animated greeting cards with…- mcp-apple-music6/7Apple Music MCP server — search catalog, manage playlists, and…