日历操作网关服务

一个基于Google Calendar的安全日历操作网关服务,用于在决策系统与真实世界操作之间建立信任边界。

  • by gautamsapre
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 gautamsapre/calendar-mcp-gateway

使用说明

日历mcp网关

一个功能网关,用于安全执行由谷歌日历支持的日历操作。

该项目实现了一个日历集成服务,可以列出和创建会议(使用Google Meet会议),同时在决策系统和实际操作之间引入明确的信任边界。

目标是演示生产系统在与有状态的外部服务交互时应如何处理非确定性调用者(如助手或语言模型)。


为什么存在

现代助手可以推理用户意图并决定应该采取什么行动:

“明天安排一次会议” “取消我的早会” “下午3点后移动所有东西”

然而,语言解释本质上是模棱两可的。 日历、支付系统或数据库等外部系统则不是。

将解释的意图直接映射到实际操作可能会导致:

  • 意外数据修改
  • 破坏性操作
  • 用户信任失败
  • 不可逆状态变化

该项目分为:

决定 (应该发生什么) 从 执行 (允许发生什么)

日历服务充当一个受控的执行层,可以安全地验证和执行操作。


建筑

Caller (assistant / AI / UI)
          ↓
Calendar Gateway (this project)
          ↓
Google Calendar API
          ↓
User Calendar

网关是一个确定性系统。

它负责:

  • 验证操作
  • 结构化输入
  • 控制权限
  • 对外部API执行操作

不信任调用者直接执行操作。


特性

  • OAuth与谷歌日历的集成
  • 列出即将举行的活动
  • 使用Google Meet会议创建会议
  • 通过刷新令牌进行持久身份验证
  • 集成逻辑和调用者逻辑之间的明确分离

本地设置

1.克隆

git clone <your-repo-url>
cd calendar-mcp-gateway

2.Python环境

python3 -m venv .venv
source .venv/bin/activate
pip install -U pip
pip install -e .

谷歌云设置

  1. 在Google Cloud Console中创建项目

  2. 启用 谷歌日历API

  3. 配置OAuth同意屏幕

    • 用户类型:外部
    • 发布状态:测试
    • 将您的电子邮件添加为测试用户
  4. 创建OAuth客户端ID

    • 类型:桌面应用
  5. 下载JSON凭据

将文件放置在repo根目录中:

credentials.json

不要提交此文件。


验证日历访问权限

这将检查身份验证和读取权限。

python scripts/verify_calendar_access.py

系统将提示您登录一次。 授权后a token.json 文件将在本地创建。

后续运行不需要登录。


使用Google Meet创建会议

python scripts/create_meet_meeting.py

脚本将:

  • 创建日历事件
  • 附加Google Meet链接
  • 打印会议URL

您应该会在日历中看到一个新会议。


安全说明

  • credentials.json 和 token.json 决不能承诺
  • 令牌允许日历访问,应被视为机密
  • 网关代表经过身份验证的用户执行操作

为什么使用网关而不是直接API调用?

外部API假定调用者是正确的软件。

语言驱动的系统不是确定性的。 它们解释用户意图。

网关允许:

  • 验证
  • 确认工作流
  • 审计日志
  • 安全检查

如果没有执行边界,助手可能会执行意外的破坏性操作。

此存储库建立了稍后将由功能接口保护的执行层。


后续步骤

计划增加:

  • 取消工作流
  • 许可操作
  • 审计日志
  • MCP能力接口

这个项目展示了什么

这个存储库主要不是关于谷歌日历的。

它展示了一种模式:

真实的系统不应该允许决策组件直接改变外部状态。

相反,行动应该通过一个受控的能力层。

当将助手、代理或其他概率系统集成到实际应用程序中时,这种模式变得至关重要。