Google Calendar MCP 服务端

使用说明(Markdown 格式)

  • 项目简介

    • 该仓库实现了一个用于 ML 模型/LLM 客户端的 MCP 服务器,聚合 Google Calendar 的能力,允许模型通过工具调用来查询日历、创建/修改事件、获取时区信息等,并可通过 STDIO 或 SSE 传输向客户端提供结果。
    • 服务器端提供了两个传输模式:STDIO(适用于 Claude Desktop 等桌面客户端)和 SSE(适用于 Web 应用等异步场景),并包含 Google OAuth2 认证流程。
  • 主要功能点

    • 工具集合:get-events、list-calendars、get-timezone-info、get-current-date、check-availability、create-event、delete-event、update-event 等,覆盖日历查询、事件管理和时区信息等场景。
    • 自动时区处理与时间格式修正,支持 RFC3339、ISO 8601 等常见时间格式。
    • 事件创建与更新时的时段冲突检查,避免时间重叠冲突。
    • Google Calendar API 认证与授权,支持首次授权的交互式登录与保存凭证。
    • 两种传输模式:
      • STDIO:适配 Claude Desktop 等本地应用,命令行启动后通过标准输入/输出进行通信。
      • SSE:通过 WebSocket/Server-Sent Events 提供流式交互能力,便于网页/服务端应用接入。
  • 安装步骤

    1. 安装依赖
      • 将代码克隆或下载到本地,并在项目根目录执行安装:pip install -e .
    2. 认证准备
      • 在 Google Cloud Console 配置日历 API 的 OAuth 2.0,下载 credentials.json,并放置在 mcp-server_google_calendar/mcp_server_google_calendar/credentials.json 路径下。
    3. 授权与首次运行
      • 运行服务器后首次会打开浏览器完成授权,授权凭据将保存在 token.json 以供后续使用。
    4. 启动服务器
      • STDIO 模式(适用于 Claude Desktop 等桌面客户端):
        • 直接运行命令:mcp-server-google-calendar
      • SSE 模式(适用于网页/其他应用):
        • 使用内置命令启动:mcp-server-google-calendar-sse
        • 或模块方式:python -m mcp_server_google_calendar.server_sse
        • 如需自定义端口/主机,可在启动时添加参数,例如 --host 0.0.0.0 --port 8001
  • 服务器配置说明(MCP 客户端需要投用的配置信息,JSON 格式;仅供参考,不作为代码块展示)

    • STDIO 模式配置(示例名称:google_calendar_stdio) { "server_name": "google_calendar_stdio", "command": "mcp-server-google-calendar", "args": [] }

    • SSE 模式配置(示例名称:google_calendar_sse) { "server_name": "google_calendar_sse", "command": "mcp-server-google-calendar-sse", "args": [] }

    注:MCP 客户端配置仅用于描述如何启动服务器以便客户端能够连接与通信,具体需要的字段包括 server_name、command、args 等。不同客户端可能会有略微差异,此处以仓库提供的启动方式为准。

  • 基本使用方法

    • 通过客户端请求工具:
      • 使用 get-events、list-calendars 等工具查询日历数据,工具返回格式通常是 JSON 字符串,便于模型理解与后续处理。
    • 通过智能体对话使用场景:
      • 例如询问“列出我的日历中的下周事件”或“在工作日创建一个团队会议”,模型将调用相应工具并获取结构化结果,进一步生成应答。
    • 认证与授权
      • 第一次运行需要完成 Google OAuth 授权,后续运行会重用保存的 token.json。
    • 兼容性与错误处理
      • 服务器内置了时区解析、时间格式修正以及简单的错误处理逻辑,若外部 API 调用失败会返回友好信息。

服务器信息