mcpField
G
Google Calendar MCP

Google Calendar MCP

本地服务
github.com生产力04 周前更新

关于 Google Calendar MCP

Google Calendar MCP 让 AI 应用通过自然语言查看和管理 Google 日历,包括会议、循环事件、空闲时间及特殊日程。它区分整个循环系列与单次事件,并默认不向受邀者发送邮件。

主要功能

  1. 01查看日历、事件与空闲时间
  2. 02创建和编辑会议及循环事件
  3. 03管理循环系列的单次事件
  4. 04创建 Out of Office 和 Focus Time
  5. 05管理邀请与 Google Meet 链接

适用场景

  1. 01查看一周日程并找出重叠会议
  2. 02查找多人共同有空的时间
  3. 03安排带受邀者和 Meet 链接的会议
  4. 04取消单次循环事件而保留系列

MCP 相关

作为 MCP 服务,它向 MCP 客户端提供 Google Calendar 日历、事件和空闲时间的读取及管理工具。通过 Google Calendar API 和 OAuth 访问账号,写入默认不会发送邀请邮件。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"a1-x-tech-mcp-google-calendar": {
"command": "npx",
"args": [
"-y",
"@a1-x-tech/mcp-google-calendar"
],
"env": {
"GOOGLE_CALENDAR_CLIENT_ID": "<GOOGLE_CALENDAR_CLIENT_ID>",
"GOOGLE_CALENDAR_CLIENT_SECRET": "<GOOGLE_CALENDAR_CLIENT_SECRET>",
"GOOGLE_CALENDAR_REFRESH_TOKEN": "<GOOGLE_CALENDAR_REFRESH_TOKEN>",
"GOOGLE_CALENDAR_ACCESS_TOKEN": "<GOOGLE_CALENDAR_ACCESS_TOKEN>",
"GOOGLE_CALENDAR_OAUTH_PORT": "<GOOGLE_CALENDAR_OAUTH_PORT>",
"GOOGLE_CALENDAR_API_BASE": "<GOOGLE_CALENDAR_API_BASE>",
"GOOGLE_CALENDAR_TIMEOUT_MS": "<GOOGLE_CALENDAR_TIMEOUT_MS>",
"GOOGLE_CALENDAR_MAX_RETRIES": "<GOOGLE_CALENDAR_MAX_RETRIES>"
}
}
}
}
启动命令npx -y @a1-x-tech/mcp-google-calendar
需要配置的环境变量
GOOGLE_CALENDAR_CLIENT_IDGoogle OAuth2 client id (refresh-token flow).
GOOGLE_CALENDAR_CLIENT_SECRET密钥Google OAuth2 client secret (refresh-token flow). Treat it as a secret.
GOOGLE_CALENDAR_REFRESH_TOKEN密钥Google OAuth2 refresh token, exchanged for access tokens automatically. Treat it as a secret.
GOOGLE_CALENDAR_ACCESS_TOKEN密钥Static OAuth2 access token (~1h lifetime) — alternative to the refresh-token trio, mostly for testing.
GOOGLE_CALENDAR_OAUTH_PORT密钥Fixed port for the loopback listener of the in-chat login (127.0.0.1 + PKCE). Set it when the client runs over SSH port forwarding; otherwise a free port is picked per login.
GOOGLE_CALENDAR_API_BASEAPI root override.
GOOGLE_CALENDAR_TIMEOUT_MSPer-request timeout in milliseconds.
GOOGLE_CALENDAR_MAX_RETRIESRetries on transient errors (429 always; 5xx/network for reads).

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@a1-x-tech/mcp-google-calendar1.0.0

工具

19

收录的工具列表 · 更新于 2 周前

此工具无需参数。

详细介绍

A1 Google Calendar MCP

简体中文 | Русский

npm Glama CI License: MIT

A1 Google Calendar MCP 让 AI 应用能够通过自然语言管理 Google Calendar。查看本周安排、与来宾一起安排会议并添加 Google Meet 链接、改期或取消会议、查找所有人都有空的时段,以及设置外出办公或专注时间。

它通过你的 Google 账号使用 Google Calendar API。它能够区分整个重复系列和单次日程,并明确说明 Calendar API 的限制,而不会暗示所有日历任务都能完成。

  • 19 个工具。 查看日历、活动和空闲/忙碌状态,创建和编辑活动,展开重复系列,以及设置外出办公和专注时间——另有 6 个工具用于连接 Google 账号。
  • 直接从聊天中登录。 无需手动编写凭据文件:让助手连接账号,在浏览器中批准访问,下一条请求即可生效——无需重启。客户端密钥以文件路径形式传递,绝不会经过对话。
  • 绝不会意外给任何人发邮件。 Calendar API 默认不会发送邀请、变更和取消通知;只有通过 send_updates 明确要求时,才会给来宾发送邮件。
  • 绝不重放写入操作。 出现无法确定结果的故障后,服务不会重试写入操作——重复的活动可能会再次给每位来宾发送邮件。
  • 仅请求必要的 Google 权限范围。 使用 calendar.events 和 calendar.readonly,不使用权限范围更广的 calendar。

先从一个只读问题开始:

这周我的日历上有什么安排?指出有哪些会议时间重叠。

连接服务 · 探索使用场景 · 查看技术文档


一分钟了解它的工作方式

你: 我周四的安排是什么?我和 Anna 什么时候都有空?

助手: 显示周四的活动以及你们都有空的时段。不会做出任何更改。

你: 在第一个双方都有空的时段,安排一场 45 分钟的设计评审,并添加 Google Meet 链接。

助手: 显示拟定的时间、来宾名单和 Meet 链接,然后在创建活动前请求确认。

你: 确认。

助手: 创建活动。除非你要求发送邀请,否则不会有人收到邮件。

目录

快速开始

你需要 Node.js 20+、一个 Google 账号,以及来自已启用 Google Calendar API 的 Google Cloud 项目的 OAuth 凭据。

  1. 准备 Google OAuth 访问权限。
  2. 将服务添加到你的 AI 应用。
  3. 提出上面的只读问题。
Codex

**在应用中:**打开 Settings → MCP servers,选择 Add server,选择 STDIO,输入命令 npx -y @a1-x-tech/mcp-google-calendar@latest 和环境变量 GOOGLE_CALENDAR_CLIENT_ID、GOOGLE_CALENDAR_CLIENT_SECRET、GOOGLE_CALENDAR_REFRESH_TOKEN,然后选择 Save 和 Restart。

在命令行中:

codex mcp add google-calendar \
  --env GOOGLE_CALENDAR_CLIENT_ID=your_client_id \
  --env GOOGLE_CALENDAR_CLIENT_SECRET=your_client_secret \
  --env GOOGLE_CALENDAR_REFRESH_TOKEN=your_refresh_token \
  -- npx -y @a1-x-tech/mcp-google-calendar@latest
codex mcp list

Codex MCP 文档

Claude Code
claude mcp add \
  --env GOOGLE_CALENDAR_CLIENT_ID=your_client_id \
  --env GOOGLE_CALENDAR_CLIENT_SECRET=your_client_secret \
  --env GOOGLE_CALENDAR_REFRESH_TOKEN=your_refresh_token \
  --transport stdio --scope user google-calendar \
  -- npx -y @a1-x-tech/mcp-google-calendar@latest
claude mcp list

Claude Code MCP 文档

Claude Desktop

当前官方路径是 Settings → Extensions。要安装自定义桌面扩展,请打开 Advanced settings → Extension Developer → Install Extension…,选择 .mcpb 文件并按提示操作。

此仓库目前发布的是 npm stdio 包,不包含 .mcpb 安装包。对于仍支持本地配置的 Claude Desktop 版本,可使用以下 JSON stdio 配置作为备用方案:

{
  "mcpServers": {
    "google-calendar": {
      "command": "npx",
      "args": ["-y", "@a1-x-tech/mcp-google-calendar@latest"],
      "env": {
        "GOOGLE_CALENDAR_CLIENT_ID": "your_client_id",
        "GOOGLE_CALENDAR_CLIENT_SECRET": "your_client_secret",
        "GOOGLE_CALENDAR_REFRESH_TOKEN": "your_refresh_token"
      }
    }
  }
}

在这些版本中,macOS 上将其保存到 ~/Library/Application Support/Claude/claude_desktop_config.json,或在 Windows 上保存到 %APPDATA%\Claude\claude_desktop_config.json。

Claude Desktop MCP 文档

Cursor

在 macOS/Linux 上将以下内容添加到 ~/.cursor/mcp.json,或在 Windows 上添加到 %USERPROFILE%\.cursor\mcp.json:

{
  "mcpServers": {
    "google-calendar": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@a1-x-tech/mcp-google-calendar@latest"],
      "env": {
        "GOOGLE_CALENDAR_CLIENT_ID": "your_client_id",
        "GOOGLE_CALENDAR_CLIENT_SECRET": "your_client_secret",
        "GOOGLE_CALENDAR_REFRESH_TOKEN": "your_refresh_token"
      }
    }
  }
}

Cursor MCP 文档

VS Code

运行 MCP: Open User Configuration 并添加:

{
  "servers": {
    "google-calendar": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@a1-x-tech/mcp-google-calendar@latest"],
      "env": {
        "GOOGLE_CALENDAR_CLIENT_ID": "${input:calendar_client_id}",
        "GOOGLE_CALENDAR_CLIENT_SECRET": "${input:calendar_client_secret}",
        "GOOGLE_CALENDAR_REFRESH_TOKEN": "${input:calendar_refresh_token}"
      }
    }
  },
  "inputs": [
    { "type": "promptString", "id": "calendar_client_id", "description": "Google OAuth client ID" },
    { "type": "promptString", "id": "calendar_client_secret", "description": "Google OAuth client secret", "password": true },
    { "type": "promptString", "id": "calendar_refresh_token", "description": "Google OAuth refresh token", "password": true }
  ]
}

使用 MCP: List Servers 检查配置。

VS Code MCP 文档

你可以让它做什么

查看日程
  • 我这周有哪些会议?包括周期性会议。
  • 显示我明天的一对一会议,以及参会者、Meet 链接和提醒。
  • 列出 3 月团队同步会议的所有场次。
安排和更改会议
  • 在周四创建一个 45 分钟的评审会议,邀请两位参会者并添加 Google Meet 链接。
  • 将复盘会议改期到一小时后,并更新参会者名单——但先不要给任何人发邮件。
  • 将规划活动移到团队日历。
  • 取消周五的站会,但保留系列中的其他场次。
保护你的时间
  • 下周 Anna、Boris 和我什么时候都有一小时空闲?
  • 为我的假期设置“外出办公”,并自动拒绝新的邀请。
  • 明天上午创建两小时的专注时间,并将 Google Chat 设为静音。

事件变更方式

  1. calendar_id: "primary" 是你的主日历;其他日历可通过 list_calendars 获取,写入需要拥有写入权限。
  2. 循环系列和单个实例的 ID 不同:系列 ID 会更改或取消所有实例,而实例 ID(来自 list_event_instances)只更改或取消一个实例。
  3. update_event 只更改你提供的字段,但嵌套对象会整体替换原对象——新的 attendees 列表会替换整个访客列表。
  4. 只有 send_updates 指定发送时,写入操作才会向任何人发送邮件——Calendar API 默认不发送邮件。

外出办公和专注时间块只存在于 Google Workspace 账号的主日历中;个人 Gmail 账号和辅助日历会拒绝这些操作。创建事件不会检查冲突——请先请求空闲/忙碌状态检查。全天事件的结束日期为不包含在内的日期:持续到星期五的事件会在星期六的日期结束。

可以进行的变更

操作结果确认边界
读取日历、事件和空闲/忙碌状态读取日程数据;空闲/忙碌状态会显示忙碌时段,但不显示标题不会更改
创建事件添加定时、全天或循环事件,可选添加访客和 Google Meet更改日历
创建外出办公或专注时间块添加特殊事件,可自动拒绝邀请或让 Google Chat 静音更改日历
更新事件重新安排或编辑事件;系列 ID 会编辑所有实例更改日历
移动事件将事件迁移到另一个日历更改两个日历
删除事件取消事件或整个系列;无法撤销删除破坏性操作
原始 API 请求可调用没有专用工具的 API 方法可能具有破坏性

AI 客户端控制确认提示。服务会标记读取、写入和破坏性工具,以便客户端区分查看操作和实际变更。

获取访问权限

访问你自己的日历需要 OAuth 2.0;API 密钥并不足够。有两种连接方式,第一种完全不需要配置文件。

从聊天中登录

不提供凭据启动服务,然后让助手连接。它会通过六个内置工具引导你完成操作:

工具功能
setup_instructionsGoogle Cloud 端的分步检查清单,会根据当前配置情况进行调整
set_client读取你下载的 OAuth 客户端 JSON——通过文件路径读取,因此机密不会经过聊天传递
start_login返回 Google 授权链接,并等待浏览器操作
finish_login确认登录,并报告已连接的账号
auth_status显示是否已登录、登录来源和过期时间——绝不会显示令牌本身
logout在 Google 撤销令牌并删除本地文件

登录会立即生效:下一次工具调用即可使用,无需重启 AI 客户端。令牌存储在 ~/.config/mcp-google-calendar/credentials.json 中(Windows 系统下位于 %APPDATA%),只有你的账号可以读取,并且绝不会离开你的计算机。

或配置环境变量

经典方式,也是 CI 和无头安装应采用的方式:

  1. 创建或选择一个 Google Cloud 项目,并启用 Google Calendar API。

  2. 配置 OAuth 同意屏幕,并创建一个 Desktop app OAuth 客户端。

  3. 授权要管理其日历的 Google 账号。启用 Use your own OAuth credentials 后,可使用 OAuth 2.0 Playground 获取刷新令牌。

  4. 请求以下两个范围:

    https://www.googleapis.com/auth/calendar.events
    https://www.googleapis.com/auth/calendar.readonly
    

    仅当 raw_request 调用需要自行管理日历或共享规则时,才需要较宽泛的 https://www.googleapis.com/auth/calendar 范围。

环境变量始终优先于在聊天中进行的登录,因此已配置的安装会保持原有行为。

测试模式下的 OAuth 刷新令牌可能会在七天后过期。需要长期访问时,请发布 OAuth 应用,或在 Workspace 域中使用 Internal 应用。请将客户端密钥和刷新令牌视为密码。

配置

变量必需说明
GOOGLE_CALENDAR_CLIENT_ID是*OAuth 客户端 ID。
GOOGLE_CALENDAR_CLIENT_SECRET是*OAuth 客户端密钥。
GOOGLE_CALENDAR_REFRESH_TOKEN是*OAuth 刷新令牌。
GOOGLE_CALENDAR_ACCESS_TOKEN是*OAuth 三项凭据的短期(约 1 小时)替代方案。
GOOGLE_CALENDAR_API_BASE否Google API 基础 URL 覆盖值;默认值为 https://www.googleapis.com。
GOOGLE_CALENDAR_TIMEOUT_MS否单次请求超时时间;默认值为 60000 毫秒。
GOOGLE_CALENDAR_MAX_RETRIES否临时错误的重试次数;默认值为 3。

* 提供 OAuth 三项凭据或访问令牌即可。没有凭据时,服务仍会启动并完成 MCP 握手;首次调用工具时会列出需要设置的确切变量。

数据、限制与后台工作

  • 请求会发送至 Google Calendar。 本地服务会刷新 Google OAuth 令牌并调用 Calendar API。其匿名遥测信息包括安装 ID、软件包版本、AI 客户端和平台版本以及工具名称,不包括 OAuth 令牌、日历数据、工具参数或提示词。设置 ASKADS_TELEMETRY=0 即可选择退出。
  • Google 会对每个项目实施配额限制。 遇到 429 时,服务会采用退避策略重试;读取操作在网络错误和 5xx 错误后也会重试,而写入操作在结果不确定的失败后不会重放——重复事件可能会再次向每位受邀者发送邮件。
  • 没有后台轮询。 服务仅在被调用时运行。list_events 支持通过 updated_min 进行增量检查;如果你的 AI 应用支持计划任务,可以定期检查日历。

技术文档

支持

发现错误或需要某个使用场景?创建 issue 或在 Telegram 上留言。


两只 Mona 击掌

你已经读到最后了!

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。