CalDAV服务器

MCP CalDAV Server是一个支持OAuth2认证的日历任务管理服务器,适用于需要安全共享和同步日历事件的场景。

  • by eunmin
  • Java
  • 本地部署
  • 更新于
在 GitHub 查看 eunmin/mcp-caldav

使用说明

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 bootRun

MCP工具

工具 说明 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客户端遵循以下流程:

  1. OAuth 2 Authorization Server(例如Keycloak)颁发Access Token
  2. MCP请求时 Authorization: Bearer <token> 标头中包含令牌
  3. 服务器验证JWT并从claims获取用户信息(sub)提取
  4. CalDAV服务器请求时传递该令牌

JWT索赔

服务器在JWT中使用以下claim:

  • sub:CalDAV用户标识符(必需)

许可证

Apache许可证2.0