🔔 版本更新通知 🔔
版本 1.0.5 添加了对通过createEvent和updateEvent工具中的recurrence参数支持重复事件的功能。这允许您直接创建和修改重复事件,而无需在创建后手动设置它们。
Google Calendar MCP 服务器是一个实现了 MCP(模型上下文协议)的服务器,使 Google 日历与 Claude 桌面之间的集成成为可能。此项目使 Claude 能够与用户的 Google 日历进行交互,通过自然语言交互来显示、创建、更新和删除日历事件。
colorId 参数设置和更新事件颜色该项目使用:
@modelcontextprotocol/sdk 与 Claude 桌面集成googleapis 访问 Google 日历 API@hono/oauth-providers 实现 PKCE 启用的 OAuth2 流程此 MCP 服务器提供了以下工具以与 Google 日历进行交互:
检索具有各种过滤选项的日历事件。
参数:
calendarId(可选):日历 ID(如果省略、为空字符串、null 或 undefined,则使用主要日历)timeMin(可选):事件检索的开始时间(ISO 8601 格式,例如 "2025-03-01T00:00:00Z")。空字符串、null 或 undefined 值将被忽略timeMax(可选):事件检索的结束时间(ISO 8601 格式)。空字符串、null 或 undefined 值将被忽略maxResults(可选):要检索的最大事件数(默认值:10)orderBy(可选):排序顺序("startTime" 或 "updated")。如果为空字符串、null 或 undefined,默认为 "startTime"创建新的日历事件。
参数:
calendarId(可选):日历 ID(如果省略,则使用主要日历)event:包含事件详情的对象:
summary(必需):事件标题description(可选):事件描述location(可选):事件地点start:开始时间对象,包含:
dateTime(可选):ISO 8601 格式(例如 "2025-03-15T09:00:00+09:00")date(可选):全天事件的 YYYY-MM-DD 格式timeZone(可选):时区(例如 "Asia/Tokyo")end:结束时间对象(与开始时间相同格式)attendees(可选):包含电子邮件和可选显示名称的参与者数组colorId(可选):事件颜色 ID(1-11)recurrence(可选):RFC5545 格式的重复规则数组(例如 ["RRULE:FREQ=WEEKLY;BYDAY=MO,WE,FR"])更新现有的日历事件。该函数首先获取现有事件数据,并将其与更新数据合并,保留未包含在更新请求中的字段。
参数:
calendarId(可选):日历 ID(如果省略,则使用主要日历)eventId(必需):要更新的事件 IDevent:包含要更新字段的事件详情对象(与 createEvent 相同结构,所有字段都是可选的)
recurrence 参数以修改重复事件模式删除日历事件。
参数:
calendarId(可选):日历 ID(如果省略,则使用主要日历)eventId(必需):要删除的事件 ID重新认证到 Google 日历。当您想在不重启 Claude 的情况下切换不同的 Google 账户时,这很有用。
参数:
在添加新功能、修改代码或修复错误时,请使用 npm version 命令按语义增加每个更改的版本。
同时,请确保您的编码清晰并遵循所有必要的编码规则,如面向对象编程。
当版本更新时,版本脚本会自动运行 npm install,但在提交之前仍需构建、运行 lint 并测试您的代码。
此包作为 @takumi0706/google-calendar-mcp 发布在 npm 上:
npx @takumi0706/google-calendar-mcp@1.0.7
# 创建一个包含您的 Google OAuth 凭据的 .env 文件
GOOGLE_CLIENT_ID=your_client_id
GOOGLE_CLIENT_SECRET=your_client_secret
GOOGLE_REDIRECT_URI=http://localhost:4153/oauth2callback
# 可选:令牌加密密钥(如果没有提供,将自动生成)
TOKEN_ENCRYPTION_KEY=32-byte-hex-key
# 可选:认证服务器端口和主机(默认端口:4153,主机:localhost)
AUTH_PORT=4153
AUTH_HOST=localhost
# 可选:MCP 服务器端口和主机(默认端口:3000,主机:localhost)
PORT=3000
HOST=localhost
# 可选:启用手动认证(在无法访问 localhost 的环境中非常有用)
USE_MANUAL_AUTH=true
将服务器添加到您的 claude_desktop_config.json 中。如果您在无法访问 localhost 的环境中运行,请将 USE_MANUAL_AUTH 环境变量设置为 "true"。
{
"mcpServers": {
"google-calendar": {
"command": "npx",
"args": [
"-y",
"@takumi0706/google-calendar-mcp"
],
"env": {
"GOOGLE_CLIENT_ID": "your_client_id",
"GOOGLE_CLIENT_SECRET": "your_client_secret",
"GOOGLE_REDIRECT_URI": "http://localhost:4153/oauth2callback"
}
}
}
}
更多细节,请参阅 SECURITY.md。
如果您遇到任何问题:
USE_MANUAL_AUTH=true 启用手动认证。这将允许您手动输入 Google 授权应用后显示的授权码。getEvents 工具时出现的 MCP 错误 -32602preprocessArgs 函数,跳过空值,使 Zod 模式默认值能正确应用createEvent 和 updateEvent 工具中的 recurrence 参数添加了对重复事件的支持authenticate 工具,允许在不重启 Claude 的情况下重新认证updateEvent 函数,在执行部分更新时保留现有事件数据getEvent 函数,用于在更新前获取现有事件数据updateEvent 以将更新数据与现有数据合并,以防止数据丢失updateEvent 函数的文档prompt: 'consent' 参数,强制 Google 显示同意屏幕并提供新的刷新令牌直接从 npm 安装:
npm install -g @takumi0706/google-calendar-mcp
用于开发或定制:
# 克隆仓库
git clone https://github.com/takumi0706/google-calendar-mcp.git
cd google-calendar-mcp
# 安装依赖项
npm install
# 构建项目
npm run build
# 运行服务器
npm start
对于生产用途,服务器需要有效的 Google OAuth 凭据。没有正确的凭据,服务器将无法启动,确保符合安全合规性。
要运行测试:
# 运行所有测试
npm test
# 运行带有覆盖率报告的测试
npm test -- --coverage
MIT