这是一个强大的模型上下文协议(MCP)服务器,通过CalDAV协议为iCloud日历提供自然语言的日历管理功能。这个跨平台解决方案使您能够使用任何MCP兼容客户端中的自然语言命令与您的iCloud日历进行交互。
克隆此仓库:
git clone https://github.com/zwrong/iCalendar.git
cd iCalendar
安装依赖项:
uv sync
复制示例配置文件:
cp config.json.example config_private.json
编辑 config_private.json:
{
"caldav": {
"server_url": "https://caldav.icloud.com/",
"username": "your_apple_id@icloud.com",
"password": "your_app_specific_password"
}
}
重要:不要将 config_private.json 提交到版本控制系统!它包含敏感凭证。
启动服务器:
uv run mcp-ical

在使用MCP客户端中的iCalendar时,请勿关闭正在运行服务器的终端。
添加到您的 claude_desktop_config.json:
{
"mcpServers": {
"iCalendar": {
"command": "uv",
"args": [
"--directory",
"/ABSOLUTE/PATH/TO/PARENT/FOLDER/iCalendar",
"run",
"mcp-ical"
]
}
}
}
如果遇到“spawn uv ENOENT”错误:
当系统无法在PATH中找到uv命令时会出现此错误。要解决此问题,请指定uv可执行文件的完整路径:
{
"mcpServers": {
"ical": {
"command": "/ABSOLUTE/PATH/TO/uv",
"args": [
"--directory",
"/ABSOLUTE/PATH/TO/PARENT/FOLDER/iCalendar",
"run",
"mcp-ical"
]
}
}
}
通过运行以下命令找到uv可执行文件的路径:
which uv
# 或在Windows上:
where uv
用实际返回的路径替换 /ABSOLUTE/PATH/TO/uv。
配置Claude Desktop后,重启Claude Desktop并使用它!
用户:"今天我有计划吗?"
AI:我将为您检查今天的日程安排
→ list_events("2025-11-06T00:00:00", "2025-11-06T23:59:59")

用户:"周五中午与John安排午餐会议"
AI:我将为您创建该事件
→ create_event({
"title": "与John的午餐会议",
"start_datetime": "2025-01-17T12:00:00",
"end_datetime": "2025-01-17T13:00:00",
"calendar_name": "个人",
"description": "讨论项目更新"
})

用户:"删除本周的午餐会议"
AI:我将为您创建该事件
→ create_event({
"title": "与John的午餐会议",
"start_datetime": "2025-01-17T12:00:00",
"end_datetime": "2025-01-17T13:00:00",
"calendar_name": "个人",
"description": "讨论项目更新"
})


用户:"明天早上9点提醒我关于演讲,提前30分钟提醒"
AI:我将为您创建带有30分钟提醒的事件
→ create_event({
"title": "演讲",
"start_datetime": "2025-01-06T09:00:00",
"end_datetime": "2025-01-06T10:00:00",
"alarm": 30
})

server.py:使用FastMCP定义工具的MCP服务器入口点caldav_client.py:用于iCloud CalDAV访问和CRUD操作的CalDAVManager类ical.py:提供兼容层的日历管理器包装器models.py:用于请求/响应验证的Pydantic模型config.py:具有优先级处理的配置管理此MCP服务器与任何MCP兼容客户端一起工作,包括:
mcp-ical/
├── src/
│ └── mcp_ical/
│ ├── server.py # MCP服务器入口点
│ ├── caldav_client.py # CalDAV操作
│ ├── ical.py # 日历管理器包装器
│ ├── models.py # 数据模型
│ └── config.py # 配置
├── tests/ # 测试套件
├── config.json.example # 配置模板
├── pyproject.toml # 项目元数据
└── README.md # 此文件
update_event 和 delete_event 现在正确处理了URL编码的事件IDevent.id和event.url属性本项目根据MIT许可证发布 - 查看LICENSE文件以获取详细信息。
为MCP社区制作 ❤️