Skip to content
VS Code

icloud mcp for VS Code

io.github.eodozzy/icloud-mcp

Read-only-by-default MCP server for iCloud mail, calendar, and contacts (IMAP/CalDAV/CardDAV).

client:VS Code transport:stdio runtime:pypi

Install icloud mcp in VS Code

.vscode/mcp.json

{
  "inputs": [
    {
      "type": "promptString",
      "id": "icloud-username",
      "description": "ICLOUD_USERNAME",
      "password": true
    },
    {
      "type": "promptString",
      "id": "icloud-keyring-service",
      "description": "ICLOUD_KEYRING_SERVICE",
      "password": true
    },
    {
      "type": "promptString",
      "id": "icloud-app-password",
      "description": "ICLOUD_APP_PASSWORD",
      "password": true
    },
    {
      "type": "promptString",
      "id": "icloud-enable-writes",
      "description": "ICLOUD_ENABLE_WRITES",
      "password": true
    },
    {
      "type": "promptString",
      "id": "icloud-imap-host",
      "description": "ICLOUD_IMAP_HOST",
      "password": true
    },
    {
      "type": "promptString",
      "id": "icloud-imap-port",
      "description": "ICLOUD_IMAP_PORT",
      "password": true
    },
    {
      "type": "promptString",
      "id": "icloud-smtp-host",
      "description": "ICLOUD_SMTP_HOST",
      "password": true
    },
    {
      "type": "promptString",
      "id": "icloud-smtp-port",
      "description": "ICLOUD_SMTP_PORT",
      "password": true
    },
    {
      "type": "promptString",
      "id": "icloud-caldav-url",
      "description": "ICLOUD_CALDAV_URL",
      "password": true
    },
    {
      "type": "promptString",
      "id": "icloud-carddav-url",
      "description": "ICLOUD_CARDDAV_URL",
      "password": true
    },
    {
      "type": "promptString",
      "id": "icloud-tz",
      "description": "ICLOUD_TZ",
      "password": true
    }
  ],
  "servers": {
    "icloud-mcp": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "icloud-mcp"
      ],
      "env": {
        "ICLOUD_USERNAME": "${input:icloud-username}",
        "ICLOUD_KEYRING_SERVICE": "${input:icloud-keyring-service}",
        "ICLOUD_APP_PASSWORD": "${input:icloud-app-password}",
        "ICLOUD_ENABLE_WRITES": "${input:icloud-enable-writes}",
        "ICLOUD_IMAP_HOST": "${input:icloud-imap-host}",
        "ICLOUD_IMAP_PORT": "${input:icloud-imap-port}",
        "ICLOUD_SMTP_HOST": "${input:icloud-smtp-host}",
        "ICLOUD_SMTP_PORT": "${input:icloud-smtp-port}",
        "ICLOUD_CALDAV_URL": "${input:icloud-caldav-url}",
        "ICLOUD_CARDDAV_URL": "${input:icloud-carddav-url}",
        "ICLOUD_TZ": "${input:icloud-tz}"
      }
    }
  }
}

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

icloud mcp in other clients