Prepare the server locally
Run this once before adding it to Claude Code.
git clone https://github.com/HermanErKu/icloud-calendar-mcp-pythonRegister it in Claude Code
claude mcp add -e "ICLOUD_APPLE_ID=${ICLOUD_APPLE_ID}" -e "ICLOUD_APP_PWD=${ICLOUD_APP_PWD}" icloud-calendar -- python /path/to/main.pyReplace any placeholder paths in the command with the real path on your machine.
ICLOUD_APPLE_IDICLOUD_APP_PWDMake your agent remember this setup
icloud-calendar's config, env vars, and the gotchas you hit — recalled in every future Claude Code, Cursor, and Codex session.
npx conare@latestFree · one command · indexes the sessions already on disk. Set up in the browser instead →
What it does
- View existing events in your iCloud Calendar
- Create new calendar events using natural language
- Secure integration via Apple app-specific passwords
- Local execution for privacy and control
Tools 2
list_eventsRetrieve a list of events from the iCloud calendarcreate_eventCreate a new event in the iCloud calendarEnvironment Variables
ICLOUD_APPLE_IDrequiredYour iCloud email addressICLOUD_APP_PWDrequiredApp-specific password generated from account.apple.comTry it
Original README from HermanErKu/icloud-calendar-mcp-python
iCloud Calendar MCP
An MCP server letting you see and create events in you iCloud Calendar
Setup
Here is a detailed guide for setting up the MCP server for yourself:
Locally
This is how you set up the MCP server locally on your machine.
First, you need to clone this repository, and create a .env file in the root folder of the project. In the .env file you will need to set 2 variables like this:
ICLOUD_APPLE_ID="[email protected]"
ICLOUD_APP_PWD="xxxx-xxxx-xxxx-xxxx"
Where the ICLOUD_APPLE_ID is your iCloud email address.
The ICLOUD_APP_PWD you will get by visiting account.apple.com and logging in. You will then click "App-specific passwords" and create a new. You can call this whatever you want, but make sure to copy the password when it is created, because you will not be able to see it afterwards.
When these variables are set in the .env file, you are ready to add the MCP server to your preferred LLM. In this example, i will be using Claude Desktop.
Open claude, and using the hamburger menu in the top-left corner, navigate to "File>Settings>Developer>Local MCP Servers". Click "Edit Config" and open the JSON file in a code editor. In the JSON file, insert this:
{
"mcpServers": {
"calendar": {
"command": "python",
"args": [
"/Users/herman/Source/Repos/icloud-calendar-mcp-python/main.py"
]
}
}
}
But change the source of the MCP server to where you have your located.
You will then need to restart Claude Desktop, and make sure the "calendar" tool is enabled:
On the internet (using [FastMCP Cloud](https://fastmcp.cloud))
This is how you deploy the MCP server on the internet and connect to it using Docker and deploying as container app.
(Not yet finished)
On the internet (using Docker)
This is how you deploy the MCP server on the internet and connect to it using Docker and deploying as container app.
(Not yet finished)
Contribution
If you want to contribute to this project, you are very free to do.
Just create an issue or open a pull request :P