📆 4lmanac
Google Calendar MCP服务器具有完整的日历管理功能,允许您创建、更新和删除事件,超越了ChatGPT官方提供的只读集成。
支持的MCP工具🧰
谷歌日历MCP服务器目前公开了以下工具:
list_events--在所需的时间窗口中列出事件。search_events--在所需的时间窗口内通过文本查询搜索事件。create_event--创建定时或全天活动。update_event--更新定时或全天事件。delete_event--删除事件。find_availability--聚合繁忙窗口并建议可用插槽。
客户端兼容性🤝
- 您应该能够连接到任何支持OAuth身份验证的MCP兼容提供程序。
- 自定义MCP连接 ChatGPT 在某种程度上受到安全策略的限制,并且在web应用程序之外无法持续工作。这些是ChatGPT自身的局限性,而不是这个项目的问题。
- 自2026年2月下旬以来, 克劳德 本机包含此集成。现在,我将保留简短的设置说明,用于将Claude连接到此MCP,以防集成行为发生变化。
部署要求🚀
- 启用谷歌日历API的谷歌云项目(无需计费,设置如下所述)。
- 有效的HTTPS域。
- 使用PHP 8.5+的Web服务器。
- 如果你熟悉Docker,你可以使用 compose.yml 此存储库中提供的(基于 弗兰肯斯塔克 通过调整配置以满足您的需求。
设置🛠️
1.谷歌云先决条件
- 创建Google Cloud项目并启用 谷歌日历API.
- 在下面配置OAuth同意屏幕 谷歌认证平台 (品牌/受众/数据访问):
- 观众:设置为 External (Internal 需要谷歌工作区,但也可以工作)。 - 将您的Google帐户添加为测试用户,并将应用程序保持在测试模式。 - 添加您的域名(例如。 your-domain.com)在授权域下。 - 添加以下范围: - openid - https://www.googleapis.com/auth/userinfo.email - https://www.googleapis.com/auth/userinfo.profile - https://www.googleapis.com/auth/calendar
2.为MCP服务器Bootstrap创建OAuth客户端
此客户端用于一次性令牌引导流,以在Google日历中进行身份验证。
- 首选 谷歌认证平台>客户端>创建客户端.
- 应用程序类型: Web应用程序.
- 名称:例如。
mcp-calendar-bootstrap. - 授权重定向URI:
https://your-domain.com/oauth/google/bootstrap/callback - 保存并复制
client_id和client_secret.
将这些添加到您的 .env:
GOOGLE_OAUTH_CLIENT_ID=your-client-id
GOOGLE_OAUTH_CLIENT_SECRET=your-client-secret
GOOGLE_OAUTH_REDIRECT_URI=https://your-domain.com/oauth/google/bootstrap/callback(可选)覆盖集成使用的日历(默认为 primary):
GOOGLE_CALENDAR_DEFAULT_ID=primary3.为MCP客户端创建OAuth客户端
为每个MCP客户端(ChatGPT、Claude或两者)创建单独的OAuth客户端。
- 首选 谷歌认证平台>客户端>创建客户端.
- 应用程序类型: Web应用程序.
- 为每个客户端设置授权重定向URI:
ChatGPT (例如。 mcp-chatgpt-auth):
- https://chatgpt.com/connector_platform_oauth_redirect - https://platform.openai.com/apps-manage/oauth
克劳德 (例如。 mcp-claude-auth):
- https://claude.ai/api/mcp/auth_callback - https://claude.com/api/mcp/auth_callback
- 保存并复制每个客户的
client_id和client_secret--连接MCP客户端时需要它们。
将客户端ID列入白名单 .env (逗号分隔):
GOOGLE_OAUTH_ALLOWED_AUDIENCES=your-claude-client-id,your-chatgpt-client-id4.MCP服务器的Bootstrap身份验证令牌(一次性)
- 运行bootstrap命令:
php artisan app:google-calendar:bootstrap- 打开打印的URL,使用您的Google帐户登录,然后授予访问权限。
- 成功后,应用程序将令牌数据存储在
storage/app/mcp/google-calendar-tokens.json.
随时检查令牌状态:
php artisan app:google-calendar:token:status5.连接MCP客户端
使用步骤3中的OAuth凭据在您选择的客户端中添加MCP服务器。
ChatGPT
- 首选 设置>应用程序>创建应用程序 (需要在高级设置中启用“开发人员模式”)并输入服务器URL(例如。
https://your-domain.com/mcp)OAuth客户端ID和密钥。 - 在提示时完成Google OAuth同意流程。您可能需要明确单击应用程序页面上的“连接”按钮才能继续。
- 尝试一个简单的提示,如 _“明天上午10点将理发添加到我的日历中”_ 以验证连接。
克劳德:
- 首选 设置>连接器>添加custrom连接器 并输入服务器URL(例如。
https://your-domain.com/mcp)以及(在“高级设置”下)OAuth客户端ID和密钥。 - 在提示时完成Google OAuth同意流程。您可能需要明确单击连接器页面上的“连接”按钮才能继续。
- 尝试一个简单的提示,如 _“明天上午10点将理发添加到我的日历中”_ 以验证连接。
6.转入生产(推荐)
当在 测试 模式下,谷歌将在7天后过期刷新令牌,这意味着您需要每周重新引导。为了避免这种情况,请将您的应用发布到生产环境 未经核实:
- 首选 谷歌认证平台>受众.
- 在...之下 发布状态,单击 发布应用程序 并确认。
- 您的应用程序现在正在生产中。由于它使用敏感范围,谷歌将在同意期间显示“未经验证的应用程序”警告——这是意料之中的,只影响引导流(不影响MCP客户端)。
- 从步骤4重新运行引导流,以获得一个不过期的刷新令牌。
注: 只有当您的应用程序为第三方用户服务时,才需要进行验证。对于个人使用,无需验证即可发布。
秘密轮换🔄
- 在Google Cloud Console中旋转OAuth客户端密钥。
- 更新相应
.env价值观。 - 重新运行引导流以获取新的刷新令牌。
