# 安装 io.github.chrischall/apple-icloud-mcp

- 类型: MCP 工具
- 说明: Unofficial: Apple Music, iCloud Calendar/Contacts/Mail, Apple Maps and WeatherKit, no Mac needed
- 仓库: https://github.com/chrischall/apple-icloud-mcp

## 方式一 · 一键代装（复制提示词让 AI 代劳）

### Claude Code
```
请帮我安装 askskill 上的 "io.github.chrischall/apple-icloud-mcp" MCP 服务：
执行：claude mcp add 'io-github-chrischall-apple-icloud-mcp' -- npx -y apple-icloud-mcp
```

### Codex
```
请帮我安装 askskill 上的 "io.github.chrischall/apple-icloud-mcp" MCP 服务：
在 ~/.codex/config.toml 中添加：
[mcp_servers.io-github-chrischall-apple-icloud-mcp]
command = "npx"
args = ["-y","apple-icloud-mcp"]
然后重启 Codex 生效
```

### Cursor
```
请帮我安装 askskill 上的 "io.github.chrischall/apple-icloud-mcp" MCP 服务：
在 .cursor/mcp.json 的 "mcpServers" 中添加：
"io-github-chrischall-apple-icloud-mcp": { "command": "npx", "args": ["-y","apple-icloud-mcp"] }
然后在 Cursor 设置 > MCP 中启用
```

## 方式二 · 命令行安装（原生命令与配置）

### Claude Code
```bash
claude mcp add --env APPLE_TEAM_ID=YOUR_VALUE --env APPLE_KEY_ID=YOUR_VALUE --env APPLE_PRIVATE_KEY=YOUR_VALUE --env APPLE_PRIVATE_KEY_PATH=YOUR_VALUE --env APPLE_MUSIC_KEY_ID=YOUR_VALUE --env APPLE_MUSIC_PRIVATE_KEY=YOUR_VALUE --env APPLE_MAPS_KEY_ID=YOUR_VALUE --env APPLE_MAPS_PRIVATE_KEY=YOUR_VALUE --env APPLE_WEATHERKIT_KEY_ID=YOUR_VALUE --env APPLE_WEATHERKIT_PRIVATE_KEY=YOUR_VALUE --env APPLE_WEATHERKIT_SERVICE_ID=YOUR_VALUE --env APPLE_MUSIC_DEVELOPER_TOKEN=YOUR_VALUE --env APPLE_MUSIC_USER_TOKEN=YOUR_VALUE --env APPLE_MUSIC_WEB_USER_TOKEN=YOUR_VALUE --env APPLE_MUSIC_WEB_DEVELOPER_TOKEN=YOUR_VALUE --env APPLE_MUSIC_STOREFRONT=YOUR_VALUE --env ICLOUD_USERNAME=YOUR_VALUE --env ICLOUD_APP_PASSWORD=YOUR_VALUE --env ICLOUD_MAIL_ADDRESS=YOUR_VALUE --env ICLOUD_DEFAULT_CALENDAR=YOUR_VALUE --env APPLE_WRITE_MODE=YOUR_VALUE --env APPLE_SERVICES=YOUR_VALUE --env DISPLAY_TZ=YOUR_VALUE --env APPLE_UNITS=YOUR_VALUE --env APPLE_STATE_CACHE=YOUR_VALUE --env APPLE_REQUEST_TIMEOUT_MS=YOUR_VALUE --env APPLE_DEBUG_LOG=YOUR_VALUE --env MCP_CONFIRM_MODE=YOUR_VALUE --env MCP_CONFIRM_ELICITATION=YOUR_VALUE --env MCP_CONFIRM_TTL_SECONDS=YOUR_VALUE --env MCP_CONFIRM_SECRET=YOUR_VALUE --transport stdio io-github-chrischall-apple-icloud-mcp -- npx -y apple-icloud-mcp
```
需要环境变量：APPLE_TEAM_ID, APPLE_KEY_ID, APPLE_PRIVATE_KEY, APPLE_PRIVATE_KEY_PATH, APPLE_MUSIC_KEY_ID, APPLE_MUSIC_PRIVATE_KEY, APPLE_MAPS_KEY_ID, APPLE_MAPS_PRIVATE_KEY, APPLE_WEATHERKIT_KEY_ID, APPLE_WEATHERKIT_PRIVATE_KEY, APPLE_WEATHERKIT_SERVICE_ID, APPLE_MUSIC_DEVELOPER_TOKEN, APPLE_MUSIC_USER_TOKEN, APPLE_MUSIC_WEB_USER_TOKEN, APPLE_MUSIC_WEB_DEVELOPER_TOKEN, APPLE_MUSIC_STOREFRONT, ICLOUD_USERNAME, ICLOUD_APP_PASSWORD, ICLOUD_MAIL_ADDRESS, ICLOUD_DEFAULT_CALENDAR, APPLE_WRITE_MODE, APPLE_SERVICES, DISPLAY_TZ, APPLE_UNITS, APPLE_STATE_CACHE, APPLE_REQUEST_TIMEOUT_MS, APPLE_DEBUG_LOG, MCP_CONFIRM_MODE, MCP_CONFIRM_ELICITATION, MCP_CONFIRM_TTL_SECONDS, MCP_CONFIRM_SECRET

### Codex
```bash
codex mcp add --env APPLE_TEAM_ID=YOUR_VALUE --env APPLE_KEY_ID=YOUR_VALUE --env APPLE_PRIVATE_KEY=YOUR_VALUE --env APPLE_PRIVATE_KEY_PATH=YOUR_VALUE --env APPLE_MUSIC_KEY_ID=YOUR_VALUE --env APPLE_MUSIC_PRIVATE_KEY=YOUR_VALUE --env APPLE_MAPS_KEY_ID=YOUR_VALUE --env APPLE_MAPS_PRIVATE_KEY=YOUR_VALUE --env APPLE_WEATHERKIT_KEY_ID=YOUR_VALUE --env APPLE_WEATHERKIT_PRIVATE_KEY=YOUR_VALUE --env APPLE_WEATHERKIT_SERVICE_ID=YOUR_VALUE --env APPLE_MUSIC_DEVELOPER_TOKEN=YOUR_VALUE --env APPLE_MUSIC_USER_TOKEN=YOUR_VALUE --env APPLE_MUSIC_WEB_USER_TOKEN=YOUR_VALUE --env APPLE_MUSIC_WEB_DEVELOPER_TOKEN=YOUR_VALUE --env APPLE_MUSIC_STOREFRONT=YOUR_VALUE --env ICLOUD_USERNAME=YOUR_VALUE --env ICLOUD_APP_PASSWORD=YOUR_VALUE --env ICLOUD_MAIL_ADDRESS=YOUR_VALUE --env ICLOUD_DEFAULT_CALENDAR=YOUR_VALUE --env APPLE_WRITE_MODE=YOUR_VALUE --env APPLE_SERVICES=YOUR_VALUE --env DISPLAY_TZ=YOUR_VALUE --env APPLE_UNITS=YOUR_VALUE --env APPLE_STATE_CACHE=YOUR_VALUE --env APPLE_REQUEST_TIMEOUT_MS=YOUR_VALUE --env APPLE_DEBUG_LOG=YOUR_VALUE --env MCP_CONFIRM_MODE=YOUR_VALUE --env MCP_CONFIRM_ELICITATION=YOUR_VALUE --env MCP_CONFIRM_TTL_SECONDS=YOUR_VALUE --env MCP_CONFIRM_SECRET=YOUR_VALUE io-github-chrischall-apple-icloud-mcp -- npx -y apple-icloud-mcp
```
配置文件 ~/.codex/config.toml：
```toml
[mcp_servers.io-github-chrischall-apple-icloud-mcp]
command = "npx"
args = ["-y","apple-icloud-mcp"]

[mcp_servers.io-github-chrischall-apple-icloud-mcp.env]
APPLE_TEAM_ID = "YOUR_VALUE"
APPLE_KEY_ID = "YOUR_VALUE"
APPLE_PRIVATE_KEY = "YOUR_VALUE"
APPLE_PRIVATE_KEY_PATH = "YOUR_VALUE"
APPLE_MUSIC_KEY_ID = "YOUR_VALUE"
APPLE_MUSIC_PRIVATE_KEY = "YOUR_VALUE"
APPLE_MAPS_KEY_ID = "YOUR_VALUE"
APPLE_MAPS_PRIVATE_KEY = "YOUR_VALUE"
APPLE_WEATHERKIT_KEY_ID = "YOUR_VALUE"
APPLE_WEATHERKIT_PRIVATE_KEY = "YOUR_VALUE"
APPLE_WEATHERKIT_SERVICE_ID = "YOUR_VALUE"
APPLE_MUSIC_DEVELOPER_TOKEN = "YOUR_VALUE"
APPLE_MUSIC_USER_TOKEN = "YOUR_VALUE"
APPLE_MUSIC_WEB_USER_TOKEN = "YOUR_VALUE"
APPLE_MUSIC_WEB_DEVELOPER_TOKEN = "YOUR_VALUE"
APPLE_MUSIC_STOREFRONT = "YOUR_VALUE"
ICLOUD_USERNAME = "YOUR_VALUE"
ICLOUD_APP_PASSWORD = "YOUR_VALUE"
ICLOUD_MAIL_ADDRESS = "YOUR_VALUE"
ICLOUD_DEFAULT_CALENDAR = "YOUR_VALUE"
APPLE_WRITE_MODE = "YOUR_VALUE"
APPLE_SERVICES = "YOUR_VALUE"
DISPLAY_TZ = "YOUR_VALUE"
APPLE_UNITS = "YOUR_VALUE"
APPLE_STATE_CACHE = "YOUR_VALUE"
APPLE_REQUEST_TIMEOUT_MS = "YOUR_VALUE"
APPLE_DEBUG_LOG = "YOUR_VALUE"
MCP_CONFIRM_MODE = "YOUR_VALUE"
MCP_CONFIRM_ELICITATION = "YOUR_VALUE"
MCP_CONFIRM_TTL_SECONDS = "YOUR_VALUE"
MCP_CONFIRM_SECRET = "YOUR_VALUE"
```
需要环境变量：APPLE_TEAM_ID, APPLE_KEY_ID, APPLE_PRIVATE_KEY, APPLE_PRIVATE_KEY_PATH, APPLE_MUSIC_KEY_ID, APPLE_MUSIC_PRIVATE_KEY, APPLE_MAPS_KEY_ID, APPLE_MAPS_PRIVATE_KEY, APPLE_WEATHERKIT_KEY_ID, APPLE_WEATHERKIT_PRIVATE_KEY, APPLE_WEATHERKIT_SERVICE_ID, APPLE_MUSIC_DEVELOPER_TOKEN, APPLE_MUSIC_USER_TOKEN, APPLE_MUSIC_WEB_USER_TOKEN, APPLE_MUSIC_WEB_DEVELOPER_TOKEN, APPLE_MUSIC_STOREFRONT, ICLOUD_USERNAME, ICLOUD_APP_PASSWORD, ICLOUD_MAIL_ADDRESS, ICLOUD_DEFAULT_CALENDAR, APPLE_WRITE_MODE, APPLE_SERVICES, DISPLAY_TZ, APPLE_UNITS, APPLE_STATE_CACHE, APPLE_REQUEST_TIMEOUT_MS, APPLE_DEBUG_LOG, MCP_CONFIRM_MODE, MCP_CONFIRM_ELICITATION, MCP_CONFIRM_TTL_SECONDS, MCP_CONFIRM_SECRET

### Cursor
配置文件 .cursor/mcp.json：
```json
{
  "mcpServers": {
    "io-github-chrischall-apple-icloud-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "apple-icloud-mcp"
      ],
      "env": {
        "APPLE_TEAM_ID": "YOUR_VALUE",
        "APPLE_KEY_ID": "YOUR_VALUE",
        "APPLE_PRIVATE_KEY": "YOUR_VALUE",
        "APPLE_PRIVATE_KEY_PATH": "YOUR_VALUE",
        "APPLE_MUSIC_KEY_ID": "YOUR_VALUE",
        "APPLE_MUSIC_PRIVATE_KEY": "YOUR_VALUE",
        "APPLE_MAPS_KEY_ID": "YOUR_VALUE",
        "APPLE_MAPS_PRIVATE_KEY": "YOUR_VALUE",
        "APPLE_WEATHERKIT_KEY_ID": "YOUR_VALUE",
        "APPLE_WEATHERKIT_PRIVATE_KEY": "YOUR_VALUE",
        "APPLE_WEATHERKIT_SERVICE_ID": "YOUR_VALUE",
        "APPLE_MUSIC_DEVELOPER_TOKEN": "YOUR_VALUE",
        "APPLE_MUSIC_USER_TOKEN": "YOUR_VALUE",
        "APPLE_MUSIC_WEB_USER_TOKEN": "YOUR_VALUE",
        "APPLE_MUSIC_WEB_DEVELOPER_TOKEN": "YOUR_VALUE",
        "APPLE_MUSIC_STOREFRONT": "YOUR_VALUE",
        "ICLOUD_USERNAME": "YOUR_VALUE",
        "ICLOUD_APP_PASSWORD": "YOUR_VALUE",
        "ICLOUD_MAIL_ADDRESS": "YOUR_VALUE",
        "ICLOUD_DEFAULT_CALENDAR": "YOUR_VALUE",
        "APPLE_WRITE_MODE": "YOUR_VALUE",
        "APPLE_SERVICES": "YOUR_VALUE",
        "DISPLAY_TZ": "YOUR_VALUE",
        "APPLE_UNITS": "YOUR_VALUE",
        "APPLE_STATE_CACHE": "YOUR_VALUE",
        "APPLE_REQUEST_TIMEOUT_MS": "YOUR_VALUE",
        "APPLE_DEBUG_LOG": "YOUR_VALUE",
        "MCP_CONFIRM_MODE": "YOUR_VALUE",
        "MCP_CONFIRM_ELICITATION": "YOUR_VALUE",
        "MCP_CONFIRM_TTL_SECONDS": "YOUR_VALUE",
        "MCP_CONFIRM_SECRET": "YOUR_VALUE"
      }
    }
  }
}
```
一键安装：cursor://anysphere.cursor-deeplink/mcp/install?name=io-github-chrischall-apple-icloud-mcp&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsImFwcGxlLWljbG91ZC1tY3AiXSwiZW52Ijp7IkFQUExFX1RFQU1fSUQiOiJZT1VSX1ZBTFVFIiwiQVBQTEVfS0VZX0lEIjoiWU9VUl9WQUxVRSIsIkFQUExFX1BSSVZBVEVfS0VZIjoiWU9VUl9WQUxVRSIsIkFQUExFX1BSSVZBVEVfS0VZX1BBVEgiOiJZT1VSX1ZBTFVFIiwiQVBQTEVfTVVTSUNfS0VZX0lEIjoiWU9VUl9WQUxVRSIsIkFQUExFX01VU0lDX1BSSVZBVEVfS0VZIjoiWU9VUl9WQUxVRSIsIkFQUExFX01BUFNfS0VZX0lEIjoiWU9VUl9WQUxVRSIsIkFQUExFX01BUFNfUFJJVkFURV9LRVkiOiJZT1VSX1ZBTFVFIiwiQVBQTEVfV0VBVEhFUktJVF9LRVlfSUQiOiJZT1VSX1ZBTFVFIiwiQVBQTEVfV0VBVEhFUktJVF9QUklWQVRFX0tFWSI6IllPVVJfVkFMVUUiLCJBUFBMRV9XRUFUSEVSS0lUX1NFUlZJQ0VfSUQiOiJZT1VSX1ZBTFVFIiwiQVBQTEVfTVVTSUNfREVWRUxPUEVSX1RPS0VOIjoiWU9VUl9WQUxVRSIsIkFQUExFX01VU0lDX1VTRVJfVE9LRU4iOiJZT1VSX1ZBTFVFIiwiQVBQTEVfTVVTSUNfV0VCX1VTRVJfVE9LRU4iOiJZT1VSX1ZBTFVFIiwiQVBQTEVfTVVTSUNfV0VCX0RFVkVMT1BFUl9UT0tFTiI6IllPVVJfVkFMVUUiLCJBUFBMRV9NVVNJQ19TVE9SRUZST05UIjoiWU9VUl9WQUxVRSIsIklDTE9VRF9VU0VSTkFNRSI6IllPVVJfVkFMVUUiLCJJQ0xPVURfQVBQX1BBU1NXT1JEIjoiWU9VUl9WQUxVRSIsIklDTE9VRF9NQUlMX0FERFJFU1MiOiJZT1VSX1ZBTFVFIiwiSUNMT1VEX0RFRkFVTFRfQ0FMRU5EQVIiOiJZT1VSX1ZBTFVFIiwiQVBQTEVfV1JJVEVfTU9ERSI6IllPVVJfVkFMVUUiLCJBUFBMRV9TRVJWSUNFUyI6IllPVVJfVkFMVUUiLCJESVNQTEFZX1RaIjoiWU9VUl9WQUxVRSIsIkFQUExFX1VOSVRTIjoiWU9VUl9WQUxVRSIsIkFQUExFX1NUQVRFX0NBQ0hFIjoiWU9VUl9WQUxVRSIsIkFQUExFX1JFUVVFU1RfVElNRU9VVF9NUyI6IllPVVJfVkFMVUUiLCJBUFBMRV9ERUJVR19MT0ciOiJZT1VSX1ZBTFVFIiwiTUNQX0NPTkZJUk1fTU9ERSI6IllPVVJfVkFMVUUiLCJNQ1BfQ09ORklSTV9FTElDSVRBVElPTiI6IllPVVJfVkFMVUUiLCJNQ1BfQ09ORklSTV9UVExfU0VDT05EUyI6IllPVVJfVkFMVUUiLCJNQ1BfQ09ORklSTV9TRUNSRVQiOiJZT1VSX1ZBTFVFIn19
需要环境变量：APPLE_TEAM_ID, APPLE_KEY_ID, APPLE_PRIVATE_KEY, APPLE_PRIVATE_KEY_PATH, APPLE_MUSIC_KEY_ID, APPLE_MUSIC_PRIVATE_KEY, APPLE_MAPS_KEY_ID, APPLE_MAPS_PRIVATE_KEY, APPLE_WEATHERKIT_KEY_ID, APPLE_WEATHERKIT_PRIVATE_KEY, APPLE_WEATHERKIT_SERVICE_ID, APPLE_MUSIC_DEVELOPER_TOKEN, APPLE_MUSIC_USER_TOKEN, APPLE_MUSIC_WEB_USER_TOKEN, APPLE_MUSIC_WEB_DEVELOPER_TOKEN, APPLE_MUSIC_STOREFRONT, ICLOUD_USERNAME, ICLOUD_APP_PASSWORD, ICLOUD_MAIL_ADDRESS, ICLOUD_DEFAULT_CALENDAR, APPLE_WRITE_MODE, APPLE_SERVICES, DISPLAY_TZ, APPLE_UNITS, APPLE_STATE_CACHE, APPLE_REQUEST_TIMEOUT_MS, APPLE_DEBUG_LOG, MCP_CONFIRM_MODE, MCP_CONFIRM_ELICITATION, MCP_CONFIRM_TTL_SECONDS, MCP_CONFIRM_SECRET
