项目简介

本项目是一个基于 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 凭据。
  • 全局凭据存储:认证凭据全局存储,方便多处使用。

安装步骤

  1. 创建 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'。
  2. 安装服务器

    • 推荐使用 Smithery 进行自动安装 (Claude Desktop 客户端)。
      npx -y @smithery/cli install @gongrzhe/server-calendar-autoauth-mcp --client claude
    • 或者,您也可以手动安装,例如通过 npm 安装:
      npm install -g @gongrzhe/server-calendar-autoauth-mcp
  3. 进行身份验证

    • 全局认证 (推荐)
      • 将 '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' 放置在当前工作目录。
      • 运行认证命令:
        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 文件和源代码以获取更详细的使用说明和工具参数信息。

信息

分类

生产力应用