使用说明
MCP CalDAV服务器
用于CalDAV协议集成的通用MCP服务器。适用于任何与CalDAV兼容的日历服务器,包括Yandex日历、谷歌日历(通过CalDAV)、Nextcloud、ownCloud、苹果iCloud等。
📖 快速开始:参见 QUICKSTART.md 获取快速入门指南
uv. 🔧 光标设置:参见 CURSOR_SETUP.md 有关Cursor IDE配置的详细说明。
特性
- 列出可用日历
- 创建带有提醒和与会者的日历事件
- 获取今天、本周或自定义日期范围的事件
- 适用于任何兼容CalDAV的服务器(Yandex、谷歌、Nextcloud、ownCloud、iCloud等)
安装
使用紫外线(推荐)
首先,如果你还没有安装uv:
macOS/Linux:
curl -LsSf https://astral.sh/uv/install.sh | sh
窗户:
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
然后安装项目:
uv sync --dev
这将:
- 创建虚拟环境(
.venv) - 安装所有依赖项,包括开发依赖项
- 生成一个
uv.lock文件
使用uvx(无需安装即可运行)
您也可以直接运行服务器,而无需安装:
uvx mcp-caldav
使用pip
pip install -e .
配置
设置以下环境变量:
export CALDAV_URL="https://caldav.example.com/"
export CALDAV_USERNAME="your-username"
export CALDAV_PASSWORD="your-password"
CalDAV服务器URL
常见的CalDAV服务器URL:
- Yandex日历:
https://caldav.yandex.ru/ - 谷歌日历:
https://apidata.googleusercontent.com/caldav/v2/(需要OAuth设置) - 云端下一站:
https://your-domain.com/remote.php/dav/calendars/username/ - ownCloud:
https://your-domain.com/remote.php/dav/calendars/username/ - 苹果iCloud:
https://caldav.icloud.com/(需要特定于应用程序的密码) - 快速邮件:
https://caldav.fastmail.com/dav/calendars/user/
备注:一些服务器需要特定于应用程序的密码,而不是常规密码。查看日历提供商的文档,了解CalDAV设置说明。
用法
IDE集成(游标)
要在Cursor中使用此MCP服务器:
- 打开光标设置→ 特性→ MCP服务器→ + 添加新的全局MCP服务器
- 添加以下配置:
使用uvx(推荐-无需安装):
{
"mcpServers": {
"mcp-caldav": {
"command": "uvx",
"args": ["mcp-caldav"],
"env": {
"CALDAV_URL": "https://caldav.example.com/",
"CALDAV_USERNAME": "your-username",
"CALDAV_PASSWORD": "your-password"
}
}
}
}
使用本地安装(之后 uv sync 或 pip install):
{
"mcpServers": {
"mcp-caldav": {
"command": "mcp-caldav",
"env": {
"CALDAV_URL": "https://caldav.example.com/",
"CALDAV_USERNAME": "your-username",
"CALDAV_PASSWORD": "your-password"
}
}
}
}
使用本地开发版本:
{
"mcpServers": {
"mcp-caldav": {
"command": "uv",
"args": ["run", "--directory", "/path/to/caldav", "mcp-caldav"],
"env": {
"CALDAV_URL": "https://caldav.example.com/",
"CALDAV_USERNAME": "your-username",
"CALDAV_PASSWORD": "your-password"
}
}
}
}
Yandex日历示例:
{
"mcpServers": {
"mcp-caldav": {
"command": "uvx",
"args": ["mcp-caldav"],
"env": {
"CALDAV_URL": "https://caldav.yandex.ru/",
"CALDAV_USERNAME": "your-username@yandex.ru",
"CALDAV_PASSWORD": "your-app-password"
}
}
}
}
⚠️ 备注Yandex日历具有严格的速率限制(自2021年以来每MB 60秒)。 写操作(创建/更新/删除)可能会遇到504超时,因此会间隔出请求并引入手动延迟。 对于编写繁重的工作负载,可以考虑使用谷歌日历或Nextcloud。 看 提供者NOTES.md 了解详情。
测试状态:端到端测试目前仅针对Yandex日历运行。其他CalDAV提供商遵循相同的协议,应该可以工作,但它们还没有经过集成测试。
Nextcloud示例:
{
"mcpServers": {
"mcp-caldav": {
"command": "uvx",
"args": ["mcp-caldav"],
"env": {
"CALDAV_URL": "https://your-domain.com/remote.php/dav/calendars/username/",
"CALDAV_USERNAME": "your-username",
"CALDAV_PASSWORD": "your-password"
}
}
}
}
作为MCP服务器
服务器可以与MCP兼容的客户端一起使用:
使用紫外线(之后 uv sync):
uv run mcp-caldav
注: uvx 仅适用于PyPI发布的包。对于当地发展,使用 uv run mcp-caldav 之后 uv sync.
使用pip(安装后):
mcp-caldav
或者使用自定义选项:
uv run mcp-caldav --caldav-url "https://caldav.example.com/" \
--caldav-username "your-username" \
--caldav-password "your-password" \
--verbose
可用工具
基本操作:
caldav_list_calendars-列出所有可用日历caldav_create_event-创建新的日历事件(支持重复、类别、优先级、与会者)caldav_get_events-获取日期范围内的事件(返回扩展字段:UID、类别、优先级、与会者、重复)caldav_get_today_events-获取今天的活动caldav_get_week_events-获取本周活动
高级操作:
caldav_get_event_by_uid-通过UID获取特定事件caldav_delete_event-按UID删除事件caldav_search_events-按文本、与会者或位置搜索事件
支持的功能:
- 重复事件(RRULE)-每日、每周、每月、每年模式
- 分类/标签-按类别组织活动
- 优先级-设置优先级(0-9,0=最高)
- 具有状态的与会者-跟踪接受状态(接受/拒绝/暂定/需要采取行动)
- 提醒-每个事件有多个提醒
发展
代码质量
该项目使用多种工具来确保代码质量:
- 米皮 -具有严格规则的静态类型检查
- 颈毛 -快速换行和代码格式化
- 预承诺 -提交前自动检查
运行质量检查:
# Install dev dependencies
uv sync --group dev
# Run all checks
make check
# Or individually
make lint
make format
make type-check
# Or using pre-commit
make pre-commit-run
设置预提交挂钩:
uv run pre-commit install
看 代码_质量.md 了解详细信息。
运行测试
单元测试(带模拟):
make test
# or
make test-unit
E2E测试(需要真实的CalDAV服务器):
# Create .env.e2e file with your credentials, then:
make test-e2e
所有测试:
make test
覆盖范围:
make test-cov # Terminal report
make coverage-html # HTML report
看 tests/e2e/README.md 有关e2e测试的更多详细信息。
项目结构
caldav/
├── src/
│ └── mcp_caldav/
│ ├── __init__.py # Main entry point
│ ├── server.py # MCP server implementation
│ └── client.py # CalDAV client wrapper
├── tests/
│ ├── test_server.py # Server unit tests
│ ├── test_client.py # Client unit tests
│ └── e2e/ # End-to-end tests with real server
│ ├── test_client_e2e.py
│ └── conftest.py
├── pyproject.toml # Project configuration
├── Makefile # Development commands
└── README.md # This file
许可证
有关详细信息,请参阅LICENSE文件。