Skip to content
VS Code

iCloud for VS Code

io.github.epinethrone/icloud-mcp

iCloud Mail, Calendar, Contacts, Reminders, Notes and Drive. Approval-first, self-hosted or local.

client:VS Code transport:stdio runtime:pypi

Install iCloud in VS Code

.vscode/mcp.json

{
  "inputs": [
    {
      "type": "promptString",
      "id": "icloud-username",
      "description": "ICLOUD_USERNAME",
      "password": true
    },
    {
      "type": "promptString",
      "id": "icloud-app-password",
      "description": "ICLOUD_APP_PASSWORD",
      "password": true
    },
    {
      "type": "promptString",
      "id": "icloud-display-name",
      "description": "ICLOUD_DISPLAY_NAME",
      "password": true
    },
    {
      "type": "promptString",
      "id": "default-timezone",
      "description": "DEFAULT_TIMEZONE",
      "password": true
    },
    {
      "type": "promptString",
      "id": "send-requires-approval",
      "description": "SEND_REQUIRES_APPROVAL",
      "password": true
    },
    {
      "type": "promptString",
      "id": "agent-notes-file",
      "description": "AGENT_NOTES_FILE",
      "password": true
    },
    {
      "type": "promptString",
      "id": "owner-addresses",
      "description": "OWNER_ADDRESSES",
      "password": true
    },
    {
      "type": "promptString",
      "id": "warmup-on-start",
      "description": "WARMUP_ON_START",
      "password": true
    },
    {
      "type": "promptString",
      "id": "tool-workers",
      "description": "TOOL_WORKERS",
      "password": true
    }
  ],
  "servers": {
    "icloud-mcp": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "icloud-mcp-server"
      ],
      "env": {
        "ICLOUD_USERNAME": "${input:icloud-username}",
        "ICLOUD_APP_PASSWORD": "${input:icloud-app-password}",
        "ICLOUD_DISPLAY_NAME": "${input:icloud-display-name}",
        "DEFAULT_TIMEZONE": "${input:default-timezone}",
        "SEND_REQUIRES_APPROVAL": "${input:send-requires-approval}",
        "AGENT_NOTES_FILE": "${input:agent-notes-file}",
        "OWNER_ADDRESSES": "${input:owner-addresses}",
        "WARMUP_ON_START": "${input:warmup-on-start}",
        "TOOL_WORKERS": "${input:tool-workers}"
      }
    }
  }
}

VS Code prompts for each input the first time the server starts, so no secret is written to the file. VS Code docs

iCloud in other clients