关于 calendar-mcp
calendar-mcp 是使用 Java 和 Quarkus 构建的 Google Calendar MCP 服务,目前仍在开发中。它通过 Google OAuth 凭据支持创建事件及多种删除操作。
主要功能
- 01创建 Google Calendar 事件
- 02删除事件
- 03按搜索文本或日期范围删除事件
- 04删除重复事件或清空所有事件
- 05使用 Google OAuth 进行身份验证
适用场景
- 01通过 MCP 客户端创建事件
- 02按文本匹配或日期删除事件
- 03删除重复事件或清空日历
MCP 相关
Quarkus 服务通过 MCP over SSE 与 MCP 客户端通信,并提供 Google Calendar 事件操作。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
暂未收录安装方式
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
还没有获取到工具列表
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
挑战 3 - 使用客户端和服务端实现 MCP 协议
选项 A - 完整开发协议(客户端和服务端)
目录
· 要求
· 配置
· 项目结构
· 说明
· 技术说明
· 注意事项
要求
- Java 17 或更高版本
- Maven
- Docker
- Quarkus
- Google 账号
- Google Calendar API
- Google Cloud Console 项目凭据
- MCP 客户端
配置
- 克隆仓库
- 在 Google Cloud 中创建项目:https://console.cloud.google.com/welcome?inv=1&invt=AbzSaw&project=light-sunup-461210-i1,点击 my first proyect,然后创建新项目。
- 在项目中,依次点击 APIS y servicios -> Biblioteca -> Google Calendar API -> Habilitar。
- 前往:APIs y servicios -> Credenciales -> Crear credenciales -> Crear ID de cliente OAuth -> Configurar pantalla de consentimiento -> Crear cliente。
- 下载 JSON 并将其复制到 Resources 文件夹中。
- 编译:mvn clean install。
- 运行服务端:jbang target/calendar-mcp-1.0.0-SNAPSHOT-runner.jar
项目结构
src/
├── main/
│ ├── java/
│ │ └── org.acme/
│ │ ├── GoogleAuthService.java # Manejo de OAuth2 con Google
│ │ ├── GoogleCalendarConfig.java # Cliente Calendar configurado
│ │ └── tools/
│ │ └── DeleteEvent.java # Comandos para borrar eventos
│ └── resources/
│ └── credentials.json # Clave de acceso OAuth
说明
pom.xml Maven 项目的核心配置文件。 声明这是一个 Quarkus 项目,并包含 REST 和 Google API 客户端的依赖项。
具体来说,该依赖项:
<dependency>
<groupId>io.quarkiverse.mcp</groupId>
<artifactId>quarkus-mcp-server-sse</artifactId>
<version>1.2.0</version>
</dependency>
通过 MCP 持续维持客户端与服务端之间的通信,
Quarkus 服务端
-
GoogleAuthService:导入 Google OAuth、JSON 和 Jakarta 包,以兼容 Quarkus 环境。 常量 JSON_FACTORY 和 SCOPES 包含用于访问日历的凭据和权限。
authorize() 方法:
- 读取凭据并执行授权流程。
- 定义用户的身份验证方式;在此示例中,"setAccessType("offline")" 可允许重新访问而无需再次验证,并将令牌保存在名为 "tokens" 的目录中。
- 在本地启动服务端,并通过 HTTP 在端口 8888 上打开浏览器。
- 授权用户;用户登录后,凭据将被保存。
-
GoogleCalendarConfig:用作依赖注入配置,注入一个负责使用 Google 进行 OAuth2 身份验证的依赖项
@Inject
GoogleAuthService authService;
calendarService() 类允许服务创建事件、访问日历……而无需持续进行身份验证。
工具
- CreateEvent:在用户的 Google 日历中创建新事件。定义一个 REST 端点(POST 类型的 URL),该端点接收包含事件信息的 JSON。
- DeleteEvent:删除用户 Google 日历中已有的事件。
- deleteEventsByQuery():删除与搜索文本匹配的事件。
- deleteEventsByDateRange():删除两个日期之间发生的所有事件。
- deleteRecurringEvent():按 eventId 或 instanceDate 删除事件。
- clearAllEvents():删除所有事件
技术说明
- 令牌存储在 tokens/ 中,以支持“offline”访问。
注意事项
- 删除事件不可撤销。
- 请确保拥有日历的适当权限。
- 请勿分享 credentials.json 文件。
评论
支持 Markdown
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。