Google日历MCP服务器

一个使用OAuth2承载令牌认证通过Dedalus MCP框架的Google日历MCP服务器,提供日历、事件、设置等管理功能。

  • by annyzhou
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 annyzhou/gcal-mcp

使用说明

gcal mcp

通过Dedalus MCP框架使用OAuth2承载令牌身份验证的Google Calendar MCP服务器。

工具

日历

  • gcal_list_calendars -列出用户可访问的所有日历
  • gcal_get_calendar -获取特定日历的详细信息
  • gcal_create_calendar -创建辅助日历
  • gcal_delete_calendar -删除辅助日历
  • gcal_clear_calendar -清除日历(删除所有事件)
  • gcal_patch_calendar -补丁日历元数据
  • gcal_update_calendar -更新日历元数据(完全替换)

日历列表

  • gcal_calendarlist_get -获取日历列表条目
  • gcal_calendarlist_insert -将现有日历插入用户的日历列表
  • gcal_calendarlist_delete -从用户的日历列表中删除日历
  • gcal_calendarlist_patch -修补日历列表条目
  • gcal_calendarlist_update -更新日历列表条目(完全替换)

事件

  • gcal_list_events -列出日历中的事件
  • gcal_get_event -按ID获取特定事件
  • gcal_search_events -按文本查询搜索事件
  • gcal_get_event_instances -获取重复事件的实例
  • gcal_create_event -创建事件
  • gcal_delete_event -删除事件
  • gcal_patch_event -修补事件(部分更新)
  • gcal_update_event -更新事件(完全替换)
  • gcal_quick_add_event -从文本字符串快速添加事件
  • gcal_move_event -将事件移动到另一个日历
  • gcal_import_event -导入事件(创建私有副本)

忙/闲

  • gcal_get_freebusy -查询日历的忙/闲信息

设置

  • gcal_get_settings -获取用户的日历设置
  • gcal_get_setting -获取特定的日历设置

颜色

  • gcal_get_colors -获取可用的日历和活动颜色

手表(Webhooks)

  • gcal_channels_stop -停止观看频道
  • gcal_events_watch -关注活动资源的变化
  • gcal_calendarlist_watch -关注CalendarList资源的更改
  • gcal_settings_watch -关注设置资源的更改

对于MCP用户

如果你想使用此部分 呼叫 通过Dedalus SDK从您自己的应用程序访问gcal-mcp服务器。

先决条件

  1. Dedalus API密钥(dsk-live-* 或 dsk-test-*)
  2. 这 dedalus-labs Python SDK: pip install dedalus-labs

快速开始

看 src/_client.py 对于完整的工作示例。

OAuth流

  1. 您的第一个请求提出 AuthenticationError 带着一个 connect_url
  2. 在浏览器中打开URL以授权Google日历访问
  3. 授权后,重试请求——凭据现在已存储
  4. 后续请求无需重新授权即可工作

面向MCP开发人员

如果你想使用此部分 构建、修改或部署 像这样的谷歌日历MCP服务器。

项目结构

src/
  main.py        # Entrypoint — loads .env and starts the server
  server.py      # MCPServer setup (port 8080, streamable HTTP)
  gcal.py        # All 29 Google Calendar tools + API connection
  _client.py     # Example client with OAuth browser flow

先决条件

  1. 谷歌云项目 随着 日历API 启用
  2. OAuth 2.0凭据 --在中创建“Web应用程序”客户端 谷歌云控制台 并下载客户端密钥JSON
  3. Dedalus API密钥 (dsk-live-* 或 dsk-test-*)
  4. 紫外线 包管理器

环境变量

复制 .env.example 并填写您的值:

cp .env.example .env

OAuth配置 (来自您的Google客户端机密JSON):

OAUTH_ENABLED=true
OAUTH_AUTHORIZE_URL=https://accounts.google.com/o/oauth2/auth
OAUTH_TOKEN_URL=https://oauth2.googleapis.com/token
OAUTH_CLIENT_ID=<your-client-id>.apps.googleusercontent.com
OAUTH_CLIENT_SECRET=GOCSPX-<your-secret>
OAUTH_SCOPES_AVAILABLE=https://www.googleapis.com/auth/calendar,https://www.googleapis.com/auth/calendar.events
OAUTH_BASE_URL=https://www.googleapis.com/calendar/v3

Dedalus平台:

DEDALUS_API_KEY=dsk-live-...
DEDALUS_API_URL=https://api.dedaluslabs.ai
DEDALUS_AS_URL=https://as.dedaluslabs.ai

添加新工具

  1. 在中定义异步函数 gcal.py 随着 @tool 装饰师:
  2. 将其添加到 gcal_tools 列表在底部 gcal.py

本地运行

cd gcal-mcp
uv sync
uv run python src/main.py

服务器启动于 端口8080 并暴露 /mcp 通过可流式传输的HTTP。

API 参考