MCP CalDAV服务器
CalDAV日历操作的模型上下文协议(MCP)服务器。支持OAuth2身份验证。
要求
- Java 17+
- 支持OAuth2的CalDAV服务器(例如: FastCal)
- OAuth 2提供程序(例如Keycloak)
环境变量
| 变量 | 说明 | 默认值 |
|---|---|---|
SERVER_PORT | MCP服务器端口 | 8081 |
CALDAV_URL | CalDAV服务器URL | http://localhost:8080 |
OAUTH2_ISSUER_URI | OAuth2JWT颁发者URI | http://localhost:8082/realms/fastcal |
OAUTH2_RESOURCE_URI | OAuth2资源URI | http://localhost:8081/mcp |
构建
./gradlew build执行
./gradlew bootRunMCP工具
| 工具 | 说明 | CalDAV方法 |
|---|---|---|
listCalendars | 查看用户的所有日历列表 | PROPFIND |
getCalendar | 查看特定日历的详细信息PROPFIND | |
createCalendar | 创建新日历 | MKCALENDAR |
updateCalendar | 修改日历属性(名称、说明、颜色) | PROPPATCH |
deleteCalendar 删除日历DELETE | ||
listEvents | 查看日历中的所有事件列表REPORT(calendar-query) | |
getEvent 查询特定事件的详细信息GET | ||
createEvent 创建新事件PUT | ||
updateEvent | 修改事件 | PUT(If-Match) |
deleteEvent 删除事件DELETE | ||
searchEvents | 按时间范围搜索事件REPORT(calendar-query) | |
freeBusy | 查询时间范围的忙/闲信息REPORT(free-busy-query) |
认证
使用OAuth2JWT身份验证。MCP客户端遵循以下流程:
- OAuth 2 Authorization Server(例如Keycloak)颁发Access Token
- MCP请求时
Authorization: Bearer标头中包含令牌 - 服务器验证JWT并从claims获取用户信息(
sub)提取 - CalDAV服务器请求时传递该令牌
JWT索赔
服务器在JWT中使用以下claim:
sub:CalDAV用户标识符(必需)
许可证
Apache许可证2.0
