日历事件管理服务

提供Google日历事件的列表、创建、更新和管理功能,适用于会议安排、时间管理等场景。

  • by domdomegg
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 domdomegg/google-cal-mcp

使用说明

谷歌卡尔mcp

用于Google日历的MCP服务器-列出、创建、更新和管理日历事件。

用例

安排会议:“下周与Sarah建立30分钟同步”→ 找到一个空闲的插槽,创建带有“会面”链接的活动,并发送邀请。

回复邀请:“接受团队离开现场,但拒绝供应商演示”→ 自动响应待处理的邀请。

查找可用性“这个星期四下午我什么时候有空?”→ 查询您的日历并返回打开的插槽。

重新安排活动:“将我与亚历克斯的1:1时间调整到周五下午2点”→ 更新事件并通知与会者。

每日简报:“今天我的日历上有什么?”→ 列出所有事件,包括时间、地点和与会者。

块聚焦时间:“明天早上安排2小时进行深度工作”→ 创建日历事件以保护您的时间。

(这些只是示例-任何需要日历访问的工作流都可以使用此功能。)

设置

1.创建Google OAuth凭据

  1. 首选 谷歌云控制台
  2. 创建新项目(或使用现有项目)
  3. 启用Google日历API
  4. 首选 API和服务 → OAuth同意屏幕,设置同意屏幕
  5. 首选 API和服务 → 凭证 → 创建凭据 → OAuth 客户端ID
  6. 选择 网络应用程序
  7. 添加 http://localhost:3000/callback 到 授权重定向URI
  8. 记下您的客户端ID和客户端密码

2.运行服务器

GOOGLE_CLIENT_ID='your-client-id' \
GOOGLE_CLIENT_SECRET='your-client-secret' \
MCP_TRANSPORT=http \
npm start

服务器运行在 http://localhost:3000 默认情况下。更改为 PORT=3001.

3.添加到您的MCP客户端

服务器运行时,请按照上的说明进行操作 安装mcp,它为您的MCP客户端生成正确的配置(Claude Code、Claude Desktop、Cursor、Cline、VS Code等)。

建筑

此服务器充当 OAuth代理 谷歌:

graph LR
    A[MCP client] <--> B[google-cal-mcp] <--> C[Google OAuth/API]
  1. 服务器通过以下方式将自己宣传为OAuth授权服务器 /.well-known/oauth-authorization-server
  2. /register 返回Google OAuth客户端凭据
  3. /authorize 重定向到Google,将客户端的回调URL编码为状态
  4. /callback 从Google接收代码并转发给客户端的回调
  5. /token 向Google代理令牌请求,注入客户端凭据
  6. /mcp 处理MCP请求,使用承载令牌调用日历API

服务器不持有令牌或状态,它只是将OAuth代理给谷歌。

工具

工具 说明
日历
calendars_list 列出用户有权访问的所有日历
calendarlist_insert 订阅共享日历
calendarlist_update 更新日历设置(颜色、可见性、提醒)
calendarlist_delete 取消订阅日历
事件
events_list 使用搜索/筛选功能列出时间范围内的事件
event_get 获取特定事件的详细信息
event_create 创建一个包含与会者和“会议”链接的新活动
event_update 更新现有事件
event_delete 删除事件
event_respond 回复邀请(接受/拒绝/暂定)
event_move 将事件移动到其他日历
event_instances 获取重复事件的实例
可用性
freebusy_query 查找日程安排的空闲/繁忙时间
共享
acl_list 列出有权访问日历的人
颜色
colors_get 获取日历/活动的可用调色板

日历API范围

  • calendar -完全访问日历
  • calendar.events -读/写事件

贡献

GitHub上欢迎拉取请求!开始:

  1. 安装Git和Node.js
  2. 克隆仓库
  3. 安装依赖项 npm install
  4. 跑 npm run test 运行测试
  5. 建立 npm run build

发布

版本遵循 语义版本规范.

要发布:

  1. 使用 npm version <major | minor | patch> 升级版本
  2. 跑 git push --follow-tags 使用标签推送
  3. 等待GitHub Actions发布到NPM注册表。