项目简介
本项目是一个基于 Model Context Protocol (MCP) 的服务器实现,专注于将 Google 日历的功能集成到支持 MCP 协议的 LLM 客户端 (如 Claude Desktop) 中。通过此服务器,用户可以使用自然语言指令,让 LLM 助手直接操作 Google 日历,例如创建会议、查询日程、修改活动等。
主要功能点
- 创建日历事件:支持创建包含标题、时间、描述和地点的日历事件。
- 检索事件详情:通过事件 ID 检索特定事件的详细信息。
- 更新事件:允许修改现有事件的标题、时间、描述和地点。
- 删除事件:根据事件 ID 删除日历事件。
- 列出事件:可以查询指定时间范围内的日历事件列表。
- 完整的 Google Calendar API 集成:充分利用 Google Calendar API 的功能。
- 简易 OAuth2 自动认证流程:支持自动浏览器启动的 OAuth2 认证流程,简化配置。
- 支持桌面和 Web 应用凭据:兼容不同类型的 Google Cloud OAuth 凭据。
- 全局凭据存储:认证凭据全局存储,方便多处使用。
安装步骤
-
创建 Google Cloud 项目并获取凭据:
- 访问 Google Cloud Console。
- 创建或选择一个 Google Cloud 项目。
- 为项目启用 Google Calendar API。
- 创建 OAuth 2.0 凭据:选择 "API 和服务" -> "凭据",点击 "创建凭据" -> "OAuth 客户端 ID"。
- 选择 "桌面应用" 或 "Web 应用程序" 作为应用类型。
- 设置名称并点击 "创建"。如果是 "Web 应用程序",需要添加 'http://localhost:3000/oauth2callback' 到授权重定向 URI。
- 下载客户端 OAuth 密钥的 JSON 文件,并重命名为 'gcp-oauth.keys.json'。
-
安装服务器:
- 推荐使用 Smithery 进行自动安装 (Claude Desktop 客户端)。
npx -y @smithery/cli install @gongrzhe/server-calendar-autoauth-mcp --client claude - 或者,您也可以手动安装,例如通过 npm 安装:
npm install -g @gongrzhe/server-calendar-autoauth-mcp
- 推荐使用 Smithery 进行自动安装 (Claude Desktop 客户端)。
-
进行身份验证:
- 全局认证 (推荐):
- 将 'gcp-oauth.keys.json' 放置在用户主目录下的 '.calendar-mcp' 文件夹中 (如果文件夹不存在则创建)。
mkdir -p ~/.calendar-mcp mv gcp-oauth.keys.json ~/.calendar-mcp/ - 运行认证命令:
npx @gongrzhe/server-calendar-autoauth-mcp auth
- 将 'gcp-oauth.keys.json' 放置在用户主目录下的 '.calendar-mcp' 文件夹中 (如果文件夹不存在则创建)。
- 本地认证:
- 将 'gcp-oauth.keys.json' 放置在当前工作目录。
- 运行认证命令:
npx @gongrzhe/server-calendar-autoauth-mcp auth
- 认证过程会自动打开浏览器进行 Google 账户授权,成功后凭据将保存到 '~/.calendar-mcp/credentials.json'。
- 全局认证 (推荐):
服务器配置
要将此 MCP 服务器配置到 MCP 客户端(例如 Claude Desktop),您需要提供以下 JSON 配置信息。此配置告诉客户端如何启动和连接到日历 MCP 服务器:
{ "mcpServers": { "calendar": { // 服务器名称,客户端用此名称引用 "command": "npx", // 启动服务器的命令,这里使用 npx 执行 npm 包 "args": [ "@gongrzhe/server-calendar-autoauth-mcp" // 服务器 npm 包名,npx 将执行此包的入口文件 ] } } }
基本使用方法
配置完成后,LLM 客户端 (如 Claude Desktop) 即可通过 MCP 协议与此日历服务器通信。您可以使用自然语言指示 LLM 助手调用服务器提供的工具来操作 Google 日历。
例如,在 Claude Desktop 中,您可以指示 Claude 创建日历事件,Claude 将自动调用 'create_event' 工具,并根据您的指示填充相应的参数。
以下是一些工具的请求参数示例 (JSON 格式),这些参数通常由 LLM 客户端根据用户指令自动生成并传递给服务器:
-
创建事件 (create_event):
{ "summary": "团队会议", "start": { "dateTime": "2024-01-20T10:00:00Z" }, "end": { "dateTime": "2024-01-20T11:00:00Z" }, "description": "每周团队同步", "location": "会议室 A" } -
列出事件 (list_events):
{ "timeMin": "2024-01-01T00:00:00Z", "timeMax": "2024-12-31T23:59:59Z", "maxResults": 10, "orderBy": "startTime" } -
更新事件 (update_event):
{ "eventId": "event123", "summary": "更新后的会议标题", "start": { "dateTime": "2024-01-20T11:00:00Z" }, "end": { "dateTime": "2024-01-20T12:00:00Z" } } -
删除事件 (delete_event):
{ "eventId": "event123" }
请参考仓库的 README.md 文件和源代码以获取更详细的使用说明和工具参数信息。
信息
分类
生产力应用