MCP CalDAV STDIO应用程序
一个基于Python的MCP(模型通信协议)应用程序,使用caldav Python库为事件、日志和待办事项提供CRUD操作。
先决条件
- Python 3.8或更高版本
uv(可选,用于快速安装)或pip
依赖项
所需的Python包列在 pyproject.toml 并将自动安装:
caldavpython-dateutilfastmcp
安装选项
您可以使用安装应用程序 uv (推荐)或 pip.
使用紫外线(推荐)
uv pip install radicale-mcp使用pip
pip install radicale-mcp来源
git clone https://github.com/TheGreatGooo/radicale-mcp.git
cd radicale-mcp
uv pip install -e .使用uvx(直接从GitHub运行)
uvx radicale_mcp@git+https://github.com/TheGreatGooo/radicale-mcp特性
- MCP协议支持:使用模型通信协议通过STDIO进行通信
- CalDAV集成:连接到任何CalDAV服务器(如Radical)
- 完整的CRUD操作:为事件、日记和待办事项创建、读取、更新和删除
- 标准数据模型:事件、日记和待办事项的定义良好的模型
- 错误处理:全面的错误处理和记录
- 配置管理:通过文件和环境变量灵活配置
建筑
┌─────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ MCP Client │ │ MCP CalDAV │ │ CalDAV Server │
│ │ │ Application │ │ │
│ STDIO Input │───▶│ (this app) │───▶│ (e.g. Radicale) │
│ JSON Messages │ │ │ │ │
│ │◀───│ │◀───│ │
│ STDIO Output │ │ │ │ │
└─────────────────┘ └──────────────────┘ └──────────────────┘配置
该应用程序支持通过以下方式进行配置:
- 环境变量
- 配置文件(
config/settings.json)
环境变量
CALDAV_SERVER_URL:caldav服务器URL(默认值:http://localhost:5232)CALDAV_USERNAME:身份验证用户名(默认值:user)CALDAV_PASSWORD:身份验证密码(默认值:\\)CALDAV_USE_SSL:是否使用SSL(默认值:true)LOG_LEVEL:日志记录级别(默认值:INFO)
配置文件
创建 config/settings.json:
{
"server_url": "http://localhost:5232",
"username": "user",
"password": "",
"use_ssl": true,
"log_level": "INFO"
}用法
默认情况下,应用程序作为MCP服务器运行。要启动它:
python -m src.server或者简单地说:
radicale_mcp应用程序将在STDIO上监听MCP协议消息。它支持以下方法:
活动操作
caldav.event.create:创建新事件caldav.event.read:读取现有事件caldav.event.update:更新现有事件caldav.event.delete:删除事件caldav.event.list:列出所有事件
日志操作
caldav.journal.create:创建新日记条目caldav.journal.read:读取现有日记条目caldav.journal.update:更新现有日记条目caldav.journal.delete:删除日记条目caldav.journal.list:列出所有日记账条目
Todo操作
caldav.todo.create:创建新的待办事项caldav.todo.read:读取现有待办事项caldav.todo.update:更新现有待办事项caldav.todo.delete:删除待办事项caldav.todo.list:列出所有待办事项
示例请求
{
"jsonrpc": "2.0",
"id": "1",
"method": "caldav.event.create",
"params": {
"title": "Team Meeting",
"description": "Weekly team sync",
"start_time": "2023-10-15T10:00:00",
"end_time": "2023-10-15T11:00:00",
"location": "Conference Room A"
}
}示例响应
{
"jsonrpc": "2.0",
"id": "1",
"result": {
"id": "event-12345",
"status": "created"
}
}发展
项目结构
radicale-mcp/
├── src/main.py # Main application entry point
├── requirements.txt # Python dependencies
├── config/ # Configuration files
│ └── settings.json # Application settings
├── src/ # Source code
│ ├── __init__.py
│ ├── caldav_client.py # CalDAV connection and operations
│ ├── models/ # Data models
│ │ ├── __init__.py
│ │ ├── event.py # Event data model
│ │ ├── journal.py # Journal data model
│ │ └── todo.py # Todo data model
│ ├── operations/ # CRUD operations
│ │ ├── __init__.py
│ │ ├── event_ops.py # Event CRUD operations
│ │ ├── journal_ops.py # Journal CRUD operations
│ │ └── todo_ops.py # Todo CRUD operations
│ ├── stdio_interface.py # MCP STDIO protocol implementation
│ ├── config_manager.py # Configuration management
│ └── error_handler.py # Error handling and logging
└── docs/ # Documentation
├── architecture.md
├── project_structure.md
├── data_models.md
└── mcp_protocol.mdFastMCP集成
此应用程序演示了如何与FastMCP库集成。这 src/server.py 文件显示:
- 如何创建MCP服务器实例
- 如何定义MCP客户端可以调用的工具
- 与现有CalDAV功能集成
要运行FastMCP服务器:
python -m server许可证
麻省理工学院
